3 | import Data.String.Extra
4 | import Data.String.Parser
7 | import public Language.XML.Element
8 | import public Language.XML.Misc
9 | import public Language.XML.Prolog
12 | record XMLDocument where
13 | constructor MkXMLDocument
18 | %name XMLDocument
doc
21 | mapContent : (Element -> Element) -> XMLDocument -> XMLDocument
22 | mapContent f (MkXMLDocument prolog root misc) = MkXMLDocument prolog (f root) misc
25 | Show XMLDocument where
26 | show doc = join "\n" $
filter (/= "") $
27 | show doc.prolog :: show doc.root :: map show doc.misc
30 | xmlDocument : Parser XMLDocument
32 | pure $
MkXMLDocument
34 | !(spaces *> element)
35 | !(many $
spaces *> misc)
36 | ) <?> "XML document"