HaXml 1.19.1 → 1.19.2
raw patch · 11 files changed
+538/−501 lines, 11 filesdep +bytestringdep +containersdep +prettydep ~basedep ~polyparse
Dependencies added: bytestring, containers, pretty, random
Dependency ranges changed: base, polyparse
Files
- HaXml.cabal +86/−71
- Makefile +1/−1
- docs/HaXml/src/Text/XML/HaXml.html +1/−1
- docs/HaXml/src/Text/XML/HaXml/ByteStringPP.html +271/−270
- docs/HaXml/src/Text/XML/HaXml/Parse.html +150/−146
- docs/changelog.html +10/−0
- docs/index.html +7/−5
- src/Makefile +1/−1
- src/Text/XML/HaXml.hs +1/−1
- src/Text/XML/HaXml/ByteStringPP.hs +5/−4
- src/Text/XML/HaXml/Parse.hs +5/−1
HaXml.cabal view
@@ -1,88 +1,103 @@ name: HaXml-version: 1.19.1-ghc-options: -DVERSION="1.19.1"-cc-options: -DVERSION="1.19.1"-nhc98-options: -K10M+version: 1.19.2 license: LGPL license-file: COPYRIGHT author: Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>+maintainer: author homepage: http://www.cs.york.ac.uk/fp/HaXml/ category: Text, XML synopsis: Utilities for manipulating XML documents description: Haskell utilities for parsing, filtering, transforming and generating XML documents.-exposed-modules:- Text.XML.HaXml,- Text.XML.HaXml.ByteStringPP,- Text.XML.HaXml.Combinators,- Text.XML.HaXml.DtdToHaskell.Convert,- Text.XML.HaXml.DtdToHaskell.Instance,- Text.XML.HaXml.DtdToHaskell.TypeDef,- Text.XML.HaXml.Escape,- Text.XML.HaXml.Html.Generate,- Text.XML.HaXml.Html.Parse,- Text.XML.HaXml.Html.ParseLazy,- Text.XML.HaXml.Html.Pretty,- Text.XML.HaXml.Lex,- Text.XML.HaXml.OneOfN,- Text.XML.HaXml.Parse,- Text.XML.HaXml.ParseLazy,- Text.XML.HaXml.Posn,- Text.XML.HaXml.Pretty,- Text.XML.HaXml.SAX,- Text.XML.HaXml.ShowXmlLazy,- Text.XML.HaXml.Types,- Text.XML.HaXml.TypeMapping,- Text.XML.HaXml.Validate,- Text.XML.HaXml.Verbatim,- Text.XML.HaXml.Wrappers,- Text.XML.HaXml.XmlContent,- Text.XML.HaXml.Xtract.Combinators,- Text.XML.HaXml.Xtract.Lex,- Text.XML.HaXml.Xtract.Parse-hs-source-dir: src-build-depends: base, haskell98, polyparse >= 1.1-extensions: CPP+build-type: Simple+cabal-version: >=1.2 -Executable: Canonicalise-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: Canonicalise.hs+flag splitBase+flag bytestringInBase -Executable: CanonicaliseLazy-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: CanonicaliseLazy.hs+library+ exposed-modules:+ Text.XML.HaXml,+ Text.XML.HaXml.ByteStringPP,+ Text.XML.HaXml.Combinators,+ Text.XML.HaXml.DtdToHaskell.Convert,+ Text.XML.HaXml.DtdToHaskell.Instance,+ Text.XML.HaXml.DtdToHaskell.TypeDef,+ Text.XML.HaXml.Escape,+ Text.XML.HaXml.Html.Generate,+ Text.XML.HaXml.Html.Parse,+ Text.XML.HaXml.Html.ParseLazy,+ Text.XML.HaXml.Html.Pretty,+ Text.XML.HaXml.Lex,+ Text.XML.HaXml.OneOfN,+ Text.XML.HaXml.Parse,+ Text.XML.HaXml.ParseLazy,+ Text.XML.HaXml.Posn,+ Text.XML.HaXml.Pretty,+ Text.XML.HaXml.SAX,+ Text.XML.HaXml.ShowXmlLazy,+ Text.XML.HaXml.Types,+ Text.XML.HaXml.TypeMapping,+ Text.XML.HaXml.Validate,+ Text.XML.HaXml.Verbatim,+ Text.XML.HaXml.Wrappers,+ Text.XML.HaXml.XmlContent,+ Text.XML.HaXml.Xtract.Combinators,+ Text.XML.HaXml.Xtract.Lex,+ Text.XML.HaXml.Xtract.Parse+ hs-source-dir: src+ build-depends: base, haskell98, polyparse+ if flag(splitBase)+ build-depends: base >= 3, pretty, random, containers+ else+ build-depends: base < 3+ if flag(bytestringInBase)+ build-depends: base >= 2 && < 3+ else+ build-depends: base < 2 || >= 3, bytestring+ extensions: CPP+ cpp-options: -DVERSION=1.19.2+ nhc98-options: -K10M -Executable: Xtract-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: Xtract.hs+Executable Canonicalise+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: Canonicalise.hs -Executable: XtractLazy-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: XtractLazy.hs+Executable CanonicaliseLazy+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: CanonicaliseLazy.hs -Executable: Validate-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: Validate.hs+Executable Xtract+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: Xtract.hs -Executable: MkOneOf-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: MkOneOf.hs+Executable XtractLazy+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: XtractLazy.hs -Executable: DtdToHaskell-GHC-Options: -Wall -O2-Extensions: CPP-Hs-Source-Dirs: src/tools, src-Main-Is: DtdToHaskell.hs+Executable Validate+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: Validate.hs++Executable MkOneOf+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: MkOneOf.hs++Executable DtdToHaskell+ GHC-Options: -Wall+ Extensions: CPP+ Hs-Source-Dirs: src/tools, src+ Main-Is: DtdToHaskell.hs
Makefile view
@@ -1,5 +1,5 @@ SOFTWARE = HaXml-VERSION = 1.19.1+VERSION = 1.19.2 #CPP = cpp -traditional CPP = cpphs --text --noline # useful e.g. on MacOS X
docs/HaXml/src/Text/XML/HaXml.html view
@@ -34,7 +34,7 @@ <a name="(line32)"></a> <a name="(line33)"></a><a name="version"></a><font color=Blue>-- | The version of the library.</font> <a name="(line34)"></a>version <font color=Red>::</font> String-<a name="(line35)"></a>version <font color=Red>=</font> show VERSION+<a name="(line35)"></a>version <font color=Red>=</font> <font color=Magenta>"VERSION"</font> <a name="(line36)"></a> <font color=Blue>-- expect cpp to fill in value</font> </pre> </html>
docs/HaXml/src/Text/XML/HaXml/ByteStringPP.html view
@@ -22,280 +22,281 @@ <a name="(line20)"></a> <font color=Cyan>,</font> cp <a name="(line21)"></a> <font color=Cyan>)</font> <font color=Green><u>where</u></font> <a name="(line22)"></a>-<a name="(line23)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>,</font>elem<font color=Cyan>)</font>+<a name="(line23)"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>maybe<font color=Cyan>,</font>either<font color=Cyan>,</font>elem<font color=Cyan>,</font>concat<font color=Cyan>)</font> <a name="(line24)"></a><font color=Green><u>import</u></font> Maybe hiding <font color=Cyan>(</font>maybe<font color=Cyan>)</font> <a name="(line25)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>List <font color=Cyan>(</font>intersperse<font color=Cyan>)</font> -<a name="(line26)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy hiding <font color=Cyan>(</font>pack<font color=Cyan>,</font>map<font color=Cyan>,</font>head<font color=Cyan>,</font>any<font color=Cyan>,</font>singleton<font color=Cyan>)</font>-<a name="(line27)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Cyan>(</font>pack<font color=Cyan>,</font> singleton<font color=Cyan>,</font> join<font color=Cyan>)</font>-<a name="(line28)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types-<a name="(line29)"></a>-<a name="(line30)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font> <font color=Red>=</font> f x-<a name="(line31)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x-<a name="(line32)"></a>-<a name="(line33)"></a><a name="maybe"></a>maybe f Nothing <font color=Red>=</font> empty-<a name="(line34)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x-<a name="(line35)"></a>+<a name="(line26)"></a><font color=Blue>--import Data.ByteString.Lazy hiding (pack,map,head,any,singleton,intersperse,join)</font>+<a name="(line27)"></a><font color=Green><u>import</u></font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8 <font color=Cyan>(</font>ByteString()<font color=Cyan>,</font> concat<font color=Cyan>,</font> pack<font color=Cyan>,</font> singleton<font color=Cyan>,</font> join+<a name="(line28)"></a> <font color=Cyan>,</font> append<font color=Cyan>,</font> elem<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line29)"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="(line30)"></a>+<a name="(line31)"></a><a name="either"></a>either f g <font color=Cyan>(</font>Left x<font color=Cyan>)</font> <font color=Red>=</font> f x+<a name="(line32)"></a>either f g <font color=Cyan>(</font>Right x<font color=Cyan>)</font> <font color=Red>=</font> g x+<a name="(line33)"></a>+<a name="(line34)"></a><a name="maybe"></a>maybe f Nothing <font color=Red>=</font> empty+<a name="(line35)"></a>maybe f <font color=Cyan>(</font>Just x<font color=Cyan>)</font> <font color=Red>=</font> f x <a name="(line36)"></a>-<a name="(line37)"></a><font color=Blue>-- A simple implementation of the pretty-printing combinator interface,</font>-<a name="(line38)"></a><font color=Blue>-- but for plain ByteStrings:</font>-<a name="(line39)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan><></font> -<a name="(line40)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan><+></font>-<a name="(line41)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>5</font> <font color=Cyan>$$</font><font color=Cyan>,</font> <font color=Cyan>$+$</font>-<a name="(line42)"></a><a name="<>"></a><font color=Cyan>(</font><font color=Cyan><></font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Beside</font>-<a name="(line43)"></a><a name="hcat"></a>hcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of <></font>-<a name="(line44)"></a><a name="<+>"></a><font color=Cyan>(</font><font color=Cyan><+></font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Beside, separated by space</font>-<a name="(line45)"></a><a name="hsep"></a>hsep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of <+></font>-<a name="(line46)"></a><a name="$$"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Above; if there is no</font>-<a name="(line47)"></a> <font color=Blue>-- overlap, it "dovetails"</font>-<a name="(line48)"></a><a name="vcat"></a>vcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of $$</font>-<a name="(line49)"></a><a name="cat"></a>cat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- Either hcat or vcat</font>-<a name="(line50)"></a><a name="sep"></a>sep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- Either hsep or vcat</font>-<a name="(line51)"></a><a name="fcat"></a>fcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- ``Paragraph fill'' version of cat</font>-<a name="(line52)"></a><a name="fsep"></a>fsep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- ``Paragraph fill'' version of sep</font>-<a name="(line53)"></a><a name="nest"></a>nest <font color=Red>::</font> Int <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Nested</font>-<a name="(line54)"></a>-<a name="(line55)"></a><font color=Cyan>(</font><font color=Cyan><></font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan>`append`</font> b2-<a name="(line56)"></a><font color=Cyan>(</font><font color=Cyan><+></font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan><></font> pack <font color=Magenta>" "</font> <font color=Cyan><></font> b2-<a name="(line57)"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan><></font> pack <font color=Magenta>"\n"</font> <font color=Cyan><></font> b2-<a name="(line58)"></a><a name="$+$"></a><font color=Cyan>(</font><font color=Cyan>$+$</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font>-<a name="(line59)"></a>-<a name="(line60)"></a>hcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>concat -<a name="(line61)"></a>hsep <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>' '</font><font color=Cyan>)</font>-<a name="(line62)"></a>vcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>'\n'</font><font color=Cyan>)</font>-<a name="(line63)"></a>cat <font color=Red>=</font> hcat-<a name="(line64)"></a>sep <font color=Red>=</font> hsep-<a name="(line65)"></a><a name="text"></a>text <font color=Red>=</font> pack-<a name="(line66)"></a>fcat <font color=Red>=</font> cat-<a name="(line67)"></a>fsep <font color=Red>=</font> sep-<a name="(line68)"></a>nest <font color=Green><u>_</u></font> b <font color=Red>=</font> pack <font color=Magenta>" "</font> <font color=Cyan><></font> b-<a name="(line69)"></a><a name="parens"></a>parens p <font color=Red>=</font> pack <font color=Magenta>"("</font> <font color=Cyan><></font> p <font color=Cyan><></font> pack <font color=Magenta>")"</font>-<a name="(line70)"></a>+<a name="(line37)"></a>+<a name="(line38)"></a><font color=Blue>-- A simple implementation of the pretty-printing combinator interface,</font>+<a name="(line39)"></a><font color=Blue>-- but for plain ByteStrings:</font>+<a name="(line40)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan><></font> +<a name="(line41)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>6</font> <font color=Cyan><+></font>+<a name="(line42)"></a><font color=Green><u>infixl</u></font> <font color=Magenta>5</font> <font color=Cyan>$$</font><font color=Cyan>,</font> <font color=Cyan>$+$</font>+<a name="(line43)"></a><a name="<>"></a><font color=Cyan>(</font><font color=Cyan><></font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Beside</font>+<a name="(line44)"></a><a name="hcat"></a>hcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of <></font>+<a name="(line45)"></a><a name="<+>"></a><font color=Cyan>(</font><font color=Cyan><+></font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Beside, separated by space</font>+<a name="(line46)"></a><a name="hsep"></a>hsep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of <+></font>+<a name="(line47)"></a><a name="$$"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> <font color=Red>::</font> ByteString <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Above; if there is no</font>+<a name="(line48)"></a> <font color=Blue>-- overlap, it "dovetails"</font>+<a name="(line49)"></a><a name="vcat"></a>vcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- List version of $$</font>+<a name="(line50)"></a><a name="cat"></a>cat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- Either hcat or vcat</font>+<a name="(line51)"></a><a name="sep"></a>sep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- Either hsep or vcat</font>+<a name="(line52)"></a><a name="fcat"></a>fcat <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- ``Paragraph fill'' version of cat</font>+<a name="(line53)"></a><a name="fsep"></a>fsep <font color=Red>::</font> <font color=Red>[</font>ByteString<font color=Red>]</font> <font color=Red>-></font> ByteString <font color=Blue>-- ``Paragraph fill'' version of sep</font>+<a name="(line54)"></a><a name="nest"></a>nest <font color=Red>::</font> Int <font color=Red>-></font> ByteString <font color=Red>-></font> ByteString <font color=Blue>-- Nested</font>+<a name="(line55)"></a>+<a name="(line56)"></a><font color=Cyan>(</font><font color=Cyan><></font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan>`append`</font> b2+<a name="(line57)"></a><font color=Cyan>(</font><font color=Cyan><+></font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan><></font> pack <font color=Magenta>" "</font> <font color=Cyan><></font> b2+<a name="(line58)"></a><font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font> b1 b2 <font color=Red>=</font> b1 <font color=Cyan><></font> pack <font color=Magenta>"\n"</font> <font color=Cyan><></font> b2+<a name="(line59)"></a><a name="$+$"></a><font color=Cyan>(</font><font color=Cyan>$+$</font><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>$$</font><font color=Cyan>)</font>+<a name="(line60)"></a>+<a name="(line61)"></a>hcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>concat +<a name="(line62)"></a>hsep <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>' '</font><font color=Cyan>)</font>+<a name="(line63)"></a>vcat <font color=Red>=</font> Data<font color=Cyan>.</font>ByteString<font color=Cyan>.</font>Lazy<font color=Cyan>.</font>Char8<font color=Cyan>.</font>join <font color=Cyan>(</font>singleton <font color=Magenta>'\n'</font><font color=Cyan>)</font>+<a name="(line64)"></a>cat <font color=Red>=</font> hcat+<a name="(line65)"></a>sep <font color=Red>=</font> hsep+<a name="(line66)"></a><a name="text"></a>text <font color=Red>=</font> pack+<a name="(line67)"></a>fcat <font color=Red>=</font> cat+<a name="(line68)"></a>fsep <font color=Red>=</font> sep+<a name="(line69)"></a>nest <font color=Green><u>_</u></font> b <font color=Red>=</font> pack <font color=Magenta>" "</font> <font color=Cyan><></font> b+<a name="(line70)"></a><a name="parens"></a>parens p <font color=Red>=</font> pack <font color=Magenta>"("</font> <font color=Cyan><></font> p <font color=Cyan><></font> pack <font color=Magenta>")"</font> <a name="(line71)"></a>-<a name="(line72)"></a><font color=Blue>----</font>-<a name="(line73)"></a><font color=Blue>-- Now for the XML pretty-printing interface.</font>-<a name="(line74)"></a><font color=Blue>-- (Basically copied direct from Text.XML.HaXml.Pretty).</font>-<a name="(line75)"></a>-<a name="(line76)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-></font> ByteString-<a name="(line77)"></a><a name="prolog"></a>prolog <font color=Red>::</font> Prolog <font color=Red>-></font> ByteString-<a name="(line78)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> XMLDecl <font color=Red>-></font> ByteString-<a name="(line79)"></a><a name="misc"></a>misc <font color=Red>::</font> Misc <font color=Red>-></font> ByteString-<a name="(line80)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> Bool <font color=Red>-></font> ByteString-<a name="(line81)"></a>-<a name="(line82)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> DocTypeDecl <font color=Red>-></font> ByteString-<a name="(line83)"></a><a name="markupdecl"></a>markupdecl <font color=Red>::</font> MarkupDecl <font color=Red>-></font> ByteString-<a name="(line84)"></a><a name="extsubset"></a>extsubset <font color=Red>::</font> ExtSubset <font color=Red>-></font> ByteString-<a name="(line85)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-></font> ByteString-<a name="(line86)"></a><a name="cp"></a>cp <font color=Red>::</font> CP <font color=Red>-></font> ByteString-<a name="(line87)"></a>-<a name="(line88)"></a><a name="element"></a>element <font color=Red>::</font> Element i <font color=Red>-></font> ByteString-<a name="(line89)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-></font> ByteString-<a name="(line90)"></a><a name="content"></a>content <font color=Red>::</font> Content i <font color=Red>-></font> ByteString-<a name="(line91)"></a>-<a name="(line92)"></a><font color=Blue>----</font>-<a name="(line93)"></a>-<a name="(line94)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m<font color=Cyan>)</font>-<a name="(line95)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>-<a name="(line96)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>-<a name="(line97)"></a> maybe doctypedecl dtd <font color=Cyan>$$</font>-<a name="(line98)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m2<font color=Cyan>)</font>-<a name="(line99)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?xml version='"</font> <font color=Cyan><></font> text v <font color=Cyan><></font> text <font color=Magenta>"'"</font> <font color=Cyan><+></font>-<a name="(line100)"></a> maybe encodingdecl e <font color=Cyan><+></font>-<a name="(line101)"></a> maybe sddecl sd <font color=Cyan><+></font>-<a name="(line102)"></a> text <font color=Magenta>"?>"</font>-<a name="(line103)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!--"</font> <font color=Cyan><+></font> text s <font color=Cyan><+></font> text <font color=Magenta>"-->"</font>-<a name="(line104)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> text s <font color=Cyan><+></font> text <font color=Magenta>"?>"</font>-<a name="(line105)"></a>sddecl sd <font color=Red>|</font> sd <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>-<a name="(line106)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>-<a name="(line107)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> Prelude<font color=Cyan>.</font>null ds <font color=Green><u>then</u></font> -<a name="(line108)"></a> hd <font color=Cyan><></font> text <font color=Magenta>">"</font>-<a name="(line109)"></a> <font color=Green><u>else</u></font> hd <font color=Cyan><+></font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>-<a name="(line110)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]>"</font>-<a name="(line111)"></a> <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"<!DOCTYPE"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>-<a name="(line112)"></a> maybe externalid eid-<a name="(line113)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font> <font color=Red>=</font> elementdecl e-<a name="(line114)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font> <font color=Red>=</font> attlistdecl a-<a name="(line115)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font> <font color=Red>=</font> entitydecl e-<a name="(line116)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font> <font color=Red>=</font> notationdecl n-<a name="(line117)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font> <font color=Red>=</font> misc m-<a name="(line118)"></a><font color=Blue>--markupdecl (MarkupPE p m) = peref p</font>-<a name="(line119)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>-<a name="(line120)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl ds<font color=Cyan>)</font>-<a name="(line121)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font> <font color=Red>=</font> markupdecl m-<a name="(line122)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c-<a name="(line123)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e) = peref p</font>-<a name="(line124)"></a>-<a name="(line125)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font>-<a name="(line126)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"/>"</font>-<a name="(line127)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>-<a name="(line128)"></a><font color=Blue>-- | any isText cs = text "<" <> text n <+> fsep (map attribute as) <></font>-<a name="(line129)"></a><font color=Blue>-- text ">" <> hcat (map content cs) <></font>-<a name="(line130)"></a><font color=Blue>-- text "</" <> text n <> text ">"</font>-<a name="(line131)"></a> <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line132)"></a> text <font color=Magenta>">"</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map content cs<font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line133)"></a> text <font color=Magenta>"</"</font> <font color=Cyan><></font> text n <font color=Cyan><></font> text <font color=Magenta>">"</font>-<a name="(line134)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty-<a name="(line135)"></a> <font color=Green><u>in</u></font> d <font color=Cyan><></font> c-<a name="(line136)"></a>-<a name="(line137)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True-<a name="(line138)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True-<a name="(line139)"></a>isText <font color=Green><u>_</u></font> <font color=Red>=</font> False-<a name="(line140)"></a>-<a name="(line141)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c-<a name="(line142)"></a> <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan><></font>-<a name="(line143)"></a> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>-<a name="(line144)"></a> <font color=Cyan>,</font> text <font color=Magenta>"/>"</font><font color=Cyan>)</font>-<a name="(line145)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c-<a name="(line146)"></a><font color=Blue>-- | any isText cs = ( c <> element e, empty)</font>-<a name="(line147)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>cs0<font color=Cyan>,</font>d0<font color=Cyan>)</font> <font color=Red>=</font> carryscan carrycontent cs <font color=Cyan>(</font>text <font color=Magenta>">"</font><font color=Cyan>)</font>-<a name="(line148)"></a> <font color=Green><u>in</u></font>-<a name="(line149)"></a> <font color=Cyan>(</font> c <font color=Cyan><></font>-<a name="(line150)"></a> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>$$</font>-<a name="(line151)"></a> nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat cs0<font color=Cyan>)</font> <font color=Cyan><></font> <font color=Blue>--- $$</font>-<a name="(line152)"></a> d0 <font color=Cyan><></font> text <font color=Magenta>"</"</font> <font color=Cyan><></font> text n-<a name="(line153)"></a> <font color=Cyan>,</font> text <font color=Magenta>">"</font><font color=Cyan>)</font>-<a name="(line154)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> carryelem e c-<a name="(line155)"></a>carrycontent <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>-<a name="(line156)"></a>carrycontent <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> cdsect s<font color=Cyan>,</font> empty<font color=Cyan>)</font>-<a name="(line157)"></a>carrycontent <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> reference r<font color=Cyan>,</font> empty<font color=Cyan>)</font>-<a name="(line158)"></a>carrycontent <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> misc m<font color=Cyan>,</font> empty<font color=Cyan>)</font>-<a name="(line159)"></a>-<a name="(line160)"></a><a name="carryscan"></a>carryscan <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-></font>c<font color=Red>-></font><font color=Cyan>(</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-></font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-></font> c <font color=Red>-></font> <font color=Cyan>(</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>,</font>c<font color=Cyan>)</font>-<a name="(line161)"></a>carryscan f [] c <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>c<font color=Cyan>)</font>-<a name="(line162)"></a>carryscan f <font color=Cyan>(</font>a<font color=Red><b>:</b></font><font color=Green><u>as</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>b<font color=Cyan>,</font> c0<font color=Cyan>)</font> <font color=Red>=</font> f a c-<a name="(line163)"></a> <font color=Cyan>(</font>bs<font color=Cyan>,</font>c1<font color=Cyan>)</font> <font color=Red>=</font> carryscan f <font color=Green><u>as</u></font> c0-<a name="(line164)"></a> <font color=Green><u>in</u></font> <font color=Cyan>(</font>b<font color=Red><b>:</b></font>bs<font color=Cyan>,</font> c1<font color=Cyan>)</font>-<a name="(line165)"></a>-<a name="(line166)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>-<a name="(line167)"></a><font color=Blue>-- | isText (head cs) =</font>-<a name="(line168)"></a><font color=Blue>-- ( start <></font>-<a name="(line169)"></a><font color=Blue>-- text ">" <> hcat (map content cs) <> text "</" <> text n</font>-<a name="(line170)"></a><font color=Blue>-- , text ">")</font>-<a name="(line171)"></a><font color=Blue>-- | otherwise =</font>-<a name="(line172)"></a><font color=Blue>-- let (d,c0) = foldl carrycontent (start, text ">") cs in</font>-<a name="(line173)"></a><font color=Blue>-- ( d <> c0 <> text "</" <> text n</font>-<a name="(line174)"></a><font color=Blue>-- , text ">")</font>-<a name="(line175)"></a><font color=Blue>-- where start = c <> text "<" <> text n <+> fsep (map attribute as)</font>-<a name="(line176)"></a><font color=Blue>--</font>-<a name="(line177)"></a><font color=Blue>--carrycontent (d,c) (CElem e) = let (d',c') = carryelem e c in</font>-<a name="(line178)"></a><font color=Blue>-- (d $$ nest 2 d', c')</font>-<a name="(line179)"></a><font color=Blue>--carrycontent (d,c) (CString _ s) = (d <> c <> chardata s, empty)</font>-<a name="(line180)"></a><font color=Blue>--carrycontent (d,c) (CRef r) = (d <> c <> reference r,empty)</font>-<a name="(line181)"></a><font color=Blue>--carrycontent (d,c) (CMisc m) = (d $$ c <> misc m, empty)</font>-<a name="(line182)"></a>+<a name="(line72)"></a>+<a name="(line73)"></a><font color=Blue>----</font>+<a name="(line74)"></a><font color=Blue>-- Now for the XML pretty-printing interface.</font>+<a name="(line75)"></a><font color=Blue>-- (Basically copied direct from Text.XML.HaXml.Pretty).</font>+<a name="(line76)"></a>+<a name="(line77)"></a><a name="document"></a>document <font color=Red>::</font> Document i <font color=Red>-></font> ByteString+<a name="(line78)"></a><a name="prolog"></a>prolog <font color=Red>::</font> Prolog <font color=Red>-></font> ByteString+<a name="(line79)"></a><a name="xmldecl"></a>xmldecl <font color=Red>::</font> XMLDecl <font color=Red>-></font> ByteString+<a name="(line80)"></a><a name="misc"></a>misc <font color=Red>::</font> Misc <font color=Red>-></font> ByteString+<a name="(line81)"></a><a name="sddecl"></a>sddecl <font color=Red>::</font> Bool <font color=Red>-></font> ByteString+<a name="(line82)"></a>+<a name="(line83)"></a><a name="doctypedecl"></a>doctypedecl <font color=Red>::</font> DocTypeDecl <font color=Red>-></font> ByteString+<a name="(line84)"></a><a name="markupdecl"></a>markupdecl <font color=Red>::</font> MarkupDecl <font color=Red>-></font> ByteString+<a name="(line85)"></a><a name="extsubset"></a>extsubset <font color=Red>::</font> ExtSubset <font color=Red>-></font> ByteString+<a name="(line86)"></a><a name="extsubsetdecl"></a>extsubsetdecl <font color=Red>::</font> ExtSubsetDecl <font color=Red>-></font> ByteString+<a name="(line87)"></a><a name="cp"></a>cp <font color=Red>::</font> CP <font color=Red>-></font> ByteString+<a name="(line88)"></a>+<a name="(line89)"></a><a name="element"></a>element <font color=Red>::</font> Element i <font color=Red>-></font> ByteString+<a name="(line90)"></a><a name="attribute"></a>attribute <font color=Red>::</font> Attribute <font color=Red>-></font> ByteString+<a name="(line91)"></a><a name="content"></a>content <font color=Red>::</font> Content i <font color=Red>-></font> ByteString+<a name="(line92)"></a>+<a name="(line93)"></a><font color=Blue>----</font>+<a name="(line94)"></a>+<a name="(line95)"></a>document <font color=Cyan>(</font>Document p <font color=Green><u>_</u></font> e m<font color=Cyan>)</font><font color=Red>=</font> prolog p <font color=Cyan>$$</font> element e <font color=Cyan>$$</font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m<font color=Cyan>)</font>+<a name="(line96)"></a>prolog <font color=Cyan>(</font>Prolog x m1 dtd m2<font color=Cyan>)</font><font color=Red>=</font> maybe xmldecl x <font color=Cyan>$$</font>+<a name="(line97)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m1<font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line98)"></a> maybe doctypedecl dtd <font color=Cyan>$$</font>+<a name="(line99)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map misc m2<font color=Cyan>)</font>+<a name="(line100)"></a>xmldecl <font color=Cyan>(</font>XMLDecl v e sd<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?xml version='"</font> <font color=Cyan><></font> text v <font color=Cyan><></font> text <font color=Magenta>"'"</font> <font color=Cyan><+></font>+<a name="(line101)"></a> maybe encodingdecl e <font color=Cyan><+></font>+<a name="(line102)"></a> maybe sddecl sd <font color=Cyan><+></font>+<a name="(line103)"></a> text <font color=Magenta>"?>"</font>+<a name="(line104)"></a>misc <font color=Cyan>(</font>Comment s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!--"</font> <font color=Cyan><+></font> text s <font color=Cyan><+></font> text <font color=Magenta>"-->"</font>+<a name="(line105)"></a>misc <font color=Cyan>(</font>PI <font color=Cyan>(</font>n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> text s <font color=Cyan><+></font> text <font color=Magenta>"?>"</font>+<a name="(line106)"></a>sddecl sd <font color=Red>|</font> sd <font color=Red>=</font> text <font color=Magenta>"standalone='yes'"</font>+<a name="(line107)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"standalone='no'"</font>+<a name="(line108)"></a>doctypedecl <font color=Cyan>(</font>DTD n eid ds<font color=Cyan>)</font> <font color=Red>=</font> <font color=Green><u>if</u></font> Prelude<font color=Cyan>.</font>null ds <font color=Green><u>then</u></font> +<a name="(line109)"></a> hd <font color=Cyan><></font> text <font color=Magenta>">"</font>+<a name="(line110)"></a> <font color=Green><u>else</u></font> hd <font color=Cyan><+></font> text <font color=Magenta>" ["</font> <font color=Cyan>$$</font>+<a name="(line111)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map markupdecl ds<font color=Cyan>)</font> <font color=Cyan>$$</font> text <font color=Magenta>"]>"</font>+<a name="(line112)"></a> <font color=Green><u>where</u></font> hd <font color=Red>=</font> text <font color=Magenta>"<!DOCTYPE"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>+<a name="(line113)"></a> maybe externalid eid+<a name="(line114)"></a>markupdecl <font color=Cyan>(</font>Element e<font color=Cyan>)</font> <font color=Red>=</font> elementdecl e+<a name="(line115)"></a>markupdecl <font color=Cyan>(</font>AttList a<font color=Cyan>)</font> <font color=Red>=</font> attlistdecl a+<a name="(line116)"></a>markupdecl <font color=Cyan>(</font>Entity e<font color=Cyan>)</font> <font color=Red>=</font> entitydecl e+<a name="(line117)"></a>markupdecl <font color=Cyan>(</font>Notation n<font color=Cyan>)</font> <font color=Red>=</font> notationdecl n+<a name="(line118)"></a>markupdecl <font color=Cyan>(</font>MarkupMisc m<font color=Cyan>)</font> <font color=Red>=</font> misc m+<a name="(line119)"></a><font color=Blue>--markupdecl (MarkupPE p m) = peref p</font>+<a name="(line120)"></a>extsubset <font color=Cyan>(</font>ExtSubset t ds<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan>$$</font>+<a name="(line121)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl ds<font color=Cyan>)</font>+<a name="(line122)"></a>extsubsetdecl <font color=Cyan>(</font>ExtMarkupDecl m<font color=Cyan>)</font> <font color=Red>=</font> markupdecl m+<a name="(line123)"></a>extsubsetdecl <font color=Cyan>(</font>ExtConditionalSect c<font color=Cyan>)</font> <font color=Red>=</font> conditionalsect c+<a name="(line124)"></a><font color=Blue>--extsubsetdecl (ExtPEReference p e) = peref p</font>+<a name="(line125)"></a>+<a name="(line126)"></a>element <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font>+<a name="(line127)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"/>"</font>+<a name="(line128)"></a>element e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font>+<a name="(line129)"></a><font color=Blue>-- | any isText cs = text "<" <> text n <+> fsep (map attribute as) <></font>+<a name="(line130)"></a><font color=Blue>-- text ">" <> hcat (map content cs) <></font>+<a name="(line131)"></a><font color=Blue>-- text "</" <> text n <> text ">"</font>+<a name="(line132)"></a> <font color=Red>|</font> isText <font color=Cyan>(</font>head cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line133)"></a> text <font color=Magenta>">"</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map content cs<font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line134)"></a> text <font color=Magenta>"</"</font> <font color=Cyan><></font> text n <font color=Cyan><></font> text <font color=Magenta>">"</font>+<a name="(line135)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>d<font color=Cyan>,</font>c<font color=Cyan>)</font> <font color=Red>=</font> carryelem e empty+<a name="(line136)"></a> <font color=Green><u>in</u></font> d <font color=Cyan><></font> c+<a name="(line137)"></a>+<a name="(line138)"></a><a name="isText"></a>isText <font color=Cyan>(</font>CString <font color=Green><u>_</u></font> <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line139)"></a>isText <font color=Cyan>(</font>CRef <font color=Green><u>_</u></font> <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> True+<a name="(line140)"></a>isText <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line141)"></a>+<a name="(line142)"></a><a name="carryelem"></a>carryelem <font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> []<font color=Cyan>)</font> c+<a name="(line143)"></a> <font color=Red>=</font> <font color=Cyan>(</font> c <font color=Cyan><></font>+<a name="(line144)"></a> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font>+<a name="(line145)"></a> <font color=Cyan>,</font> text <font color=Magenta>"/>"</font><font color=Cyan>)</font>+<a name="(line146)"></a>carryelem e<font color=Red>@</font><font color=Cyan>(</font>Elem n <font color=Green><u>as</u></font> cs<font color=Cyan>)</font> c+<a name="(line147)"></a><font color=Blue>-- | any isText cs = ( c <> element e, empty)</font>+<a name="(line148)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>cs0<font color=Cyan>,</font>d0<font color=Cyan>)</font> <font color=Red>=</font> carryscan carrycontent cs <font color=Cyan>(</font>text <font color=Magenta>">"</font><font color=Cyan>)</font>+<a name="(line149)"></a> <font color=Green><u>in</u></font>+<a name="(line150)"></a> <font color=Cyan>(</font> c <font color=Cyan><></font>+<a name="(line151)"></a> text <font color=Magenta>"<"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attribute <font color=Green><u>as</u></font><font color=Cyan>)</font> <font color=Cyan>$$</font>+<a name="(line152)"></a> nest <font color=Magenta>2</font> <font color=Cyan>(</font>vcat cs0<font color=Cyan>)</font> <font color=Cyan><></font> <font color=Blue>--- $$</font>+<a name="(line153)"></a> d0 <font color=Cyan><></font> text <font color=Magenta>"</"</font> <font color=Cyan><></font> text n+<a name="(line154)"></a> <font color=Cyan>,</font> text <font color=Magenta>">"</font><font color=Cyan>)</font>+<a name="(line155)"></a><a name="carrycontent"></a>carrycontent <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> carryelem e c+<a name="(line156)"></a>carrycontent <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> chardata s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line157)"></a>carrycontent <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> cdsect s<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line158)"></a>carrycontent <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> reference r<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line159)"></a>carrycontent <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Cyan>(</font>c <font color=Cyan><></font> misc m<font color=Cyan>,</font> empty<font color=Cyan>)</font>+<a name="(line160)"></a>+<a name="(line161)"></a><a name="carryscan"></a>carryscan <font color=Red>::</font> <font color=Cyan>(</font>a<font color=Red>-></font>c<font color=Red>-></font><font color=Cyan>(</font>b<font color=Cyan>,</font>c<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>-></font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-></font> c <font color=Red>-></font> <font color=Cyan>(</font><font color=Red>[</font>b<font color=Red>]</font><font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line162)"></a>carryscan f [] c <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>c<font color=Cyan>)</font>+<a name="(line163)"></a>carryscan f <font color=Cyan>(</font>a<font color=Red><b>:</b></font><font color=Green><u>as</u></font><font color=Cyan>)</font> c <font color=Red>=</font> <font color=Green><u>let</u></font> <font color=Cyan>(</font>b<font color=Cyan>,</font> c0<font color=Cyan>)</font> <font color=Red>=</font> f a c+<a name="(line164)"></a> <font color=Cyan>(</font>bs<font color=Cyan>,</font>c1<font color=Cyan>)</font> <font color=Red>=</font> carryscan f <font color=Green><u>as</u></font> c0+<a name="(line165)"></a> <font color=Green><u>in</u></font> <font color=Cyan>(</font>b<font color=Red><b>:</b></font>bs<font color=Cyan>,</font> c1<font color=Cyan>)</font>+<a name="(line166)"></a>+<a name="(line167)"></a><font color=Blue>--carryelem e@(Elem n as cs) c</font>+<a name="(line168)"></a><font color=Blue>-- | isText (head cs) =</font>+<a name="(line169)"></a><font color=Blue>-- ( start <></font>+<a name="(line170)"></a><font color=Blue>-- text ">" <> hcat (map content cs) <> text "</" <> text n</font>+<a name="(line171)"></a><font color=Blue>-- , text ">")</font>+<a name="(line172)"></a><font color=Blue>-- | otherwise =</font>+<a name="(line173)"></a><font color=Blue>-- let (d,c0) = foldl carrycontent (start, text ">") cs in</font>+<a name="(line174)"></a><font color=Blue>-- ( d <> c0 <> text "</" <> text n</font>+<a name="(line175)"></a><font color=Blue>-- , text ">")</font>+<a name="(line176)"></a><font color=Blue>-- where start = c <> text "<" <> text n <+> fsep (map attribute as)</font>+<a name="(line177)"></a><font color=Blue>--</font>+<a name="(line178)"></a><font color=Blue>--carrycontent (d,c) (CElem e) = let (d',c') = carryelem e c in</font>+<a name="(line179)"></a><font color=Blue>-- (d $$ nest 2 d', c')</font>+<a name="(line180)"></a><font color=Blue>--carrycontent (d,c) (CString _ s) = (d <> c <> chardata s, empty)</font>+<a name="(line181)"></a><font color=Blue>--carrycontent (d,c) (CRef r) = (d <> c <> reference r,empty)</font>+<a name="(line182)"></a><font color=Blue>--carrycontent (d,c) (CMisc m) = (d $$ c <> misc m, empty)</font> <a name="(line183)"></a>-<a name="(line184)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><></font> text <font color=Magenta>"="</font> <font color=Cyan><></font> attvalue v-<a name="(line185)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> element e-<a name="(line186)"></a>content <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> chardata s-<a name="(line187)"></a>content <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> cdsect s-<a name="(line188)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> reference r-<a name="(line189)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> misc m-<a name="(line190)"></a>-<a name="(line191)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ELEMENT"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>-<a name="(line192)"></a> contentspec cs <font color=Cyan><></font> text <font color=Magenta>">"</font>-<a name="(line193)"></a><a name="contentspec"></a>contentspec EMPTY <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>-<a name="(line194)"></a>contentspec ANY <font color=Red>=</font> text <font color=Magenta>"ANY"</font>-<a name="(line195)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font> <font color=Red>=</font> mixed m-<a name="(line196)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font> <font color=Red>=</font> cp c-<a name="(line197)"></a><font color=Blue>--contentspec (ContentPE p cs) = peref p</font>-<a name="(line198)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><></font> modifier m-<a name="(line199)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line200)"></a> modifier m-<a name="(line201)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line202)"></a> modifier m-<a name="(line203)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c) = peref p</font>-<a name="(line204)"></a>modifier None <font color=Red>=</font> empty-<a name="(line205)"></a>modifier Query <font color=Red>=</font> text <font color=Magenta>"?"</font>-<a name="(line206)"></a>modifier Star <font color=Red>=</font> text <font color=Magenta>"*"</font>-<a name="(line207)"></a>modifier Plus <font color=Red>=</font> text <font color=Magenta>"+"</font>-<a name="(line208)"></a><a name="mixed"></a>mixed PCDATA <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>-<a name="(line209)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan><+></font>-<a name="(line210)"></a> hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line211)"></a> text <font color=Magenta>")*"</font>-<a name="(line212)"></a>-<a name="(line213)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ATTLIST"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>-<a name="(line214)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>">"</font>-<a name="(line215)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><+></font> atttype t <font color=Cyan><+></font> defaultdecl d-<a name="(line216)"></a><a name="atttype"></a>atttype StringType <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>-<a name="(line217)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font> <font color=Red>=</font> tokenizedtype t-<a name="(line218)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font> <font color=Red>=</font> enumeratedtype t-<a name="(line219)"></a><a name="tokenizedtype"></a>tokenizedtype ID <font color=Red>=</font> text <font color=Magenta>"ID"</font>-<a name="(line220)"></a>tokenizedtype IDREF <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>-<a name="(line221)"></a>tokenizedtype IDREFS <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>-<a name="(line222)"></a>tokenizedtype ENTITY <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>-<a name="(line223)"></a>tokenizedtype ENTITIES <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>-<a name="(line224)"></a>tokenizedtype NMTOKEN <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>-<a name="(line225)"></a>tokenizedtype NMTOKENS <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>-<a name="(line226)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n-<a name="(line227)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e-<a name="(line228)"></a><a name="notationtype"></a>notationtype ns <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan><+></font>-<a name="(line229)"></a> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line230)"></a><a name="enumeration"></a>enumeration ns <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line231)"></a><a name="defaultdecl"></a>defaultdecl REQUIRED <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>-<a name="(line232)"></a>defaultdecl IMPLIED <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>-<a name="(line233)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font> <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan><+></font> attvalue a-<a name="(line234)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"<![INCLUDE ["</font> <font color=Cyan><+></font>-<a name="(line235)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan><+></font> text <font color=Magenta>"]]>"</font>-<a name="(line236)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<![IGNORE ["</font> <font color=Cyan><+></font>-<a name="(line237)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan><+></font> text <font color=Magenta>"]]>"</font>-<a name="(line238)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font> <font color=Red>=</font> empty-<a name="(line239)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>-<a name="(line240)"></a> <font color=Red>=</font> ignore i <font color=Cyan><+></font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map internal is<font color=Cyan>)</font>-<a name="(line241)"></a> <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<![["</font> <font color=Cyan><+></font>-<a name="(line242)"></a> ignoresectcontents ics <font color=Cyan><+></font>-<a name="(line243)"></a> text <font color=Magenta>"]]>"</font> <font color=Cyan><+></font> ignore i-<a name="(line244)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font> <font color=Red>=</font> entityref er-<a name="(line245)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font> <font color=Red>=</font> charref cr-<a name="(line246)"></a><a name="entityref"></a>entityref n <font color=Red>=</font> text <font color=Magenta>"&"</font> <font color=Cyan><></font> text n <font color=Cyan><></font> text <font color=Magenta>";"</font>-<a name="(line247)"></a><a name="charref"></a>charref c <font color=Red>=</font> text <font color=Magenta>"&#"</font> <font color=Cyan><></font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>";"</font>-<a name="(line248)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font> <font color=Red>=</font> gedecl d-<a name="(line249)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font> <font color=Red>=</font> pedecl d-<a name="(line250)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ENTITY"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font> entitydef ed <font color=Cyan><></font>-<a name="(line251)"></a> text <font color=Magenta>">"</font>-<a name="(line252)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ENTITY %"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> pedef pd <font color=Cyan><></font>-<a name="(line253)"></a> text <font color=Magenta>">"</font>-<a name="(line254)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font> <font color=Red>=</font> entityvalue ev-<a name="(line255)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan><+></font> maybe ndatadecl nd-<a name="(line256)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font> <font color=Red>=</font> entityvalue ev-<a name="(line257)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font> <font color=Red>=</font> externalid eid-<a name="(line258)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan><+></font> systemliteral sl-<a name="(line259)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan><+></font> pubidliteral i <font color=Cyan><+></font>-<a name="(line260)"></a> systemliteral sl-<a name="(line261)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan><+></font> text n-<a name="(line262)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?xml"</font> <font color=Cyan><+></font> maybe text vi <font color=Cyan><+></font>-<a name="(line263)"></a> encodingdecl ed <font color=Cyan><></font> text <font color=Magenta>"?>"</font>-<a name="(line264)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan><+></font> content c-<a name="(line265)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan><+></font>-<a name="(line266)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl esd<font color=Cyan>)</font>-<a name="(line267)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!NOTATION"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>-<a name="(line268)"></a> either externalid publicid e <font color=Cyan><></font>-<a name="(line269)"></a> text <font color=Magenta>">"</font>-<a name="(line270)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"PUBLICID"</font> <font color=Cyan><+></font> pubidliteral p-<a name="(line271)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>-<a name="(line272)"></a><a name="nmtoken"></a>nmtoken s <font color=Red>=</font> text s-<a name="(line273)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font>-<a name="(line274)"></a> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan><></font>-<a name="(line275)"></a> text <font color=Magenta>"\""</font>-<a name="(line276)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>-<a name="(line277)"></a> <font color=Red>|</font> containsDoubleQuote evs <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"'"</font>-<a name="(line278)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"\""</font>-<a name="(line279)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> text s-<a name="(line280)"></a><font color=Blue>--ev (EVPERef p e) = peref p</font>-<a name="(line281)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font> <font color=Red>=</font> reference r-<a name="(line282)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>-<a name="(line283)"></a> <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>-<a name="(line284)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"\""</font>-<a name="(line285)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>-<a name="(line286)"></a> <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>-<a name="(line287)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"\""</font>-<a name="(line288)"></a><a name="chardata"></a>chardata s <font color=Red>=</font> <font color=Blue>{-if all isSpace s then empty else-}</font> text s-<a name="(line289)"></a><a name="cdsect"></a>cdsect c <font color=Red>=</font> text <font color=Magenta>"<![CDATA["</font> <font color=Cyan><></font> chardata c <font color=Cyan><></font> text <font color=Magenta>"]]>"</font>-<a name="(line290)"></a>-<a name="(line291)"></a><a name="toWord8"></a><font color=Blue>--toWord8 :: Char -> Word8</font>-<a name="(line292)"></a>toWord8 <font color=Red>=</font> toEnum <font color=Cyan>.</font> fromEnum-<a name="(line293)"></a>-<a name="(line294)"></a><a name="containsDoubleQuote"></a><font color=Blue>----</font>-<a name="(line295)"></a>containsDoubleQuote evs <font color=Red>=</font> any csq evs-<a name="(line296)"></a> <font color=Green><u>where</u></font> csq <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font>-<a name="(line297)"></a> csq <font color=Green><u>_</u></font> <font color=Red>=</font> False+<a name="(line184)"></a>+<a name="(line185)"></a>attribute <font color=Cyan>(</font>n<font color=Cyan>,</font>v<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><></font> text <font color=Magenta>"="</font> <font color=Cyan><></font> attvalue v+<a name="(line186)"></a>content <font color=Cyan>(</font>CElem e <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> element e+<a name="(line187)"></a>content <font color=Cyan>(</font>CString False s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> chardata s+<a name="(line188)"></a>content <font color=Cyan>(</font>CString True s <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> cdsect s+<a name="(line189)"></a>content <font color=Cyan>(</font>CRef r <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> reference r+<a name="(line190)"></a>content <font color=Cyan>(</font>CMisc m <font color=Green><u>_</u></font><font color=Cyan>)</font> <font color=Red>=</font> misc m+<a name="(line191)"></a>+<a name="(line192)"></a><a name="elementdecl"></a>elementdecl <font color=Cyan>(</font>ElementDecl n cs<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ELEMENT"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>+<a name="(line193)"></a> contentspec cs <font color=Cyan><></font> text <font color=Magenta>">"</font>+<a name="(line194)"></a><a name="contentspec"></a>contentspec EMPTY <font color=Red>=</font> text <font color=Magenta>"EMPTY"</font>+<a name="(line195)"></a>contentspec ANY <font color=Red>=</font> text <font color=Magenta>"ANY"</font>+<a name="(line196)"></a>contentspec <font color=Cyan>(</font>Mixed m<font color=Cyan>)</font> <font color=Red>=</font> mixed m+<a name="(line197)"></a>contentspec <font color=Cyan>(</font>ContentSpec c<font color=Cyan>)</font> <font color=Red>=</font> cp c+<a name="(line198)"></a><font color=Blue>--contentspec (ContentPE p cs) = peref p</font>+<a name="(line199)"></a>cp <font color=Cyan>(</font>TagName n m<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><></font> modifier m+<a name="(line200)"></a>cp <font color=Cyan>(</font>Choice cs m<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line201)"></a> modifier m+<a name="(line202)"></a>cp <font color=Cyan>(</font>Seq cs m<font color=Cyan>)</font> <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>","</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map cp cs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line203)"></a> modifier m+<a name="(line204)"></a><a name="modifier"></a><font color=Blue>--cp (CPPE p c) = peref p</font>+<a name="(line205)"></a>modifier None <font color=Red>=</font> empty+<a name="(line206)"></a>modifier Query <font color=Red>=</font> text <font color=Magenta>"?"</font>+<a name="(line207)"></a>modifier Star <font color=Red>=</font> text <font color=Magenta>"*"</font>+<a name="(line208)"></a>modifier Plus <font color=Red>=</font> text <font color=Magenta>"+"</font>+<a name="(line209)"></a><a name="mixed"></a>mixed PCDATA <font color=Red>=</font> text <font color=Magenta>"(#PCDATA)"</font>+<a name="(line210)"></a>mixed <font color=Cyan>(</font>PCDATAplus ns<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"(#PCDATA |"</font> <font color=Cyan><+></font>+<a name="(line211)"></a> hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line212)"></a> text <font color=Magenta>")*"</font>+<a name="(line213)"></a>+<a name="(line214)"></a><a name="attlistdecl"></a>attlistdecl <font color=Cyan>(</font>AttListDecl n ds<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ATTLIST"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>+<a name="(line215)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map attdef ds<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>">"</font>+<a name="(line216)"></a><a name="attdef"></a>attdef <font color=Cyan>(</font>AttDef n t d<font color=Cyan>)</font> <font color=Red>=</font> text n <font color=Cyan><+></font> atttype t <font color=Cyan><+></font> defaultdecl d+<a name="(line217)"></a><a name="atttype"></a>atttype StringType <font color=Red>=</font> text <font color=Magenta>"CDATA"</font>+<a name="(line218)"></a>atttype <font color=Cyan>(</font>TokenizedType t<font color=Cyan>)</font> <font color=Red>=</font> tokenizedtype t+<a name="(line219)"></a>atttype <font color=Cyan>(</font>EnumeratedType t<font color=Cyan>)</font> <font color=Red>=</font> enumeratedtype t+<a name="(line220)"></a><a name="tokenizedtype"></a>tokenizedtype ID <font color=Red>=</font> text <font color=Magenta>"ID"</font>+<a name="(line221)"></a>tokenizedtype IDREF <font color=Red>=</font> text <font color=Magenta>"IDREF"</font>+<a name="(line222)"></a>tokenizedtype IDREFS <font color=Red>=</font> text <font color=Magenta>"IDREFS"</font>+<a name="(line223)"></a>tokenizedtype ENTITY <font color=Red>=</font> text <font color=Magenta>"ENTITY"</font>+<a name="(line224)"></a>tokenizedtype ENTITIES <font color=Red>=</font> text <font color=Magenta>"ENTITIES"</font>+<a name="(line225)"></a>tokenizedtype NMTOKEN <font color=Red>=</font> text <font color=Magenta>"NMTOKEN"</font>+<a name="(line226)"></a>tokenizedtype NMTOKENS <font color=Red>=</font> text <font color=Magenta>"NMTOKENS"</font>+<a name="(line227)"></a><a name="enumeratedtype"></a>enumeratedtype <font color=Cyan>(</font>NotationType n<font color=Cyan>)</font><font color=Red>=</font> notationtype n+<a name="(line228)"></a>enumeratedtype <font color=Cyan>(</font>Enumeration e<font color=Cyan>)</font> <font color=Red>=</font> enumeration e+<a name="(line229)"></a><a name="notationtype"></a>notationtype ns <font color=Red>=</font> text <font color=Magenta>"NOTATION"</font> <font color=Cyan><+></font>+<a name="(line230)"></a> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map text ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line231)"></a><a name="enumeration"></a>enumeration ns <font color=Red>=</font> parens <font color=Cyan>(</font>hcat <font color=Cyan>(</font>intersperse <font color=Cyan>(</font>text <font color=Magenta>"|"</font><font color=Cyan>)</font> <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map nmtoken ns<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line232)"></a><a name="defaultdecl"></a>defaultdecl REQUIRED <font color=Red>=</font> text <font color=Magenta>"#REQUIRED"</font>+<a name="(line233)"></a>defaultdecl IMPLIED <font color=Red>=</font> text <font color=Magenta>"#IMPLIED"</font>+<a name="(line234)"></a>defaultdecl <font color=Cyan>(</font>DefaultTo a f<font color=Cyan>)</font> <font color=Red>=</font> maybe <font color=Cyan>(</font>const <font color=Cyan>(</font>text <font color=Magenta>"#FIXED"</font><font color=Cyan>)</font><font color=Cyan>)</font> f <font color=Cyan><+></font> attvalue a+<a name="(line235)"></a><a name="conditionalsect"></a>conditionalsect <font color=Cyan>(</font>IncludeSect i<font color=Cyan>)</font><font color=Red>=</font> text <font color=Magenta>"<![INCLUDE ["</font> <font color=Cyan><+></font>+<a name="(line236)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl i<font color=Cyan>)</font> <font color=Cyan><+></font> text <font color=Magenta>"]]>"</font>+<a name="(line237)"></a>conditionalsect <font color=Cyan>(</font>IgnoreSect i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<![IGNORE ["</font> <font color=Cyan><+></font>+<a name="(line238)"></a> fsep <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ignoresectcontents i<font color=Cyan>)</font> <font color=Cyan><+></font> text <font color=Magenta>"]]>"</font>+<a name="(line239)"></a><a name="ignore"></a>ignore <font color=Cyan>(</font>Ignore<font color=Cyan>)</font> <font color=Red>=</font> empty+<a name="(line240)"></a><a name="ignoresectcontents"></a>ignoresectcontents <font color=Cyan>(</font>IgnoreSectContents i is<font color=Cyan>)</font>+<a name="(line241)"></a> <font color=Red>=</font> ignore i <font color=Cyan><+></font> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map internal is<font color=Cyan>)</font>+<a name="(line242)"></a> <font color=Green><u>where</u></font> internal <font color=Cyan>(</font>ics<font color=Cyan>,</font>i<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<![["</font> <font color=Cyan><+></font>+<a name="(line243)"></a> ignoresectcontents ics <font color=Cyan><+></font>+<a name="(line244)"></a> text <font color=Magenta>"]]>"</font> <font color=Cyan><+></font> ignore i+<a name="(line245)"></a><a name="reference"></a>reference <font color=Cyan>(</font>RefEntity er<font color=Cyan>)</font> <font color=Red>=</font> entityref er+<a name="(line246)"></a>reference <font color=Cyan>(</font>RefChar cr<font color=Cyan>)</font> <font color=Red>=</font> charref cr+<a name="(line247)"></a><a name="entityref"></a>entityref n <font color=Red>=</font> text <font color=Magenta>"&"</font> <font color=Cyan><></font> text n <font color=Cyan><></font> text <font color=Magenta>";"</font>+<a name="(line248)"></a><a name="charref"></a>charref c <font color=Red>=</font> text <font color=Magenta>"&#"</font> <font color=Cyan><></font> text <font color=Cyan>(</font>show c<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>";"</font>+<a name="(line249)"></a><a name="entitydecl"></a>entitydecl <font color=Cyan>(</font>EntityGEDecl d<font color=Cyan>)</font> <font color=Red>=</font> gedecl d+<a name="(line250)"></a>entitydecl <font color=Cyan>(</font>EntityPEDecl d<font color=Cyan>)</font> <font color=Red>=</font> pedecl d+<a name="(line251)"></a><a name="gedecl"></a>gedecl <font color=Cyan>(</font>GEDecl n ed<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ENTITY"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font> entitydef ed <font color=Cyan><></font>+<a name="(line252)"></a> text <font color=Magenta>">"</font>+<a name="(line253)"></a><a name="pedecl"></a>pedecl <font color=Cyan>(</font>PEDecl n pd<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!ENTITY %"</font> <font color=Cyan><></font> text n <font color=Cyan><+></font> pedef pd <font color=Cyan><></font>+<a name="(line254)"></a> text <font color=Magenta>">"</font>+<a name="(line255)"></a><a name="entitydef"></a>entitydef <font color=Cyan>(</font>DefEntityValue ev<font color=Cyan>)</font> <font color=Red>=</font> entityvalue ev+<a name="(line256)"></a>entitydef <font color=Cyan>(</font>DefExternalID i nd<font color=Cyan>)</font> <font color=Red>=</font> externalid i <font color=Cyan><+></font> maybe ndatadecl nd+<a name="(line257)"></a><a name="pedef"></a>pedef <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font> <font color=Red>=</font> entityvalue ev+<a name="(line258)"></a>pedef <font color=Cyan>(</font>PEDefExternalID eid<font color=Cyan>)</font> <font color=Red>=</font> externalid eid+<a name="(line259)"></a><a name="externalid"></a>externalid <font color=Cyan>(</font>SYSTEM sl<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"SYSTEM"</font> <font color=Cyan><+></font> systemliteral sl+<a name="(line260)"></a>externalid <font color=Cyan>(</font>PUBLIC i sl<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"PUBLIC"</font> <font color=Cyan><+></font> pubidliteral i <font color=Cyan><+></font>+<a name="(line261)"></a> systemliteral sl+<a name="(line262)"></a><a name="ndatadecl"></a>ndatadecl <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"NDATA"</font> <font color=Cyan><+></font> text n+<a name="(line263)"></a><a name="textdecl"></a>textdecl <font color=Cyan>(</font>TextDecl vi ed<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<?xml"</font> <font color=Cyan><+></font> maybe text vi <font color=Cyan><+></font>+<a name="(line264)"></a> encodingdecl ed <font color=Cyan><></font> text <font color=Magenta>"?>"</font>+<a name="(line265)"></a><a name="extparsedent"></a>extparsedent <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font><font color=Red>=</font> maybe textdecl t <font color=Cyan><+></font> content c+<a name="(line266)"></a><a name="extpe"></a>extpe <font color=Cyan>(</font>ExtPE t esd<font color=Cyan>)</font> <font color=Red>=</font> maybe textdecl t <font color=Cyan><+></font>+<a name="(line267)"></a> vcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map extsubsetdecl esd<font color=Cyan>)</font>+<a name="(line268)"></a><a name="notationdecl"></a>notationdecl <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"<!NOTATION"</font> <font color=Cyan><+></font> text n <font color=Cyan><+></font>+<a name="(line269)"></a> either externalid publicid e <font color=Cyan><></font>+<a name="(line270)"></a> text <font color=Magenta>">"</font>+<a name="(line271)"></a><a name="publicid"></a>publicid <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"PUBLICID"</font> <font color=Cyan><+></font> pubidliteral p+<a name="(line272)"></a><a name="encodingdecl"></a>encodingdecl <font color=Cyan>(</font>EncodingDecl s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"encoding='"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>+<a name="(line273)"></a><a name="nmtoken"></a>nmtoken s <font color=Red>=</font> text s+<a name="(line274)"></a><a name="attvalue"></a>attvalue <font color=Cyan>(</font>AttValue esr<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font>+<a name="(line275)"></a> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map <font color=Cyan>(</font>either text reference<font color=Cyan>)</font> esr<font color=Cyan>)</font> <font color=Cyan><></font>+<a name="(line276)"></a> text <font color=Magenta>"\""</font>+<a name="(line277)"></a><a name="entityvalue"></a>entityvalue <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font>+<a name="(line278)"></a> <font color=Red>|</font> containsDoubleQuote evs <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"'"</font>+<a name="(line279)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> hcat <font color=Cyan>(</font>Prelude<font color=Cyan>.</font>map ev evs<font color=Cyan>)</font> <font color=Cyan><></font> text <font color=Magenta>"\""</font>+<a name="(line280)"></a><a name="ev"></a>ev <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> text s+<a name="(line281)"></a><font color=Blue>--ev (EVPERef p e) = peref p</font>+<a name="(line282)"></a>ev <font color=Cyan>(</font>EVRef r<font color=Cyan>)</font> <font color=Red>=</font> reference r+<a name="(line283)"></a><a name="pubidliteral"></a>pubidliteral <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font>+<a name="(line284)"></a> <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>+<a name="(line285)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"\""</font>+<a name="(line286)"></a><a name="systemliteral"></a>systemliteral <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font>+<a name="(line287)"></a> <font color=Red>|</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font> <font color=Red>=</font> text <font color=Magenta>"'"</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"'"</font>+<a name="(line288)"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> text <font color=Magenta>"\""</font> <font color=Cyan><></font> text s <font color=Cyan><></font> text <font color=Magenta>"\""</font>+<a name="(line289)"></a><a name="chardata"></a>chardata s <font color=Red>=</font> <font color=Blue>{-if all isSpace s then empty else-}</font> text s+<a name="(line290)"></a><a name="cdsect"></a>cdsect c <font color=Red>=</font> text <font color=Magenta>"<![CDATA["</font> <font color=Cyan><></font> chardata c <font color=Cyan><></font> text <font color=Magenta>"]]>"</font>+<a name="(line291)"></a>+<a name="(line292)"></a><a name="toWord8"></a><font color=Blue>--toWord8 :: Char -> Word8</font>+<a name="(line293)"></a>toWord8 <font color=Red>=</font> toEnum <font color=Cyan>.</font> fromEnum+<a name="(line294)"></a>+<a name="(line295)"></a><a name="containsDoubleQuote"></a><font color=Blue>----</font>+<a name="(line296)"></a>containsDoubleQuote evs <font color=Red>=</font> any csq evs+<a name="(line297)"></a> <font color=Green><u>where</u></font> csq <font color=Cyan>(</font>EVString s<font color=Cyan>)</font> <font color=Red>=</font> toWord8 <font color=Magenta>'"'</font> <font color=Cyan>`elem`</font> <font color=Cyan>(</font>pack s<font color=Cyan>)</font>+<a name="(line298)"></a> csq <font color=Green><u>_</u></font> <font color=Red>=</font> False </pre> </html>
docs/HaXml/src/Text/XML/HaXml/Parse.html view
@@ -731,153 +731,157 @@ <a name="(line729)"></a> <a name="(line730)"></a><a name="pereference"></a>pereference <font color=Red>::</font> XParser PEReference <a name="(line731)"></a>pereference <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line732)"></a> bracket <font color=Cyan>(</font>tok TokPercent<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokSemi<font color=Cyan>)</font> nmtoken-<a name="(line733)"></a>-<a name="(line734)"></a><a name="entitydecl"></a>entitydecl <font color=Red>::</font> XParser EntityDecl-<a name="(line735)"></a>entitydecl <font color=Red>=</font>-<a name="(line736)"></a> <font color=Cyan>(</font> gedecl <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EntityGEDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>-<a name="(line737)"></a> <font color=Cyan>(</font> pedecl <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EntityPEDecl<font color=Cyan>)</font>-<a name="(line738)"></a>-<a name="(line739)"></a><a name="gedecl"></a>gedecl <font color=Red>::</font> XParser GEDecl-<a name="(line740)"></a>gedecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line741)"></a> tok TokSpecialOpen-<a name="(line742)"></a> tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>-<a name="(line743)"></a> n <font color=Red><-</font> name-<a name="(line744)"></a> e <font color=Red><-</font> entitydef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in general entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>-<a name="(line745)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating G ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>-<a name="(line746)"></a> stUpdate <font color=Cyan>(</font>addGE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added GE defn &"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>-<a name="(line747)"></a> return <font color=Cyan>(</font>GEDecl n e<font color=Cyan>)</font>-<a name="(line748)"></a>-<a name="(line749)"></a><a name="pedecl"></a>pedecl <font color=Red>::</font> XParser PEDecl-<a name="(line750)"></a>pedecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line751)"></a> tok TokSpecialOpen-<a name="(line752)"></a> tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>-<a name="(line753)"></a> tok TokPercent-<a name="(line754)"></a> n <font color=Red><-</font> name-<a name="(line755)"></a> e <font color=Red><-</font> pedef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in parameter entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>-<a name="(line756)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating P ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>-<a name="(line757)"></a> stUpdate <font color=Cyan>(</font>addPE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added PE defn %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";\n"</font><font color=Cyan>++</font>show e<font color=Cyan>)</font>-<a name="(line758)"></a> return <font color=Cyan>(</font>PEDecl n e<font color=Cyan>)</font>-<a name="(line759)"></a>-<a name="(line760)"></a><a name="entitydef"></a>entitydef <font color=Red>::</font> XParser EntityDef-<a name="(line761)"></a>entitydef <font color=Red>=</font>-<a name="(line762)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>>>=</font> return <font color=Cyan>.</font> DefEntityValue<font color=Cyan>)</font>-<a name="(line763)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"external"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> eid <font color=Red><-</font> externalid-<a name="(line764)"></a> ndd <font color=Red><-</font> maybe ndatadecl-<a name="(line765)"></a> return <font color=Cyan>(</font>DefExternalID eid ndd<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line766)"></a> <font color=Red>]</font>-<a name="(line767)"></a>-<a name="(line768)"></a><a name="pedef"></a>pedef <font color=Red>::</font> XParser PEDef-<a name="(line769)"></a>pedef <font color=Red>=</font>-<a name="(line770)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>>>=</font> return <font color=Cyan>.</font> PEDefEntityValue<font color=Cyan>)</font>-<a name="(line771)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"externalid"</font><font color=Cyan>,</font> externalid <font color=Cyan>>>=</font> return <font color=Cyan>.</font> PEDefExternalID<font color=Cyan>)</font>-<a name="(line772)"></a> <font color=Red>]</font>-<a name="(line773)"></a>-<a name="(line774)"></a><a name="externalid"></a>externalid <font color=Red>::</font> XParser ExternalID-<a name="(line775)"></a>externalid <font color=Red>=</font>-<a name="(line776)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"SYSTEM"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font>-<a name="(line777)"></a> s <font color=Red><-</font> systemliteral-<a name="(line778)"></a> return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font> <font color=Cyan>)</font>-<a name="(line779)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"PUBLIC"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>-<a name="(line780)"></a> p <font color=Red><-</font> pubidliteral+<a name="(line732)"></a><font color=Blue>-- bracket (tok TokPercent) (tok TokSemi) nmtoken</font>+<a name="(line733)"></a> tok TokPercent+<a name="(line734)"></a> p <font color=Red><-</font> nmtoken+<a name="(line735)"></a> tok TokSemi+<a name="(line736)"></a> return p+<a name="(line737)"></a>+<a name="(line738)"></a><a name="entitydecl"></a>entitydecl <font color=Red>::</font> XParser EntityDecl+<a name="(line739)"></a>entitydecl <font color=Red>=</font>+<a name="(line740)"></a> <font color=Cyan>(</font> gedecl <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EntityGEDecl<font color=Cyan>)</font> <font color=Cyan>`onFail`</font>+<a name="(line741)"></a> <font color=Cyan>(</font> pedecl <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EntityPEDecl<font color=Cyan>)</font>+<a name="(line742)"></a>+<a name="(line743)"></a><a name="gedecl"></a>gedecl <font color=Red>::</font> XParser GEDecl+<a name="(line744)"></a>gedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line745)"></a> tok TokSpecialOpen+<a name="(line746)"></a> tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line747)"></a> n <font color=Red><-</font> name+<a name="(line748)"></a> e <font color=Red><-</font> entitydef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in general entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line749)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating G ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line750)"></a> stUpdate <font color=Cyan>(</font>addGE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added GE defn &"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";"</font><font color=Cyan>)</font>+<a name="(line751)"></a> return <font color=Cyan>(</font>GEDecl n e<font color=Cyan>)</font>+<a name="(line752)"></a>+<a name="(line753)"></a><a name="pedecl"></a>pedecl <font color=Red>::</font> XParser PEDecl+<a name="(line754)"></a>pedecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line755)"></a> tok TokSpecialOpen+<a name="(line756)"></a> tok <font color=Cyan>(</font>TokSpecial ENTITYx<font color=Cyan>)</font>+<a name="(line757)"></a> tok TokPercent+<a name="(line758)"></a> n <font color=Red><-</font> name+<a name="(line759)"></a> e <font color=Red><-</font> pedef <font color=Cyan>`adjustErrBad`</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"in parameter entity defn "</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>",\n"</font><font color=Cyan>)</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line760)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating P ENTITY decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line761)"></a> stUpdate <font color=Cyan>(</font>addPE n e<font color=Cyan>)</font> <font color=Cyan>`debug`</font> <font color=Cyan>(</font><font color=Magenta>"added PE defn %"</font><font color=Cyan>++</font>n<font color=Cyan>++</font><font color=Magenta>";\n"</font><font color=Cyan>++</font>show e<font color=Cyan>)</font>+<a name="(line762)"></a> return <font color=Cyan>(</font>PEDecl n e<font color=Cyan>)</font>+<a name="(line763)"></a>+<a name="(line764)"></a><a name="entitydef"></a>entitydef <font color=Red>::</font> XParser EntityDef+<a name="(line765)"></a>entitydef <font color=Red>=</font>+<a name="(line766)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>>>=</font> return <font color=Cyan>.</font> DefEntityValue<font color=Cyan>)</font>+<a name="(line767)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"external"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> eid <font color=Red><-</font> externalid+<a name="(line768)"></a> ndd <font color=Red><-</font> maybe ndatadecl+<a name="(line769)"></a> return <font color=Cyan>(</font>DefExternalID eid ndd<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line770)"></a> <font color=Red>]</font>+<a name="(line771)"></a>+<a name="(line772)"></a><a name="pedef"></a>pedef <font color=Red>::</font> XParser PEDef+<a name="(line773)"></a>pedef <font color=Red>=</font>+<a name="(line774)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"entityvalue"</font><font color=Cyan>,</font> entityvalue <font color=Cyan>>>=</font> return <font color=Cyan>.</font> PEDefEntityValue<font color=Cyan>)</font>+<a name="(line775)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"externalid"</font><font color=Cyan>,</font> externalid <font color=Cyan>>>=</font> return <font color=Cyan>.</font> PEDefExternalID<font color=Cyan>)</font>+<a name="(line776)"></a> <font color=Red>]</font>+<a name="(line777)"></a>+<a name="(line778)"></a><a name="externalid"></a>externalid <font color=Red>::</font> XParser ExternalID+<a name="(line779)"></a>externalid <font color=Red>=</font>+<a name="(line780)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"SYSTEM"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"SYSTEM"</font> <a name="(line781)"></a> s <font color=Red><-</font> systemliteral-<a name="(line782)"></a> return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font> <font color=Cyan>)</font>-<a name="(line783)"></a> <font color=Red>]</font>-<a name="(line784)"></a> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an external id,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>-<a name="(line785)"></a>-<a name="(line786)"></a><a name="ndatadecl"></a>ndatadecl <font color=Red>::</font> XParser NDataDecl-<a name="(line787)"></a>ndatadecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line788)"></a> word <font color=Magenta>"NDATA"</font>-<a name="(line789)"></a> n <font color=Red><-</font> name-<a name="(line790)"></a> return <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>-<a name="(line791)"></a>-<a name="(line792)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> XParser TextDecl-<a name="(line793)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line794)"></a> tok TokPIOpen-<a name="(line795)"></a> <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>-<a name="(line796)"></a> v <font color=Red><-</font> maybe versioninfo-<a name="(line797)"></a> e <font color=Red><-</font> encodingdecl-<a name="(line798)"></a> tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?> terminating text decl"</font>-<a name="(line799)"></a> return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>-<a name="(line800)"></a>-<a name="(line801)"></a><a name="extparsedent"></a>extparsedent <font color=Red>::</font> XParser <font color=Cyan>(</font>ExtParsedEnt Posn<font color=Cyan>)</font>-<a name="(line802)"></a>extparsedent <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line803)"></a> t <font color=Red><-</font> maybe textdecl-<a name="(line804)"></a> c <font color=Red><-</font> content-<a name="(line805)"></a> return <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font>-<a name="(line806)"></a>-<a name="(line807)"></a><a name="extpe"></a>extpe <font color=Red>::</font> XParser ExtPE-<a name="(line808)"></a>extpe <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line809)"></a> t <font color=Red><-</font> maybe textdecl-<a name="(line810)"></a> e <font color=Red><-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>-<a name="(line811)"></a> return <font color=Cyan>(</font>ExtPE t e<font color=Cyan>)</font>-<a name="(line812)"></a>-<a name="(line813)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> XParser EncodingDecl-<a name="(line814)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line815)"></a> <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>-<a name="(line816)"></a> tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>-<a name="(line817)"></a> f <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext-<a name="(line818)"></a> return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>-<a name="(line819)"></a>-<a name="(line820)"></a><a name="notationdecl"></a>notationdecl <font color=Red>::</font> XParser NotationDecl-<a name="(line821)"></a>notationdecl <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line822)"></a> tok TokSpecialOpen-<a name="(line823)"></a> tok <font color=Cyan>(</font>TokSpecial NOTATIONx<font color=Cyan>)</font>-<a name="(line824)"></a> n <font color=Red><-</font> name-<a name="(line825)"></a> e <font color=Red><-</font> either externalid publicid-<a name="(line826)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating NOTATION decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>-<a name="(line827)"></a> return <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>-<a name="(line828)"></a>-<a name="(line829)"></a><a name="publicid"></a>publicid <font color=Red>::</font> XParser PublicID-<a name="(line830)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line831)"></a> word <font color=Magenta>"PUBLIC"</font>-<a name="(line832)"></a> p <font color=Red><-</font> pubidliteral-<a name="(line833)"></a> return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>-<a name="(line834)"></a>-<a name="(line835)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> XParser EntityValue-<a name="(line836)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line837)"></a> <font color=Blue>-- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))</font>-<a name="(line838)"></a> tok TokQuote-<a name="(line839)"></a> pn <font color=Red><-</font> posn-<a name="(line840)"></a> evs <font color=Red><-</font> many ev-<a name="(line841)"></a> tok TokQuote <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected quote to terminate entityvalue"</font>-<a name="(line842)"></a> <font color=Blue>-- quoted text must be rescanned for possible PERefs</font>-<a name="(line843)"></a> st <font color=Red><-</font> stGet-<a name="(line844)"></a> Prelude<font color=Cyan>.</font>either failBad <font color=Cyan>(</font>return <font color=Cyan>.</font> EntityValue<font color=Cyan>)</font> <font color=Cyan>.</font> fst3 <font color=Cyan>$</font>-<a name="(line845)"></a> <font color=Cyan>(</font>runParser <font color=Cyan>(</font>many ev<font color=Cyan>)</font> st-<a name="(line846)"></a> <font color=Cyan>(</font>reLexEntityValue <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-></font> stringify <font color=Cyan>(</font>lookupPE s st<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line847)"></a> pn-<a name="(line848)"></a> <font color=Cyan>(</font>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line849)"></a> <font color=Green><u>where</u></font>-<a name="(line850)"></a> stringify <font color=Cyan>(</font>Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> Just <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>-<a name="(line851)"></a> stringify <font color=Green><u>_</u></font> <font color=Red>=</font> Nothing-<a name="(line852)"></a>-<a name="(line853)"></a><a name="ev"></a>ev <font color=Red>::</font> XParser EV-<a name="(line854)"></a>ev <font color=Red>=</font>-<a name="(line855)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"string"</font><font color=Cyan>,</font> <font color=Cyan>(</font>string<font color=Cyan>`onFail`</font>freetext<font color=Cyan>)</font> <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font>-<a name="(line856)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>-<a name="(line857)"></a> <font color=Red>]</font>-<a name="(line858)"></a> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for entity value,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>-<a name="(line859)"></a>-<a name="(line860)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> XParser AttValue-<a name="(line861)"></a>attvalue <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line862)"></a> avs <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>-<a name="(line863)"></a> <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="(line864)"></a> return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font>-<a name="(line865)"></a>-<a name="(line866)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> XParser SystemLiteral-<a name="(line867)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line868)"></a> s <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext-<a name="(line869)"></a> return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font> <font color=Blue>-- note: refs &...; not permitted</font>-<a name="(line870)"></a>-<a name="(line871)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> XParser PubidLiteral-<a name="(line872)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="(line873)"></a> s <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext-<a name="(line874)"></a> return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font> <font color=Blue>-- note: freetext is too liberal here</font>-<a name="(line875)"></a>-<a name="(line876)"></a><a name="chardata"></a><font color=Blue>-- | Return parsed freetext (i.e. until the next markup)</font>-<a name="(line877)"></a>chardata <font color=Red>::</font> XParser CharData-<a name="(line878)"></a>chardata <font color=Red>=</font> freetext+<a name="(line782)"></a> return <font color=Cyan>(</font>SYSTEM s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line783)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"PUBLIC"</font><font color=Cyan>,</font> <font color=Green><u>do</u></font> word <font color=Magenta>"PUBLIC"</font>+<a name="(line784)"></a> p <font color=Red><-</font> pubidliteral+<a name="(line785)"></a> s <font color=Red><-</font> systemliteral+<a name="(line786)"></a> return <font color=Cyan>(</font>PUBLIC p s<font color=Cyan>)</font> <font color=Cyan>)</font>+<a name="(line787)"></a> <font color=Red>]</font>+<a name="(line788)"></a> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for an external id,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line789)"></a>+<a name="(line790)"></a><a name="ndatadecl"></a>ndatadecl <font color=Red>::</font> XParser NDataDecl+<a name="(line791)"></a>ndatadecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line792)"></a> word <font color=Magenta>"NDATA"</font>+<a name="(line793)"></a> n <font color=Red><-</font> name+<a name="(line794)"></a> return <font color=Cyan>(</font>NDATA n<font color=Cyan>)</font>+<a name="(line795)"></a>+<a name="(line796)"></a><a name="textdecl"></a>textdecl <font color=Red>::</font> XParser TextDecl+<a name="(line797)"></a>textdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line798)"></a> tok TokPIOpen+<a name="(line799)"></a> <font color=Cyan>(</font>word <font color=Magenta>"xml"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"XML"</font><font color=Cyan>)</font>+<a name="(line800)"></a> v <font color=Red><-</font> maybe versioninfo+<a name="(line801)"></a> e <font color=Red><-</font> encodingdecl+<a name="(line802)"></a> tok TokPIClose <font color=Cyan>`onFail`</font> failP <font color=Magenta>"expected ?> terminating text decl"</font>+<a name="(line803)"></a> return <font color=Cyan>(</font>TextDecl v e<font color=Cyan>)</font>+<a name="(line804)"></a>+<a name="(line805)"></a><a name="extparsedent"></a>extparsedent <font color=Red>::</font> XParser <font color=Cyan>(</font>ExtParsedEnt Posn<font color=Cyan>)</font>+<a name="(line806)"></a>extparsedent <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line807)"></a> t <font color=Red><-</font> maybe textdecl+<a name="(line808)"></a> c <font color=Red><-</font> content+<a name="(line809)"></a> return <font color=Cyan>(</font>ExtParsedEnt t c<font color=Cyan>)</font>+<a name="(line810)"></a>+<a name="(line811)"></a><a name="extpe"></a>extpe <font color=Red>::</font> XParser ExtPE+<a name="(line812)"></a>extpe <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line813)"></a> t <font color=Red><-</font> maybe textdecl+<a name="(line814)"></a> e <font color=Red><-</font> many <font color=Cyan>(</font>peRef extsubsetdecl<font color=Cyan>)</font>+<a name="(line815)"></a> return <font color=Cyan>(</font>ExtPE t e<font color=Cyan>)</font>+<a name="(line816)"></a>+<a name="(line817)"></a><a name="encodingdecl"></a>encodingdecl <font color=Red>::</font> XParser EncodingDecl+<a name="(line818)"></a>encodingdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line819)"></a> <font color=Cyan>(</font>word <font color=Magenta>"encoding"</font> <font color=Cyan>`onFail`</font> word <font color=Magenta>"ENCODING"</font><font color=Cyan>)</font>+<a name="(line820)"></a> tok TokEqual <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected = in 'encoding' decl"</font>+<a name="(line821)"></a> f <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line822)"></a> return <font color=Cyan>(</font>EncodingDecl f<font color=Cyan>)</font>+<a name="(line823)"></a>+<a name="(line824)"></a><a name="notationdecl"></a>notationdecl <font color=Red>::</font> XParser NotationDecl+<a name="(line825)"></a>notationdecl <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line826)"></a> tok TokSpecialOpen+<a name="(line827)"></a> tok <font color=Cyan>(</font>TokSpecial NOTATIONx<font color=Cyan>)</font>+<a name="(line828)"></a> n <font color=Red><-</font> name+<a name="(line829)"></a> e <font color=Red><-</font> either externalid publicid+<a name="(line830)"></a> tok TokAnyClose <font color=Cyan>`onFail`</font> failBadP <font color=Cyan>(</font><font color=Magenta>"expected > terminating NOTATION decl "</font><font color=Cyan>++</font>n<font color=Cyan>)</font>+<a name="(line831)"></a> return <font color=Cyan>(</font>NOTATION n e<font color=Cyan>)</font>+<a name="(line832)"></a>+<a name="(line833)"></a><a name="publicid"></a>publicid <font color=Red>::</font> XParser PublicID+<a name="(line834)"></a>publicid <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line835)"></a> word <font color=Magenta>"PUBLIC"</font>+<a name="(line836)"></a> p <font color=Red><-</font> pubidliteral+<a name="(line837)"></a> return <font color=Cyan>(</font>PUBLICID p<font color=Cyan>)</font>+<a name="(line838)"></a>+<a name="(line839)"></a><a name="entityvalue"></a>entityvalue <font color=Red>::</font> XParser EntityValue+<a name="(line840)"></a>entityvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line841)"></a> <font color=Blue>-- evs <- bracket (tok TokQuote) (tok TokQuote) (many (peRef ev))</font>+<a name="(line842)"></a> tok TokQuote+<a name="(line843)"></a> pn <font color=Red><-</font> posn+<a name="(line844)"></a> evs <font color=Red><-</font> many ev+<a name="(line845)"></a> tok TokQuote <font color=Cyan>`onFail`</font> failBadP <font color=Magenta>"expected quote to terminate entityvalue"</font>+<a name="(line846)"></a> <font color=Blue>-- quoted text must be rescanned for possible PERefs</font>+<a name="(line847)"></a> st <font color=Red><-</font> stGet+<a name="(line848)"></a> Prelude<font color=Cyan>.</font>either failBad <font color=Cyan>(</font>return <font color=Cyan>.</font> EntityValue<font color=Cyan>)</font> <font color=Cyan>.</font> fst3 <font color=Cyan>$</font>+<a name="(line849)"></a> <font color=Cyan>(</font>runParser <font color=Cyan>(</font>many ev<font color=Cyan>)</font> st+<a name="(line850)"></a> <font color=Cyan>(</font>reLexEntityValue <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-></font> stringify <font color=Cyan>(</font>lookupPE s st<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line851)"></a> pn+<a name="(line852)"></a> <font color=Cyan>(</font>flattenEV <font color=Cyan>(</font>EntityValue evs<font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line853)"></a> <font color=Green><u>where</u></font>+<a name="(line854)"></a> stringify <font color=Cyan>(</font>Just <font color=Cyan>(</font>PEDefEntityValue ev<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Red>=</font> Just <font color=Cyan>(</font>flattenEV ev<font color=Cyan>)</font>+<a name="(line855)"></a> stringify <font color=Green><u>_</u></font> <font color=Red>=</font> Nothing+<a name="(line856)"></a>+<a name="(line857)"></a><a name="ev"></a>ev <font color=Red>::</font> XParser EV+<a name="(line858)"></a>ev <font color=Red>=</font>+<a name="(line859)"></a> oneOf' <font color=Red>[</font> <font color=Cyan>(</font><font color=Magenta>"string"</font><font color=Cyan>,</font> <font color=Cyan>(</font>string<font color=Cyan>`onFail`</font>freetext<font color=Cyan>)</font> <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EVString<font color=Cyan>)</font>+<a name="(line860)"></a> <font color=Cyan>,</font> <font color=Cyan>(</font><font color=Magenta>"reference"</font><font color=Cyan>,</font> reference <font color=Cyan>>>=</font> return <font color=Cyan>.</font> EVRef<font color=Cyan>)</font>+<a name="(line861)"></a> <font color=Red>]</font>+<a name="(line862)"></a> <font color=Cyan>`adjustErr`</font> <font color=Cyan>(</font><font color=Magenta>"looking for entity value,\n"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="(line863)"></a>+<a name="(line864)"></a><a name="attvalue"></a>attvalue <font color=Red>::</font> XParser AttValue+<a name="(line865)"></a>attvalue <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line866)"></a> avs <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font>+<a name="(line867)"></a> <font color=Cyan>(</font>many <font color=Cyan>(</font>either freetext reference<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="(line868)"></a> return <font color=Cyan>(</font>AttValue avs<font color=Cyan>)</font>+<a name="(line869)"></a>+<a name="(line870)"></a><a name="systemliteral"></a>systemliteral <font color=Red>::</font> XParser SystemLiteral+<a name="(line871)"></a>systemliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line872)"></a> s <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line873)"></a> return <font color=Cyan>(</font>SystemLiteral s<font color=Cyan>)</font> <font color=Blue>-- note: refs &...; not permitted</font>+<a name="(line874)"></a>+<a name="(line875)"></a><a name="pubidliteral"></a>pubidliteral <font color=Red>::</font> XParser PubidLiteral+<a name="(line876)"></a>pubidliteral <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="(line877)"></a> s <font color=Red><-</font> bracket <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> <font color=Cyan>(</font>tok TokQuote<font color=Cyan>)</font> freetext+<a name="(line878)"></a> return <font color=Cyan>(</font>PubidLiteral s<font color=Cyan>)</font> <font color=Blue>-- note: freetext is too liberal here</font> <a name="(line879)"></a>+<a name="(line880)"></a><a name="chardata"></a><font color=Blue>-- | Return parsed freetext (i.e. until the next markup)</font>+<a name="(line881)"></a>chardata <font color=Red>::</font> XParser CharData+<a name="(line882)"></a>chardata <font color=Red>=</font> freetext+<a name="(line883)"></a> </pre> </html>
docs/changelog.html view
@@ -13,6 +13,16 @@ </center> <hr> +<h3>Changes in 1.19</h3>+<p>+<ul>+<li> Improved the lazy XML parsing, and fixed some space leaks+ in the XtractLazy tool.+<li> Version 1.19.2 updates the Cabal file to enable HaXml to build with both+ ghc-6.6.x and ghc-6.8.x.++</ul>+ <h3>Changes in 1.18</h3> <p> <ul>
docs/index.html view
@@ -132,10 +132,10 @@ <center><h3><a name="download">Downloads</a></h3></center> <p> <b>Development versions:</b><br>-HaXml-1.19.1, release date 2007.11.01<br>+HaXml-1.19.2, release date 2008.01.14<br> By HTTP:-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.1.tar.gz">.tar.gz</a>,-<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.1.zip">.zip</a>.+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.2.tar.gz">.tar.gz</a>,+<a href="http://www.cs.york.ac.uk/fp/HaXml-devel/HaXml-1.19.2.zip">.zip</a>. <br> By FTP: <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/">@@ -149,7 +149,7 @@ <p> <b>Older versions:</b><br>-Stable version: for 1.13.2 see+Stable version: for 1.13.3 see <a href="http://haskell.org/HaXml/"> http://haskell.org/HaXml/</a> <br>@@ -202,7 +202,9 @@ <center><h3><a name="news">Recent news</a></h3></center> <p>-Version 1.19.1 fixes a build error in 1.19.+Version 1.19.2 updates the Cabal file to enable HaXml to build with both+ghc-6.6.x and ghc-6.8.x.<br>+Version 1.19.1 fixes a build error in 1.19.<br> Version 1.19 improved the lazy XML parsing, and fixed some space leaks in the XtractLazy tool.
src/Makefile view
@@ -1,5 +1,5 @@ SOFTWARE = HaXml-VERSION = 1.19.1+VERSION = 1.19.2 LIBSRCS = \ Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs \
src/Text/XML/HaXml.hs view
@@ -32,5 +32,5 @@ -- | The version of the library. version :: String-version = show VERSION+version = "VERSION" -- expect cpp to fill in value
src/Text/XML/HaXml/ByteStringPP.hs view
@@ -20,11 +20,12 @@ , cp ) where -import Prelude hiding (maybe,either,elem)+import Prelude hiding (maybe,either,elem,concat) import Maybe hiding (maybe) import Data.List (intersperse) -import Data.ByteString.Lazy hiding (pack,map,head,any,singleton)-import Data.ByteString.Lazy.Char8 (pack, singleton, join)+--import Data.ByteString.Lazy hiding (pack,map,head,any,singleton,intersperse,join)+import Data.ByteString.Lazy.Char8 (ByteString(), concat, pack, singleton, join+ , append, elem, empty) import Text.XML.HaXml.Types either f g (Left x) = f x@@ -57,7 +58,7 @@ ($$) b1 b2 = b1 <> pack "\n" <> b2 ($+$) = ($$) -hcat = Data.ByteString.Lazy.concat +hcat = Data.ByteString.Lazy.Char8.concat hsep = Data.ByteString.Lazy.Char8.join (singleton ' ') vcat = Data.ByteString.Lazy.Char8.join (singleton '\n') cat = hcat
src/Text/XML/HaXml/Parse.hs view
@@ -729,7 +729,11 @@ pereference :: XParser PEReference pereference = do- bracket (tok TokPercent) (tok TokSemi) nmtoken+-- bracket (tok TokPercent) (tok TokSemi) nmtoken+ tok TokPercent+ p <- nmtoken+ tok TokSemi+ return p entitydecl :: XParser EntityDecl entitydecl =