packages feed

HaXml 1.23.3 → 1.24

raw patch · 8 files changed

+157/−167 lines, 8 filesdep ~polyparsePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: polyparse

API changes (from Hackage documentation)

- Text.XML.HaXml.Combinators: deep, multi, deepest :: CFilter i -> CFilter i
- Text.XML.HaXml.Combinators: elm, txt :: CFilter i
- Text.XML.HaXml.Html.Generate: hbr, hhr :: CFilter i
- Text.XML.HaXml.Html.Generate: html, margin, hspan, hdiv, hcol, hrow, htable, hbold, htt, hem, hcentre, hpre, hpara, h4, h3, h2, h1, hbody, htitle, hhead :: [CFilter i] -> CFilter i
- Text.XML.HaXml.Html.Generate: makehref, anchorname :: CFilter i -> [CFilter i] -> CFilter i
- Text.XML.HaXml.Html.Generate: showattr, ?, ! :: String -> CFilter i
- Text.XML.HaXml.Parse: instance Show CP
- Text.XML.HaXml.Parse: instance Show Modifier
- Text.XML.HaXml.ParseLazy: instance Show CP
- Text.XML.HaXml.ParseLazy: instance Show Modifier
- Text.XML.HaXml.Posn: newline, tab :: Posn -> Posn
- Text.XML.HaXml.Posn: posnLine, posnColumn :: Posn -> Int
- Text.XML.HaXml.Xtract.Combinators: children, txt, elm :: DFilter i
- Text.XML.HaXml.Xtract.Combinators: deep, multi, deepest :: DFilter i -> DFilter i
- Text.XML.HaXml.Xtract.Combinators: keep, none :: DFilter i
- Text.XML.HaXml.Xtract.Combinators: liftLocal, liftGlobal :: (CFilter i -> CFilter i) -> (DFilter i -> DFilter i)
- Text.XML.HaXml.Xtract.Combinators: local, global :: CFilter i -> DFilter i
- Text.XML.HaXml.Xtract.Combinators: with, without :: DFilter i -> DFilter i -> DFilter i
+ Text.XML.HaXml.Combinators: deep :: CFilter i -> CFilter i
+ Text.XML.HaXml.Combinators: deepest :: CFilter i -> CFilter i
+ Text.XML.HaXml.Combinators: elm :: CFilter i
+ Text.XML.HaXml.Combinators: multi :: CFilter i -> CFilter i
+ Text.XML.HaXml.Combinators: txt :: CFilter i
+ Text.XML.HaXml.Html.Generate: (!) :: String -> CFilter i
+ Text.XML.HaXml.Html.Generate: (?) :: String -> CFilter i
+ Text.XML.HaXml.Html.Generate: anchorname :: CFilter i -> [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: h1 :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: h2 :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: h3 :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: h4 :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hbody :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hbold :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hbr :: CFilter i
+ Text.XML.HaXml.Html.Generate: hcentre :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hcol :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hdiv :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hem :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hhead :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hhr :: CFilter i
+ Text.XML.HaXml.Html.Generate: hpara :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hpre :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hrow :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: hspan :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: htable :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: htitle :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: html :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: htt :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: makehref :: CFilter i -> [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: margin :: [CFilter i] -> CFilter i
+ Text.XML.HaXml.Html.Generate: showattr :: String -> CFilter i
+ Text.XML.HaXml.Posn: newline :: Posn -> Posn
+ Text.XML.HaXml.Posn: posnColumn :: Posn -> Int
+ Text.XML.HaXml.Posn: posnLine :: Posn -> Int
+ Text.XML.HaXml.Posn: tab :: Posn -> Posn
+ Text.XML.HaXml.Types: instance Show AttDef
+ Text.XML.HaXml.Types: instance Show AttListDecl
+ Text.XML.HaXml.Types: instance Show AttType
+ Text.XML.HaXml.Types: instance Show CP
+ Text.XML.HaXml.Types: instance Show ConditionalSect
+ Text.XML.HaXml.Types: instance Show ContentSpec
+ Text.XML.HaXml.Types: instance Show DefaultDecl
+ Text.XML.HaXml.Types: instance Show DocTypeDecl
+ Text.XML.HaXml.Types: instance Show ElementDecl
+ Text.XML.HaXml.Types: instance Show EncodingDecl
+ Text.XML.HaXml.Types: instance Show EntityDecl
+ Text.XML.HaXml.Types: instance Show EntityDef
+ Text.XML.HaXml.Types: instance Show EnumeratedType
+ Text.XML.HaXml.Types: instance Show ExtPE
+ Text.XML.HaXml.Types: instance Show ExtSubset
+ Text.XML.HaXml.Types: instance Show ExtSubsetDecl
+ Text.XML.HaXml.Types: instance Show FIXED
+ Text.XML.HaXml.Types: instance Show GEDecl
+ Text.XML.HaXml.Types: instance Show Ignore
+ Text.XML.HaXml.Types: instance Show IgnoreSectContents
+ Text.XML.HaXml.Types: instance Show MarkupDecl
+ Text.XML.HaXml.Types: instance Show Misc
+ Text.XML.HaXml.Types: instance Show Mixed
+ Text.XML.HaXml.Types: instance Show Modifier
+ Text.XML.HaXml.Types: instance Show NDataDecl
+ Text.XML.HaXml.Types: instance Show NotationDecl
+ Text.XML.HaXml.Types: instance Show PEDecl
+ Text.XML.HaXml.Types: instance Show Prolog
+ Text.XML.HaXml.Types: instance Show PublicID
+ Text.XML.HaXml.Types: instance Show TextDecl
+ Text.XML.HaXml.Types: instance Show TokenizedType
+ Text.XML.HaXml.Types: instance Show XMLDecl
+ Text.XML.HaXml.Types: instance Show i => Show (Content i)
+ Text.XML.HaXml.Types: instance Show i => Show (Document i)
+ Text.XML.HaXml.Types: instance Show i => Show (Element i)
+ Text.XML.HaXml.Types: instance Show i => Show (ExtParsedEnt i)
+ Text.XML.HaXml.Xtract.Combinators: children :: DFilter i
+ Text.XML.HaXml.Xtract.Combinators: deep :: DFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: deepest :: DFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: elm :: DFilter i
+ Text.XML.HaXml.Xtract.Combinators: global :: CFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: keep :: DFilter i
+ Text.XML.HaXml.Xtract.Combinators: liftGlobal :: (CFilter i -> CFilter i) -> (DFilter i -> DFilter i)
+ Text.XML.HaXml.Xtract.Combinators: liftLocal :: (CFilter i -> CFilter i) -> (DFilter i -> DFilter i)
+ Text.XML.HaXml.Xtract.Combinators: local :: CFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: multi :: DFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: none :: DFilter i
+ Text.XML.HaXml.Xtract.Combinators: txt :: DFilter i
+ Text.XML.HaXml.Xtract.Combinators: with :: DFilter i -> DFilter i -> DFilter i
+ Text.XML.HaXml.Xtract.Combinators: without :: DFilter i -> DFilter i -> DFilter i

Files

@@ -1,6 +1,6 @@ The HaXml library and tools were written by and are copyright to     (c) copyright 1998-1999    Malcolm Wallace and Colin Runciman-    (c) copyright 2000-2012    Malcolm Wallace+    (c) copyright 2000-2013    Malcolm Wallace  The HaXml library is licensed under the terms of the GNU Lesser General Public Licence (LGPL), which can be found in the file called
HaXml.cabal view
@@ -1,5 +1,5 @@ name:		HaXml-version:	1.23.3+version:	1.24 license:	LGPL license-file:	COPYRIGHT author:		Malcolm Wallace <Malcolm.Wallace@me.com>@@ -66,7 +66,7 @@     exposed-modules:         Text.XML.HaXml.Schema.Schema   hs-source-dirs: src-  build-depends: polyparse >= 1.5, filepath+  build-depends: polyparse >= 1.9, filepath   if flag(splitBase)     build-depends: base >= 3 && < 6, pretty, random, containers   else@@ -76,63 +76,63 @@   else     build-depends: base < 2 || >= 3, bytestring   extensions: CPP, ExistentialQuantification-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   nhc98-options: -K10M  Executable Canonicalise   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: Canonicalise.hs  Executable CanonicaliseLazy   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: CanonicaliseLazy.hs  Executable Xtract   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: Xtract.hs  Executable Validate   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: Validate.hs  Executable MkOneOf   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: MkOneOf.hs  Executable DtdToHaskell   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: DtdToHaskell.hs  Executable XsdToHaskell   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: XsdToHaskell.hs  Executable FpMLToHaskell   GHC-Options: -Wall   Extensions:  CPP   Hs-Source-Dirs: src/tools, src-  cpp-options: -DMAJOR=1 -DMINOR=23+  cpp-options: -DMAJOR=1 -DMINOR=24   Main-Is: FpMLToHaskell.hs   build-depends: directory 
src/Text/XML/HaXml/Html/Parse.hs view
@@ -223,7 +223,7 @@ cdsect :: HParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata+    bracket (tok (TokSection CDATAx)) (commit $ tok TokSectionClose) chardata  prolog :: HParser Prolog prolog = do@@ -252,7 +252,7 @@ versioninfo = do     (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) (tok TokQuote) freetext+    bracket (tok TokQuote) (commit $ tok TokQuote) freetext  misc :: HParser Misc misc = @@ -271,7 +271,7 @@     commit $ do       n <- qname       eid <- maybe externalid---    es <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)+--    es <- maybe (bracket (tok TokSqOpen) (commit $ tok TokSqClose)) (many markupdecl)       tok TokAnyClose  `onFail` failP "missing > in DOCTYPE decl" --    return (DTD n eid (case es of { Nothing -> []; Just e -> e }))       return (DTD n eid [])@@ -302,7 +302,7 @@     (word "standalone" `onFail` word "STANDALONE")     commit $ do       tok TokEqual `onFail` failP "missing = in 'standalone' decl"-      bracket (tok TokQuote) (tok TokQuote)+      bracket (tok TokQuote) (commit $ tok TokQuote)               ( (word "yes" >> return True) `onFail`                 (word "no" >> return False) `onFail`                 failP "'standalone' decl requires 'yes' or 'no' value" )@@ -334,7 +334,7 @@               return ([], Elem (N e) avs [])) `onFail`      --  ( do tok TokAnyClose	-- sequence <tag></tag>	(**not HTML?**)      --       debug (e++"[+")-     --       n <- bracket (tok TokEndOpen) (tok TokAnyClose) qname+     --       n <- bracket (tok TokEndOpen) (commit $ tok TokAnyClose) qname      --       debug "]"      --       if e == (map toLower n :: Name)       --         then return ([], Elem e avs [])      @@ -349,7 +349,7 @@          ( do tok TokAnyClose `onFail` failP "missing > or /> in element tag"               debug (e++"[")            -- zz <- many (content e)-           -- n <- bracket (tok TokEndOpen) (tok TokAnyClose) qname+           -- n <- bracket (tok TokEndOpen) (commit $ tok TokAnyClose) qname               zz <- manyFinally (content e)                                 (tok TokEndOpen)               (N n) <- qname@@ -575,12 +575,12 @@  entityref :: HParser EntityRef entityref = do-    n <- bracket (tok TokAmp) (tok TokSemi) name+    n <- bracket (tok TokAmp) (commit $ tok TokSemi) name     return n  charref :: HParser CharRef charref = do-    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+    bracket (tok TokAmp) (commit $ tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -668,7 +668,7 @@ encodingdecl = do     (word "encoding" `onFail` word "ENCODING")     tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    f <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (EncodingDecl f)  --notationdecl :: HParser NotationDecl@@ -688,7 +688,7 @@  --entityvalue :: HParser EntityValue --entityvalue = do---    evs <- bracket (tok TokQuote) (tok TokQuote) (many ev)+--    evs <- bracket (tok TokQuote) (commit $ tok TokQuote) (many ev) --    return (EntityValue evs)  --ev :: HParser EV@@ -699,7 +699,7 @@  attvalue :: HParser AttValue attvalue =-  ( do avs <- bracket (tok TokQuote) (tok TokQuote)+  ( do avs <- bracket (tok TokQuote) (commit $ tok TokQuote)                       (many (either freetext reference))        return (AttValue avs) ) `onFail`   ( do v <- nmtoken@@ -714,12 +714,12 @@  systemliteral :: HParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (SystemLiteral s)		-- note: need to fold &...; escapes  pubidliteral :: HParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (PubidLiteral s)		-- note: need to fold &...; escapes  chardata :: HParser CharData
src/Text/XML/HaXml/Html/ParseLazy.hs view
@@ -222,7 +222,7 @@ cdsect :: HParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata+    bracket (tok (TokSection CDATAx)) (commit $ tok TokSectionClose) chardata  prolog :: HParser Prolog prolog = do@@ -251,7 +251,7 @@ versioninfo = do     (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) (tok TokQuote) freetext+    bracket (tok TokQuote) (commit $ tok TokQuote) freetext  misc :: HParser Misc misc =@@ -270,7 +270,7 @@     commit $ do       n <- qname       eid <- maybe externalid---    es <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)) (many markupdecl)+--    es <- maybe (bracket (tok TokSqOpen) (commit $ tok TokSqClose)) (many markupdecl)       tok TokAnyClose  `onFail` failP "missing > in DOCTYPE decl" --    return (DTD n eid (case es of { Nothing -> []; Just e -> e }))       return (DTD n eid [])@@ -301,7 +301,7 @@     (word "standalone" `onFail` word "STANDALONE")     commit $ do       tok TokEqual `onFail` failP "missing = in 'standalone' decl"-      bracket (tok TokQuote) (tok TokQuote)+      bracket (tok TokQuote) (commit $ tok TokQuote)               ( (word "yes" >> return True) `onFail`                 (word "no" >> return False) `onFail`                 failP "'standalone' decl requires 'yes' or 'no' value" )@@ -333,7 +333,7 @@               return ([], Elem (N e) avs [])) `onFail`      --  ( do tok TokAnyClose	-- sequence <tag></tag>	(**not HTML?**)      --       debug (e++"[+")-     --       n <- bracket (tok TokEndOpen) (tok TokAnyClose) qname+     --       n <- bracket (tok TokEndOpen) (commit $ tok TokAnyClose) qname      --       debug "]"      --       if e == (map toLower n :: Name)      --         then return ([], Elem e avs [])@@ -514,12 +514,12 @@ --notationtype :: HParser NotationType --notationtype = do --    word "NOTATION"---    bracket (tok TokBraOpen) (tok TokBraClose)+--    bracket (tok TokBraOpen) (commit $ tok TokBraClose) --            (name `sepby1` (tok TokPipe)) -- --enumeration :: HParser Enumeration --enumeration =---    bracket (tok TokBraOpen) (tok TokBraClose)+--    bracket (tok TokBraOpen) (commit $ tok TokBraClose) --            (nmtoken `sepby1` (tok TokPipe)) -- --defaultdecl :: HParser DefaultDecl@@ -576,12 +576,12 @@  entityref :: HParser EntityRef entityref = do-    n <- bracket (tok TokAmp) (tok TokSemi) name+    n <- bracket (tok TokAmp) (commit $ tok TokSemi) name     return n  charref :: HParser CharRef charref = do-    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+    bracket (tok TokAmp) (commit $ tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -669,7 +669,7 @@ encodingdecl = do     (word "encoding" `onFail` word "ENCODING")     tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    f <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (EncodingDecl f)  --notationdecl :: HParser NotationDecl@@ -689,7 +689,7 @@  --entityvalue :: HParser EntityValue --entityvalue = do---    evs <- bracket (tok TokQuote) (tok TokQuote) (many ev)+--    evs <- bracket (tok TokQuote) (commit $ tok TokQuote) (many ev) --    return (EntityValue evs)  --ev :: HParser EV@@ -700,7 +700,7 @@  attvalue :: HParser AttValue attvalue =-  ( do avs <- bracket (tok TokQuote) (tok TokQuote)+  ( do avs <- bracket (tok TokQuote) (commit $ tok TokQuote)                       (many (either freetext reference))        return (AttValue avs) ) `onFail`   ( do v <- nmtoken@@ -715,12 +715,12 @@  systemliteral :: HParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (SystemLiteral s)		-- note: need to fold &...; escapes  pubidliteral :: HParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (PubidLiteral s)		-- note: need to fold &...; escapes  chardata :: HParser CharData
src/Text/XML/HaXml/Lex.hs view
@@ -159,6 +159,10 @@     | close `prefixes` (s:ss)  = emit (TokFreeText (reverse acc)) pos:                                  emit tok p:                                  skip (length close-1) (addcol 1 p) ss k+    | tok==TokSemi && length acc >= 8 -- special case for repairing broken &+                               = emit (TokFreeText "amp") pos:+                                 emit tok pos:+                                 k (addcol 1 pos) (reverse acc++s:ss)     | isSpace s  = textUntil close tok (s:acc) pos (white s p) ss k     | otherwise  = textUntil close tok (s:acc) pos (addcol 1 p) ss k 
src/Text/XML/HaXml/Parse.hs view
@@ -155,13 +155,6 @@  ---- Auxiliary Parsing Functions ---- --- | Parse a bracketed item, discarding the brackets AND NOT using adjustErrBad-myBracket :: PolyParse p => p bra -> p ket -> p a -> p a-myBracket open close p = do-    do { open    `adjustErr` ("Missing opening bracket:\n\t"++)-       ; p `discard` (close `adjustErr` ("Missing closing bracket:\n\t"++))-       }- -- | XParser is just a specialisation of the PolyState parser. type XParser a = Parser SymTabs (Posn,TokenT) a @@ -307,7 +300,7 @@ -- | Return an XML comment. comment :: XParser Comment comment = do-    myBracket (tok TokCommentOpen) (tok TokCommentClose) freetext+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext --  tok TokCommentOpen --  commit $ do --    c <- freetext@@ -327,7 +320,7 @@ cdsect :: XParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata+    bracket (tok (TokSection CDATAx)) (commit $ tok TokSectionClose) chardata  prolog :: XParser Prolog prolog = do@@ -358,7 +351,7 @@ versioninfo = do     (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) (tok TokQuote) freetext+    bracket (tok TokQuote) (commit $ tok TokQuote) freetext  misc :: XParser Misc misc =@@ -374,7 +367,7 @@     commit $ do       n   <- qname       eid <- maybe externalid-      es  <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)+      es  <- maybe (bracket (tok TokSqOpen) (commit $ tok TokSqClose)                             (many (peRef markupdecl)))       blank (tok TokAnyClose)  `onFail` failP "missing > in DOCTYPE decl"       return (DTD n eid (case es of { Nothing -> []; Just e -> e }))@@ -408,7 +401,7 @@     (word "standalone" `onFail` word "STANDALONE")     commit $ do       tok TokEqual `onFail` failP "missing = in 'standalone' decl"-      bracket (tok TokQuote) (tok TokQuote)+      bracket (tok TokQuote) (commit $ tok TokQuote)               ( (word "yes" >> return True) `onFail`                 (word "no" >> return False) `onFail`                 failP "'standalone' decl requires 'yes' or 'no' value" )@@ -425,7 +418,7 @@              ,  do tok TokAnyClose                    cs <- many content                    p  <- posn-                   m  <- bracket (tok TokEndOpen) (tok TokAnyClose) qname+                   m  <- bracket (tok TokEndOpen) (commit $ tok TokAnyClose) qname                    checkmatch p n m                    return (Elem n as cs))            ] `adjustErr` (("in element tag "++n++",\n")++)@@ -445,7 +438,7 @@                  manyFinally content                              (do p <- posn                                  m <- bracket (tok TokEndOpen)-                                              (tok TokAnyClose) qname+                                              (commit $ tok TokAnyClose) qname                                  checkmatch p n m)       ) `adjustErrBad` (("in element tag "++printableName n++",\n")++) @@ -515,7 +508,7 @@     blank (tok TokAnyClose) `onFail` failBadP        ("expected > terminating ELEMENT decl"        ++"\n    element name was "++show (printableName n)-       ++"\n    contentspec was "++(\ (ContentSpec p)-> show p) c)+       ++"\n    contentspec was "++(\ (ContentSpec p)-> debugShowCP p) c)     return (ElementDecl n c)  contentspec :: XParser ContentSpec@@ -530,29 +523,29 @@  choice :: XParser [CP] choice = do-    myBracket (tok TokBraOpen `debug` "Trying choice")-              (blank (tok TokBraClose `debug` "Succeeded with choice"))-              (peRef cp `sepBy1` blank (tok TokPipe))+    bracket (tok TokBraOpen `debug` "Trying choice")+            (blank (tok TokBraClose `debug` "Succeeded with choice"))+            (peRef cp `sepBy1` blank (tok TokPipe))  sequence :: XParser [CP] sequence = do- myBracket (tok TokBraOpen `debug` "Trying sequence")-           (blank (tok TokBraClose `debug` "Succeeded with sequence"))-           (peRef cp `sepBy1` blank (tok TokComma))+    bracket (tok TokBraOpen `debug` "Trying sequence")+            (blank (tok TokBraClose `debug` "Succeeded with sequence"))+            (peRef cp `sepBy1` blank (tok TokComma))  cp :: XParser CP cp = oneOf [ ( do n <- qname                   m <- modifier                   let c = TagName n m-                  return c `debug` ("ContentSpec: name "++show c))+                  return c `debug` ("ContentSpec: name "++debugShowCP c))            , ( do ss <- sequence                   m <- modifier                   let c = Seq ss m-                  return c `debug` ("ContentSpec: sequence "++show c))+                  return c `debug` ("ContentSpec: sequence "++debugShowCP c))            , ( do cs <- choice                   m <- modifier                   let c = Choice cs m-                  return c `debug` ("ContentSpec: choice "++show c))+                  return c `debug` ("ContentSpec: choice "++debugShowCP c))            ] `adjustErr` (++"\nwhen looking for a content particle")  modifier :: XParser Modifier@@ -563,17 +556,17 @@                  ]  -- just for debugging-instance Show CP where-    show (TagName n m) = printableName n++show m-    show (Choice cps m) = '(': concat (intersperse "|" (map show cps))-                          ++")"++show m-    show (Seq cps m) = '(': concat (intersperse "," (map show cps))-                          ++")"++show m-instance Show Modifier where-    show None = ""-    show Query = "?"-    show Star = "*"-    show Plus = "+"+debugShowCP :: CP -> String+debugShowCP cp = case cp of+    TagName n m  -> printableName n++debugShowModifier m+    Choice cps m -> '(': concat (intersperse "|" (map debugShowCP cps))++")"++debugShowModifier m+    Seq cps m    -> '(': concat (intersperse "," (map debugShowCP cps))++")"++debugShowModifier m+debugShowModifier :: Modifier -> String+debugShowModifier modifier = case modifier of+    None  -> ""+    Query -> "?"+    Star  -> "*"+    Plus  -> "+" ----  mixed :: XParser Mixed@@ -644,12 +637,12 @@ notationtype :: XParser NotationType notationtype = do     word "NOTATION"-    bracket (tok TokBraOpen) (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (commit $ blank $ tok TokBraClose)             (peRef name `sepBy1` peRef (tok TokPipe))  enumeration :: XParser Enumeration enumeration =-    bracket (tok TokBraOpen) (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (commit $ blank $ tok TokBraClose)             (peRef nmtoken `sepBy1` blank (peRef (tok TokPipe)))  defaultdecl :: XParser DefaultDecl@@ -716,7 +709,7 @@ -- | Return either a general entity reference, or a character reference. reference :: XParser Reference reference = do-    myBracket (tok TokAmp) (tok TokSemi) (freetext >>= val)+    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)   where     val ('#':'x':i) | all isHexDigit i                     = return . RefChar . fst . head . readHex $ i@@ -731,11 +724,11 @@  entityref :: XParser EntityRef entityref = do-    bracket (tok TokAmp) (tok TokSemi) name+    bracket (tok TokAmp) (commit $ tok TokSemi) name  charref :: XParser CharRef charref = do-    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+    bracket (tok TokAmp) (commit $ tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -744,7 +737,7 @@  pereference :: XParser PEReference pereference = do-    myBracket (tok TokPercent) (tok TokSemi) nmtoken+    bracket (tok TokPercent) (tok TokSemi) nmtoken  entitydecl :: XParser EntityDecl entitydecl =@@ -829,7 +822,7 @@ encodingdecl = do     (word "encoding" `onFail` word "ENCODING")     tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    f <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (EncodingDecl f)  notationdecl :: XParser NotationDecl@@ -849,7 +842,7 @@  entityvalue :: XParser EntityValue entityvalue = do- -- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))+ -- evs <- bracket (tok TokQuote) (commit $ tok TokQuote) (many (peRef ev))     tok TokQuote     pn <- posn     evs <- many ev@@ -874,18 +867,18 @@  attvalue :: XParser AttValue attvalue = do-    avs <- bracket (tok TokQuote) (tok TokQuote)+    avs <- bracket (tok TokQuote) (commit $ tok TokQuote)                    (many (either freetext reference))     return (AttValue avs)  systemliteral :: XParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (SystemLiteral s)            -- note: refs &...; not permitted  pubidliteral :: XParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (PubidLiteral s)             -- note: freetext is too liberal here  -- | Return parsed freetext (i.e. until the next markup)
src/Text/XML/HaXml/ParseLazy.hs view
@@ -159,14 +159,6 @@  ---- Auxiliary Parsing Functions ---- --- | Parse a bracketed item, discarding the brackets AND NOT using adjustErrBad-myBracket :: PolyParse p => p bra -> p ket -> p a -> p a-myBracket open close p = do-    do { open    `adjustErr` ("Missing opening bracket:\n\t"++)-       ; p `discard` (close `adjustErr` ("Missing closing bracket:\n\t"++))-       }-- -- | XParser is just a specialisation of the PolyStateLazy parser. type XParser a = Parser SymTabs (Posn,TokenT) a @@ -317,7 +309,7 @@ -- | Return an XML comment. comment :: XParser Comment comment = do-    myBracket (tok TokCommentOpen) (tok TokCommentClose) freetext+    bracket (tok TokCommentOpen) (tok TokCommentClose) freetext --  tok TokCommentOpen --  commit $ do --    c <- freetext@@ -337,7 +329,7 @@ cdsect :: XParser CDSect cdsect = do     tok TokSectionOpen-    bracket (tok (TokSection CDATAx)) (tok TokSectionClose) chardata+    bracket (tok (TokSection CDATAx)) (commit $ tok TokSectionClose) chardata  prolog :: XParser Prolog prolog = do@@ -369,7 +361,7 @@ versioninfo = do     (word "version" `onFail` word "VERSION")     tok TokEqual-    bracket (tok TokQuote) (tok TokQuote) freetext+    bracket (tok TokQuote) (commit $ tok TokQuote) freetext  misc :: XParser Misc misc =@@ -385,7 +377,7 @@     commit $ do       n   <- qname       eid <- maybe externalid-      es  <- maybe (bracket (tok TokSqOpen) (tok TokSqClose)+      es  <- maybe (bracket (tok TokSqOpen) (commit $ tok TokSqClose)                             (many (peRef markupdecl)))       blank (tok TokAnyClose)  `onFail` failP "missing > in DOCTYPE decl"       return (DTD n eid (case es of { Nothing -> []; Just e -> e }))@@ -419,7 +411,7 @@     (word "standalone" `onFail` word "STANDALONE")     commit $ do       tok TokEqual `onFail` failP "missing = in 'standalone' decl"-      bracket (tok TokQuote) (tok TokQuote)+      bracket (tok TokQuote) (commit $ tok TokQuote)               ( (word "yes" >> return True) `onFail`                 (word "no" >> return False) `onFail`                 failP "'standalone' decl requires 'yes' or 'no' value" )@@ -436,7 +428,7 @@              ,  do tok TokAnyClose                    cs <- many content                    p  <- posn-                   m  <- bracket (tok TokEndOpen) (tok TokAnyClose) qname+                   m  <- bracket (tok TokEndOpen) (commit $ tok TokAnyClose) qname                    checkmatch p n m                    return (Elem n as cs))            ] `adjustErr` (("in element tag "++n++",\n")++)@@ -455,7 +447,7 @@              commit $ manyFinally content                                   (do p <- posn                                       m <- bracket (tok TokEndOpen)-                                                   (tok TokAnyClose) qname+                                                   (commit $ tok TokAnyClose) qname                                       checkmatch p n m)           ) `adjustErrBad` (("in element tag "++printableName n++",\n")++) @@ -525,7 +517,7 @@     blank (tok TokAnyClose) `onFail` failBadP        ("expected > terminating ELEMENT decl"        ++"\n    element name was "++show (printableName n)-       ++"\n    contentspec was "++(\ (ContentSpec p)-> show p) c)+       ++"\n    contentspec was "++(\ (ContentSpec p)-> debugShowCP p) c)     return (ElementDecl n c)  contentspec :: XParser ContentSpec@@ -540,29 +532,29 @@  choice :: XParser [CP] choice = do-    myBracket (tok TokBraOpen `debug` "Trying choice")-              (blank (tok TokBraClose `debug` "Succeeded with choice"))-              (peRef cp `sepBy1` blank (tok TokPipe))+    bracket (tok TokBraOpen `debug` "Trying choice")+            (blank (tok TokBraClose `debug` "Succeeded with choice"))+            (peRef cp `sepBy1` blank (tok TokPipe))  sequence :: XParser [CP] sequence = do- myBracket (tok TokBraOpen `debug` "Trying sequence")-           (blank (tok TokBraClose `debug` "Succeeded with sequence"))-           (peRef cp `sepBy1` blank (tok TokComma))+    bracket (tok TokBraOpen `debug` "Trying sequence")+            (blank (tok TokBraClose `debug` "Succeeded with sequence"))+            (peRef cp `sepBy1` blank (tok TokComma))  cp :: XParser CP cp = oneOf [ ( do n <- qname                   m <- modifier                   let c = TagName n m-                  return c `debug` ("ContentSpec: name "++show c))+                  return c `debug` ("ContentSpec: name "++debugShowCP c))            , ( do ss <- sequence                   m <- modifier                   let c = Seq ss m-                  return c `debug` ("ContentSpec: sequence "++show c))+                  return c `debug` ("ContentSpec: sequence "++debugShowCP c))            , ( do cs <- choice                   m <- modifier                   let c = Choice cs m-                  return c `debug` ("ContentSpec: choice "++show c))+                  return c `debug` ("ContentSpec: choice "++debugShowCP c))            ] `adjustErr` (++"\nwhen looking for a content particle")  modifier :: XParser Modifier@@ -573,17 +565,17 @@                  ]  -- just for debugging-instance Show CP where-    show (TagName n m) = printableName n++show m-    show (Choice cps m) = '(': concat (intersperse "|" (map show cps))-                          ++")"++show m-    show (Seq cps m) = '(': concat (intersperse "," (map show cps))-                          ++")"++show m-instance Show Modifier where-    show None = ""-    show Query = "?"-    show Star = "*"-    show Plus = "+"+debugShowCP :: CP -> String+debugShowCP cp = case cp of+    TagName n m  -> printableName n++debugShowModifier m+    Choice cps m -> '(': concat (intersperse "|" (map debugShowCP cps))++")"++debugShowModifier m+    Seq cps m    -> '(': concat (intersperse "," (map debugShowCP cps))++")"++debugShowModifier m+debugShowModifier :: Modifier -> String+debugShowModifier modifier = case modifier of+    None  -> ""+    Query -> "?"+    Star  -> "*"+    Plus  -> "+" ----  mixed :: XParser Mixed@@ -654,12 +646,12 @@ notationtype :: XParser NotationType notationtype = do     word "NOTATION"-    bracket (tok TokBraOpen) (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (commit $ blank $ tok TokBraClose)             (peRef name `sepBy1` peRef (tok TokPipe))  enumeration :: XParser Enumeration enumeration =-    bracket (tok TokBraOpen) (blank (tok TokBraClose))+    bracket (tok TokBraOpen) (commit $ blank $ tok TokBraClose)             (peRef nmtoken `sepBy1` blank (peRef (tok TokPipe)))  defaultdecl :: XParser DefaultDecl@@ -726,7 +718,7 @@ -- | Return either a general entity reference, or a character reference. reference :: XParser Reference reference = do-    bracket (tok TokAmp) (tok TokSemi) (freetext >>= val)+    bracket (tok TokAmp) (commit $ tok TokSemi) (freetext >>= val)   where     val ('#':'x':i) | all isHexDigit i                     = return . RefChar . fst . head . readHex $ i@@ -741,11 +733,11 @@  entityref :: XParser EntityRef entityref = do-    bracket (tok TokAmp) (tok TokSemi) name+    bracket (tok TokAmp) (commit $ tok TokSemi) name  charref :: XParser CharRef charref = do-    bracket (tok TokAmp) (tok TokSemi) (freetext >>= readCharVal)+    bracket (tok TokAmp) (commit $ tok TokSemi) (freetext >>= readCharVal)   where     readCharVal ('#':'x':i) = return . fst . head . readHex $ i     readCharVal ('#':i)     = return . fst . head . readDec $ i@@ -754,7 +746,7 @@  pereference :: XParser PEReference pereference = do-    myBracket (tok TokPercent) (tok TokSemi) nmtoken+    bracket (tok TokPercent) (tok TokSemi) nmtoken  entitydecl :: XParser EntityDecl entitydecl =@@ -839,7 +831,7 @@ encodingdecl = do     (word "encoding" `onFail` word "ENCODING")     tok TokEqual `onFail` failBadP "expected = in 'encoding' decl"-    f <- bracket (tok TokQuote) (tok TokQuote) freetext+    f <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (EncodingDecl f)  notationdecl :: XParser NotationDecl@@ -859,7 +851,7 @@  entityvalue :: XParser EntityValue entityvalue = do- -- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))+ -- evs <- bracket (tok TokQuote) (commit $ tok TokQuote) (many (peRef ev))     tok TokQuote     pn <- posn     evs <- many ev@@ -885,18 +877,18 @@  attvalue :: XParser AttValue attvalue = do-    avs <- bracket (tok TokQuote) (tok TokQuote)+    avs <- bracket (tok TokQuote) (commit $ tok TokQuote)                    (many (either freetext reference))     return (AttValue avs)  systemliteral :: XParser SystemLiteral systemliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (SystemLiteral s)            -- note: refs &...; not permitted  pubidliteral :: XParser PubidLiteral pubidliteral = do-    s <- bracket (tok TokQuote) (tok TokQuote) freetext+    s <- bracket (tok TokQuote) (commit $ tok TokQuote) freetext     return (PubidLiteral s)             -- note: freetext is too liberal here  -- | Return parsed freetext (i.e. until the next markup)
src/Text/XML/HaXml/Types.hs view
@@ -133,14 +133,14 @@ -- | The symbol table stored in a document holds all its general entity --   reference definitions. data Document i = Document Prolog (SymTab EntityDef) (Element i) [Misc]-                  deriving Eq+                  deriving (Eq, Show) data Prolog     = Prolog (Maybe XMLDecl) [Misc] (Maybe DocTypeDecl) [Misc]-                  deriving Eq+                  deriving (Eq, Show) data XMLDecl    = XMLDecl VersionInfo (Maybe EncodingDecl) (Maybe SDDecl)-                  deriving Eq+                  deriving (Eq, Show) data Misc       = Comment Comment                 | PI ProcessingInstruction-                deriving Eq+                deriving (Eq, Show)  type ProcessingInstruction = (PITarget,String) @@ -149,20 +149,20 @@ type Comment     = String type PITarget    = String -data DocTypeDecl = DTD QName (Maybe ExternalID) [MarkupDecl]  deriving Eq+data DocTypeDecl = DTD QName (Maybe ExternalID) [MarkupDecl]  deriving (Eq, Show) data MarkupDecl  = Element  ElementDecl                  | AttList  AttListDecl                  | Entity   EntityDecl                  | Notation NotationDecl                  | MarkupMisc Misc-                 deriving Eq+                 deriving (Eq, Show) -data ExtSubset     = ExtSubset (Maybe TextDecl) [ExtSubsetDecl]  deriving Eq+data ExtSubset     = ExtSubset (Maybe TextDecl) [ExtSubsetDecl]  deriving (Eq, Show) data ExtSubsetDecl = ExtMarkupDecl MarkupDecl                    | ExtConditionalSect ConditionalSect-                   deriving Eq+                   deriving (Eq, Show) -data Element i = Elem QName [Attribute] [Content i] deriving Eq+data Element i = Elem QName [Attribute] [Content i] deriving (Eq, Show) --  ElemTag is an intermediate type for parsing only data ElemTag   = ElemTag QName [Attribute] type Attribute = (QName, AttValue)@@ -171,6 +171,7 @@                         -- ^ bool is whether whitespace is significant                | CRef Reference i                | CMisc Misc i+               deriving Show  -- custom instance of Eq, ignoring the informational elements. instance Eq (Content i) where@@ -195,30 +196,30 @@   fmap f (CRef r i)      = CRef r (f i)   fmap f (CMisc m i)     = CMisc m (f i) -data ElementDecl = ElementDecl QName ContentSpec deriving Eq+data ElementDecl = ElementDecl QName ContentSpec deriving (Eq, Show) data ContentSpec = EMPTY                  | ANY                  | Mixed Mixed                  | ContentSpec CP-                 deriving Eq+                 deriving (Eq, Show) data CP = TagName QName Modifier         | Choice [CP] Modifier         | Seq [CP] Modifier-        deriving Eq+        deriving (Eq, Show) data Modifier = None  -- ^ Just One               | Query -- ^ Zero Or One               | Star  -- ^ Zero Or More               | Plus  -- ^ One Or More-              deriving Eq+              deriving (Eq, Show) data Mixed = PCDATA            | PCDATAplus [QName]-           deriving Eq-data AttListDecl = AttListDecl QName [AttDef] deriving Eq-data AttDef      = AttDef QName AttType DefaultDecl deriving Eq+           deriving (Eq, Show)+data AttListDecl = AttListDecl QName [AttDef] deriving (Eq, Show)+data AttDef      = AttDef QName AttType DefaultDecl deriving (Eq, Show) data AttType     = StringType                  | TokenizedType TokenizedType                  | EnumeratedType EnumeratedType-                 deriving Eq+                 deriving (Eq, Show) data TokenizedType = ID                    | IDREF                    | IDREFS@@ -226,25 +227,25 @@                    | ENTITIES                    | NMTOKEN                    | NMTOKENS-                   deriving Eq+                   deriving (Eq, Show) data EnumeratedType = NotationType NotationType                     | Enumeration Enumeration-                    deriving Eq+                    deriving (Eq, Show) type NotationType   = [Name]    -- nonempty list type Enumeration    = [NmToken] -- nonempty list data DefaultDecl    = REQUIRED                     | IMPLIED                     | DefaultTo AttValue (Maybe FIXED)-                    deriving Eq-data FIXED          = FIXED deriving Eq+                    deriving (Eq, Show)+data FIXED          = FIXED deriving (Eq, Show)  data ConditionalSect = IncludeSect IncludeSect                      | IgnoreSect IgnoreSect-                     deriving Eq+                     deriving (Eq, Show) type IncludeSect = [ExtSubsetDecl] type IgnoreSect  = [IgnoreSectContents]-data Ignore      = Ignore deriving Eq-data IgnoreSectContents = IgnoreSectContents Ignore [(IgnoreSectContents,Ignore)]  deriving Eq+data Ignore      = Ignore deriving (Eq, Show)+data IgnoreSectContents = IgnoreSectContents Ignore [(IgnoreSectContents,Ignore)]  deriving (Eq, Show)  data Reference    = RefEntity EntityRef                   | RefChar CharRef@@ -255,25 +256,25 @@  data EntityDecl   = EntityGEDecl GEDecl                   | EntityPEDecl PEDecl-                  deriving Eq-data GEDecl       = GEDecl Name EntityDef deriving Eq-data PEDecl       = PEDecl Name PEDef deriving Eq+                  deriving (Eq, Show)+data GEDecl       = GEDecl Name EntityDef deriving (Eq, Show)+data PEDecl       = PEDecl Name PEDef deriving (Eq, Show) data EntityDef    = DefEntityValue EntityValue                   | DefExternalID ExternalID (Maybe NDataDecl)-                  deriving Eq+                  deriving (Eq, Show) data PEDef        = PEDefEntityValue EntityValue                   | PEDefExternalID ExternalID deriving (Eq,Show) data ExternalID   = SYSTEM SystemLiteral                   | PUBLIC PubidLiteral SystemLiteral deriving (Eq,Show)-newtype NDataDecl = NDATA Name  deriving Eq+newtype NDataDecl = NDATA Name  deriving (Eq, Show) -data TextDecl       = TextDecl (Maybe VersionInfo) EncodingDecl  deriving Eq-data ExtParsedEnt i = ExtParsedEnt (Maybe TextDecl) (Content i) deriving Eq-data ExtPE          = ExtPE (Maybe TextDecl) [ExtSubsetDecl] deriving Eq+data TextDecl       = TextDecl (Maybe VersionInfo) EncodingDecl  deriving (Eq, Show)+data ExtParsedEnt i = ExtParsedEnt (Maybe TextDecl) (Content i) deriving (Eq, Show)+data ExtPE          = ExtPE (Maybe TextDecl) [ExtSubsetDecl] deriving (Eq, Show) -data NotationDecl    = NOTATION Name (Either ExternalID PublicID) deriving Eq-newtype PublicID     = PUBLICID PubidLiteral deriving Eq-newtype EncodingDecl = EncodingDecl String deriving Eq+data NotationDecl    = NOTATION Name (Either ExternalID PublicID) deriving (Eq, Show)+newtype PublicID     = PUBLICID PubidLiteral deriving (Eq, Show)+newtype EncodingDecl = EncodingDecl String deriving (Eq, Show)  -- | A QName is a (possibly) qualified name, in the sense of XML namespaces. data QName    = N  Name