xmlhtml-0.2.3.4/0000755000000000000000000000000012446622357011544 5ustar0000000000000000xmlhtml-0.2.3.4/.ghci0000644000000000000000000000005712446622357012461 0ustar0000000000000000:set -XOverloadedStrings :set -Wall :set -isrc xmlhtml-0.2.3.4/xmlhtml.cabal0000644000000000000000000013053712446622357014226 0ustar0000000000000000Name: xmlhtml Version: 0.2.3.4 Synopsis: XML parser and renderer with HTML 5 quirks mode Description: Contains renderers and parsers for both XML and HTML 5 document fragments, which share data structures so that it's easy to work with both. Document fragments are bits of documents, which are not constrained by some of the high-level structure rules (in particular, they may contain more than one root element). . Note that this is not a compliant HTML 5 parser. Rather, it is a parser for HTML 5 compliant documents. It does not implement the HTML 5 parsing algorithm, and should generally be expected to perform correctly only on documents that you trust to conform to HTML 5. This is not a suitable library for implementing web crawlers or other software that will be exposed to documents from outside sources. The result is also not the HTML 5 node structure, but rather something closer to the physical structure. For example, omitted start tags are not inserted (and so, their corresponding end tags must also be omitted). License: BSD3 License-file: LICENSE Author: Chris Smith Maintainer: Chris Smith Category: Text Build-type: Simple Cabal-version: >=1.6 Extra-source-files: .ghci, extra/haddock.css, extra/hscolour.css, extra/logo.gif, haddock.sh, README, test/runTestsAndCoverage.sh, test/xmlhtml-testsuite.cabal, test/suite/TestSuite.hs test/suite/Text/XmlHtml/CursorTests.hs, test/suite/Text/XmlHtml/DocumentTests.hs, test/suite/Text/XmlHtml/OASISTest.hs, test/suite/Text/XmlHtml/TestCommon.hs, test/suite/Text/XmlHtml/Tests.hs, test/resources/ibm/ibm_oasis_invalid.xml, test/resources/ibm/ibm_oasis_not-wf.xml, test/resources/ibm/ibm_oasis_readme.txt, test/resources/ibm/ibm_oasis_valid.xml, test/resources/ibm/invalid/P28/ibm28i01.xml, test/resources/ibm/invalid/P28/out/ibm28i01.xml, test/resources/ibm/invalid/P29/ibm29i01.dtd, test/resources/ibm/invalid/P29/ibm29i01.xml, test/resources/ibm/invalid/P29/ibm29i01.xml.incorrect, test/resources/ibm/invalid/P29/out/ibm29i01.xml, test/resources/ibm/invalid/P32/ibm32i01.dtd, test/resources/ibm/invalid/P32/ibm32i01.xml, test/resources/ibm/invalid/P32/ibm32i02.dtd, test/resources/ibm/invalid/P32/ibm32i02.xml, test/resources/ibm/invalid/P32/ibm32i02.xml.incorrect, test/resources/ibm/invalid/P32/ibm32i03.dtd, test/resources/ibm/invalid/P32/ibm32i03.xml, test/resources/ibm/invalid/P32/ibm32i04.dtd, test/resources/ibm/invalid/P32/ibm32i04.xml, test/resources/ibm/invalid/P32/out/ibm32i01.xml, test/resources/ibm/invalid/P32/out/ibm32i02.xml, test/resources/ibm/invalid/P32/out/ibm32i03.xml, test/resources/ibm/invalid/P32/out/ibm32i04.xml, test/resources/ibm/invalid/P39/ibm39i01.xml, test/resources/ibm/invalid/P39/ibm39i02.xml, test/resources/ibm/invalid/P39/ibm39i03.xml, test/resources/ibm/invalid/P39/ibm39i04.xml, test/resources/ibm/invalid/P39/out/ibm39i01.xml, test/resources/ibm/invalid/P39/out/ibm39i02.xml, test/resources/ibm/invalid/P39/out/ibm39i03.xml, test/resources/ibm/invalid/P39/out/ibm39i04.xml, test/resources/ibm/invalid/P41/ibm41i01.xml, test/resources/ibm/invalid/P41/ibm41i02.xml, test/resources/ibm/invalid/P41/out/ibm41i01.xml, test/resources/ibm/invalid/P41/out/ibm41i02.xml, test/resources/ibm/invalid/P45/ibm45i01.xml, test/resources/ibm/invalid/P45/out/ibm45i01.xml, test/resources/ibm/invalid/P49/ibm49i01.dtd, test/resources/ibm/invalid/P49/ibm49i01.xml, test/resources/ibm/invalid/P49/ibm49i02.xml, test/resources/ibm/invalid/P49/out/ibm49i01.xml, test/resources/ibm/invalid/P49/out/ibm49i02.xml, test/resources/ibm/invalid/P50/ibm50i01.dtd, test/resources/ibm/invalid/P50/ibm50i01.xml, test/resources/ibm/invalid/P50/out/ibm50i01.xml, test/resources/ibm/invalid/P51/ibm51i01.dtd, test/resources/ibm/invalid/P51/ibm51i01.xml, test/resources/ibm/invalid/P51/ibm51i03.dtd, test/resources/ibm/invalid/P51/ibm51i03.xml, test/resources/ibm/invalid/P51/out/ibm51i01.xml, test/resources/ibm/invalid/P51/out/ibm51i02.xml, test/resources/ibm/invalid/P51/out/ibm51i03.xml, test/resources/ibm/invalid/P56/ibm56i01.xml, test/resources/ibm/invalid/P56/ibm56i02.xml, test/resources/ibm/invalid/P56/ibm56i03.xml, test/resources/ibm/invalid/P56/ibm56i05.xml, test/resources/ibm/invalid/P56/ibm56i06.xml, test/resources/ibm/invalid/P56/ibm56i07.xml, test/resources/ibm/invalid/P56/ibm56i08.xml, test/resources/ibm/invalid/P56/ibm56i09.xml, test/resources/ibm/invalid/P56/ibm56i10.xml, test/resources/ibm/invalid/P56/ibm56i11.xml, test/resources/ibm/invalid/P56/ibm56i12.xml, test/resources/ibm/invalid/P56/ibm56i13.xml, test/resources/ibm/invalid/P56/ibm56i14.xml, test/resources/ibm/invalid/P56/ibm56i15.xml, test/resources/ibm/invalid/P56/ibm56i16.xml, test/resources/ibm/invalid/P56/ibm56i17.xml, test/resources/ibm/invalid/P56/ibm56i18.xml, test/resources/ibm/invalid/P56/out/ibm56i01.xml, test/resources/ibm/invalid/P56/out/ibm56i02.xml, test/resources/ibm/invalid/P56/out/ibm56i03.xml, test/resources/ibm/invalid/P56/out/ibm56i05.xml, test/resources/ibm/invalid/P56/out/ibm56i06.xml, test/resources/ibm/invalid/P56/out/ibm56i07.xml, test/resources/ibm/invalid/P56/out/ibm56i08.xml, test/resources/ibm/invalid/P56/out/ibm56i09.xml, test/resources/ibm/invalid/P56/out/ibm56i10.xml, test/resources/ibm/invalid/P56/out/ibm56i11.xml, test/resources/ibm/invalid/P56/out/ibm56i12.xml, test/resources/ibm/invalid/P56/out/ibm56i13.xml, test/resources/ibm/invalid/P56/out/ibm56i14.xml, test/resources/ibm/invalid/P56/out/ibm56i15.xml, test/resources/ibm/invalid/P56/out/ibm56i16.xml, test/resources/ibm/invalid/P56/out/ibm56i17.xml, test/resources/ibm/invalid/P56/out/ibm56i18.xml, test/resources/ibm/invalid/P58/ibm58i01.xml, test/resources/ibm/invalid/P58/ibm58i02.xml, test/resources/ibm/invalid/P58/out/ibm58i01.xml, test/resources/ibm/invalid/P58/out/ibm58i02.xml, test/resources/ibm/invalid/P59/ibm59i01.xml, test/resources/ibm/invalid/P59/out/ibm59i01.xml, test/resources/ibm/invalid/P60/ibm60i01.xml, test/resources/ibm/invalid/P60/ibm60i02.xml, test/resources/ibm/invalid/P60/ibm60i03.xml, test/resources/ibm/invalid/P60/ibm60i04.xml, test/resources/ibm/invalid/P60/out/ibm60i01.xml, test/resources/ibm/invalid/P60/out/ibm60i02.xml, test/resources/ibm/invalid/P60/out/ibm60i03.xml, test/resources/ibm/invalid/P60/out/ibm60i04.xml, test/resources/ibm/invalid/P68/ibm68i01.dtd, test/resources/ibm/invalid/P68/ibm68i01.xml, test/resources/ibm/invalid/P68/ibm68i02.dtd, test/resources/ibm/invalid/P68/ibm68i02.xml, test/resources/ibm/invalid/P68/ibm68i03.ent, test/resources/ibm/invalid/P68/ibm68i03.xml, test/resources/ibm/invalid/P68/ibm68i04.ent, test/resources/ibm/invalid/P68/ibm68i04.xml, test/resources/ibm/invalid/P68/out/ibm68i01.xml, test/resources/ibm/invalid/P68/out/ibm68i02.xml, test/resources/ibm/invalid/P68/out/ibm68i03.xml, test/resources/ibm/invalid/P68/out/ibm68i04.xml, test/resources/ibm/invalid/P69/ibm69i01.dtd, test/resources/ibm/invalid/P69/ibm69i01.xml, test/resources/ibm/invalid/P69/ibm69i02.dtd, test/resources/ibm/invalid/P69/ibm69i02.xml, test/resources/ibm/invalid/P69/ibm69i03.ent, test/resources/ibm/invalid/P69/ibm69i03.xml, test/resources/ibm/invalid/P69/ibm69i04.ent, test/resources/ibm/invalid/P69/ibm69i04.xml, test/resources/ibm/invalid/P69/out/ibm69i01.xml, test/resources/ibm/invalid/P69/out/ibm69i02.xml, test/resources/ibm/invalid/P69/out/ibm69i03.xml, test/resources/ibm/invalid/P69/out/ibm69i04.xml, test/resources/ibm/invalid/P76/ibm76i01.xml, test/resources/ibm/invalid/P76/out/ibm76i01.xml, test/resources/ibm/not-wf/misc/432gewf.xml, test/resources/ibm/not-wf/misc/ltinentval.xml, test/resources/ibm/not-wf/misc/simpleltinentval.xml, test/resources/ibm/not-wf/P01/ibm01n01.xml, test/resources/ibm/not-wf/P01/ibm01n01.xml.correct, test/resources/ibm/not-wf/P01/ibm01n02.xml, test/resources/ibm/not-wf/P01/ibm01n03.xml, test/resources/ibm/not-wf/P01/ibm01n03.xml.correct, test/resources/ibm/not-wf/P02/ibm02n01.xml, test/resources/ibm/not-wf/P02/ibm02n02.xml, test/resources/ibm/not-wf/P02/ibm02n03.xml, test/resources/ibm/not-wf/P02/ibm02n04.xml, test/resources/ibm/not-wf/P02/ibm02n05.xml, test/resources/ibm/not-wf/P02/ibm02n06.xml, test/resources/ibm/not-wf/P02/ibm02n07.xml, test/resources/ibm/not-wf/P02/ibm02n08.xml, test/resources/ibm/not-wf/P02/ibm02n09.xml, test/resources/ibm/not-wf/P02/ibm02n10.xml, test/resources/ibm/not-wf/P02/ibm02n11.xml, test/resources/ibm/not-wf/P02/ibm02n12.xml, test/resources/ibm/not-wf/P02/ibm02n13.xml, test/resources/ibm/not-wf/P02/ibm02n14.xml, test/resources/ibm/not-wf/P02/ibm02n15.xml, test/resources/ibm/not-wf/P02/ibm02n16.xml, test/resources/ibm/not-wf/P02/ibm02n17.xml, test/resources/ibm/not-wf/P02/ibm02n18.xml, test/resources/ibm/not-wf/P02/ibm02n19.xml, test/resources/ibm/not-wf/P02/ibm02n20.xml, test/resources/ibm/not-wf/P02/ibm02n21.xml, test/resources/ibm/not-wf/P02/ibm02n22.xml, test/resources/ibm/not-wf/P02/ibm02n23.xml, test/resources/ibm/not-wf/P02/ibm02n24.xml, test/resources/ibm/not-wf/P02/ibm02n25.xml, test/resources/ibm/not-wf/P02/ibm02n26.xml, test/resources/ibm/not-wf/P02/ibm02n27.xml, test/resources/ibm/not-wf/P02/ibm02n28.xml, test/resources/ibm/not-wf/P02/ibm02n29.xml, test/resources/ibm/not-wf/P02/ibm02n30.xml, test/resources/ibm/not-wf/P02/ibm02n31.xml, test/resources/ibm/not-wf/P02/ibm02n32.xml, test/resources/ibm/not-wf/P02/ibm02n33.xml, test/resources/ibm/not-wf/P03/ibm03n01.xml, test/resources/ibm/not-wf/P04/ibm04n01.xml, test/resources/ibm/not-wf/P04/ibm04n02.xml, test/resources/ibm/not-wf/P04/ibm04n03.xml, test/resources/ibm/not-wf/P04/ibm04n04.xml, test/resources/ibm/not-wf/P04/ibm04n05.xml, test/resources/ibm/not-wf/P04/ibm04n06.xml, test/resources/ibm/not-wf/P04/ibm04n07.xml, test/resources/ibm/not-wf/P04/ibm04n08.xml, test/resources/ibm/not-wf/P04/ibm04n09.xml, test/resources/ibm/not-wf/P04/ibm04n10.xml, test/resources/ibm/not-wf/P04/ibm04n11.xml, test/resources/ibm/not-wf/P04/ibm04n12.xml, test/resources/ibm/not-wf/P04/ibm04n13.xml, test/resources/ibm/not-wf/P04/ibm04n14.xml, test/resources/ibm/not-wf/P04/ibm04n15.xml, test/resources/ibm/not-wf/P04/ibm04n16.xml, test/resources/ibm/not-wf/P04/ibm04n17.xml, test/resources/ibm/not-wf/P04/ibm04n18.xml, test/resources/ibm/not-wf/P05/ibm05n01.xml, test/resources/ibm/not-wf/P05/ibm05n02.xml, test/resources/ibm/not-wf/P05/ibm05n03.xml, test/resources/ibm/not-wf/P05/ibm05n04.xml, test/resources/ibm/not-wf/P05/ibm05n05.xml, test/resources/ibm/not-wf/P10/ibm10n01.xml, test/resources/ibm/not-wf/P10/ibm10n01.xml.html.correct, test/resources/ibm/not-wf/P10/ibm10n02.xml, test/resources/ibm/not-wf/P10/ibm10n02.xml.html.correct, test/resources/ibm/not-wf/P10/ibm10n03.xml, test/resources/ibm/not-wf/P10/ibm10n04.xml, test/resources/ibm/not-wf/P10/ibm10n05.xml, test/resources/ibm/not-wf/P10/ibm10n05.xml.html.correct, test/resources/ibm/not-wf/P10/ibm10n06.xml, test/resources/ibm/not-wf/P10/ibm10n06.xml.html.correct, test/resources/ibm/not-wf/P10/ibm10n07.xml, test/resources/ibm/not-wf/P10/ibm10n08.xml, test/resources/ibm/not-wf/P11/ibm11n01.xml, test/resources/ibm/not-wf/P11/ibm11n02.xml, test/resources/ibm/not-wf/P11/ibm11n03.xml, test/resources/ibm/not-wf/P11/ibm11n04.xml, test/resources/ibm/not-wf/P12/ibm12n01.xml, test/resources/ibm/not-wf/P12/ibm12n02.xml, test/resources/ibm/not-wf/P12/ibm12n03.xml, test/resources/ibm/not-wf/P14/ibm14n01.xml, test/resources/ibm/not-wf/P14/ibm14n01.xml.correct, test/resources/ibm/not-wf/P14/ibm14n02.xml, test/resources/ibm/not-wf/P14/ibm14n03.xml, test/resources/ibm/not-wf/P14/ibm14n03.xml.html.correct, test/resources/ibm/not-wf/P15/ibm15n01.xml, test/resources/ibm/not-wf/P15/ibm15n02.xml, test/resources/ibm/not-wf/P15/ibm15n03.xml, test/resources/ibm/not-wf/P15/ibm15n04.xml, test/resources/ibm/not-wf/P16/ibm16n01.xml, test/resources/ibm/not-wf/P16/ibm16n01.xml.correct, test/resources/ibm/not-wf/P16/ibm16n02.xml, test/resources/ibm/not-wf/P16/ibm16n03.xml, test/resources/ibm/not-wf/P16/ibm16n04.xml, test/resources/ibm/not-wf/P17/ibm17n01.xml, test/resources/ibm/not-wf/P17/ibm17n02.xml, test/resources/ibm/not-wf/P17/ibm17n03.xml, test/resources/ibm/not-wf/P17/ibm17n04.xml, test/resources/ibm/not-wf/P18/ibm18n01.xml, test/resources/ibm/not-wf/P18/ibm18n02.xml, test/resources/ibm/not-wf/P19/ibm19n01.xml, test/resources/ibm/not-wf/P19/ibm19n02.xml, test/resources/ibm/not-wf/P19/ibm19n03.xml, test/resources/ibm/not-wf/P20/ibm20n01.xml, test/resources/ibm/not-wf/P21/ibm21n01.xml, test/resources/ibm/not-wf/P21/ibm21n02.xml, test/resources/ibm/not-wf/P21/ibm21n03.xml, test/resources/ibm/not-wf/P22/ibm22n01.xml, test/resources/ibm/not-wf/P22/ibm22n02.xml, test/resources/ibm/not-wf/P22/ibm22n03.xml, test/resources/ibm/not-wf/P23/ibm23n01.xml, test/resources/ibm/not-wf/P23/ibm23n02.xml, test/resources/ibm/not-wf/P23/ibm23n03.xml, test/resources/ibm/not-wf/P23/ibm23n04.xml, test/resources/ibm/not-wf/P23/ibm23n05.xml, test/resources/ibm/not-wf/P23/ibm23n06.xml, test/resources/ibm/not-wf/P24/ibm24n01.xml, test/resources/ibm/not-wf/P24/ibm24n02.xml, test/resources/ibm/not-wf/P24/ibm24n03.xml, test/resources/ibm/not-wf/P24/ibm24n04.xml, test/resources/ibm/not-wf/P24/ibm24n05.xml, test/resources/ibm/not-wf/P24/ibm24n06.xml, test/resources/ibm/not-wf/P24/ibm24n07.xml, test/resources/ibm/not-wf/P24/ibm24n08.xml, test/resources/ibm/not-wf/P24/ibm24n09.xml, test/resources/ibm/not-wf/P25/ibm25n01.xml, test/resources/ibm/not-wf/P25/ibm25n02.xml, test/resources/ibm/not-wf/P26/ibm26n01.xml, test/resources/ibm/not-wf/P27/ibm27n01.xml, test/resources/ibm/not-wf/P28/ibm28n01.dtd, test/resources/ibm/not-wf/P28/ibm28n01.xml, test/resources/ibm/not-wf/P28/ibm28n02.xml, test/resources/ibm/not-wf/P28/ibm28n03.xml, test/resources/ibm/not-wf/P28/ibm28n04.xml, test/resources/ibm/not-wf/P28/ibm28n05.xml, test/resources/ibm/not-wf/P28/ibm28n05.xml.html.correct, test/resources/ibm/not-wf/P28/ibm28n06.xml, test/resources/ibm/not-wf/P28/ibm28n07.xml, test/resources/ibm/not-wf/P28/ibm28n08.xml, test/resources/ibm/not-wf/P30/ibm30n01.dtd, test/resources/ibm/not-wf/P30/ibm30n01.xml, test/resources/ibm/not-wf/P30/ibm30n01.xml.correct, test/resources/ibm/not-wf/P31/ibm31n01.dtd, test/resources/ibm/not-wf/P31/ibm31n01.xml, test/resources/ibm/not-wf/P31/ibm31n01.xml.correct, test/resources/ibm/not-wf/P32/ibm32n01.xml, test/resources/ibm/not-wf/P32/ibm32n02.xml, test/resources/ibm/not-wf/P32/ibm32n03.xml, test/resources/ibm/not-wf/P32/ibm32n04.xml, test/resources/ibm/not-wf/P32/ibm32n05.xml, test/resources/ibm/not-wf/P32/ibm32n06.dtd, test/resources/ibm/not-wf/P32/ibm32n06.xml, test/resources/ibm/not-wf/P32/ibm32n07.xml, test/resources/ibm/not-wf/P32/ibm32n08.xml, test/resources/ibm/not-wf/P39/ibm39n01.xml, test/resources/ibm/not-wf/P39/ibm39n02.xml, test/resources/ibm/not-wf/P39/ibm39n03.xml, test/resources/ibm/not-wf/P39/ibm39n04.xml, test/resources/ibm/not-wf/P39/ibm39n05.xml, test/resources/ibm/not-wf/P39/ibm39n06.xml, test/resources/ibm/not-wf/P39/ibm39n06.xml.correct, test/resources/ibm/not-wf/P40/ibm40n01.xml, test/resources/ibm/not-wf/P40/ibm40n02.xml, test/resources/ibm/not-wf/P40/ibm40n03.xml, test/resources/ibm/not-wf/P40/ibm40n04.xml, test/resources/ibm/not-wf/P40/ibm40n05.xml, test/resources/ibm/not-wf/P41/ibm41n.ent, test/resources/ibm/not-wf/P41/ibm41n01.xml, test/resources/ibm/not-wf/P41/ibm41n02.xml, test/resources/ibm/not-wf/P41/ibm41n03.xml, test/resources/ibm/not-wf/P41/ibm41n04.xml, test/resources/ibm/not-wf/P41/ibm41n05.xml, test/resources/ibm/not-wf/P41/ibm41n05.xml.html.correct, test/resources/ibm/not-wf/P41/ibm41n06.xml, test/resources/ibm/not-wf/P41/ibm41n07.xml, test/resources/ibm/not-wf/P41/ibm41n08.xml, test/resources/ibm/not-wf/P41/ibm41n09.xml, test/resources/ibm/not-wf/P41/ibm41n10.ent, test/resources/ibm/not-wf/P41/ibm41n10.xml, test/resources/ibm/not-wf/P42/ibm42n01.xml, test/resources/ibm/not-wf/P42/ibm42n02.xml, test/resources/ibm/not-wf/P42/ibm42n03.xml, test/resources/ibm/not-wf/P42/ibm42n04.xml, test/resources/ibm/not-wf/P42/ibm42n05.xml, test/resources/ibm/not-wf/P43/ibm43n01.xml, test/resources/ibm/not-wf/P43/ibm43n02.xml, test/resources/ibm/not-wf/P43/ibm43n04.xml, test/resources/ibm/not-wf/P43/ibm43n05.xml, test/resources/ibm/not-wf/P44/ibm44n01.xml, test/resources/ibm/not-wf/P44/ibm44n02.xml, test/resources/ibm/not-wf/P44/ibm44n03.xml, test/resources/ibm/not-wf/P44/ibm44n04.xml, test/resources/ibm/not-wf/P66/ibm66n01.xml, test/resources/ibm/not-wf/P66/ibm66n01.xml.correct, test/resources/ibm/not-wf/P66/ibm66n02.xml, test/resources/ibm/not-wf/P66/ibm66n02.xml.html.correct, test/resources/ibm/not-wf/P66/ibm66n03.xml, test/resources/ibm/not-wf/P66/ibm66n03.xml.correct, test/resources/ibm/not-wf/P66/ibm66n04.xml, test/resources/ibm/not-wf/P66/ibm66n04.xml.html.correct, test/resources/ibm/not-wf/P66/ibm66n05.xml, test/resources/ibm/not-wf/P66/ibm66n05.xml.correct, test/resources/ibm/not-wf/P66/ibm66n06.xml, test/resources/ibm/not-wf/P66/ibm66n06.xml.html.correct, test/resources/ibm/not-wf/P66/ibm66n07.xml, test/resources/ibm/not-wf/P66/ibm66n07.xml.correct, test/resources/ibm/not-wf/P66/ibm66n08.xml, test/resources/ibm/not-wf/P66/ibm66n08.xml.html.correct, test/resources/ibm/not-wf/P66/ibm66n09.xml, test/resources/ibm/not-wf/P66/ibm66n09.xml.correct, test/resources/ibm/not-wf/P66/ibm66n10.xml, test/resources/ibm/not-wf/P66/ibm66n10.xml.html.correct, test/resources/ibm/not-wf/P66/ibm66n11.xml, test/resources/ibm/not-wf/P66/ibm66n11.xml.correct, test/resources/ibm/not-wf/P66/ibm66n12.xml, test/resources/ibm/not-wf/P66/ibm66n13.xml, test/resources/ibm/not-wf/P66/ibm66n14.xml, test/resources/ibm/not-wf/P66/ibm66n15.xml, test/resources/ibm/not-wf/P68/ibm68n01.xml, test/resources/ibm/not-wf/P68/ibm68n01.xml.html.correct, test/resources/ibm/not-wf/P68/ibm68n02.xml, test/resources/ibm/not-wf/P68/ibm68n02.xml.html.correct, test/resources/ibm/not-wf/P68/ibm68n03.xml, test/resources/ibm/not-wf/P68/ibm68n03.xml.html.correct, test/resources/ibm/not-wf/P68/ibm68n04.xml, test/resources/ibm/not-wf/P68/ibm68n05.xml, test/resources/ibm/not-wf/P68/ibm68n06.dtd, test/resources/ibm/not-wf/P68/ibm68n06.xml, test/resources/ibm/not-wf/P68/ibm68n07.xml, test/resources/ibm/not-wf/P68/ibm68n07.xml.correct, test/resources/ibm/not-wf/P68/ibm68n08.xml, test/resources/ibm/not-wf/P68/ibm68n09.xml, test/resources/ibm/not-wf/P68/ibm68n10.xml, test/resources/ibm/not-wf/P75/empty.dtd, test/resources/ibm/not-wf/P75/ibm75n01.xml, test/resources/ibm/not-wf/P75/ibm75n01.xml.correct, test/resources/ibm/not-wf/P75/ibm75n02.xml, test/resources/ibm/not-wf/P75/ibm75n02.xml.html.correct, test/resources/ibm/not-wf/P75/ibm75n03.xml, test/resources/ibm/not-wf/P75/ibm75n03.xml.html.correct, test/resources/ibm/not-wf/P75/ibm75n04.xml, test/resources/ibm/not-wf/P75/ibm75n05.xml, test/resources/ibm/not-wf/P75/ibm75n05.xml.correct, test/resources/ibm/not-wf/P75/ibm75n06.xml, test/resources/ibm/not-wf/P75/ibm75n06.xml.correct, test/resources/ibm/not-wf/P75/ibm75n07.xml, test/resources/ibm/not-wf/P75/ibm75n08.xml, test/resources/ibm/not-wf/P75/ibm75n09.xml, test/resources/ibm/not-wf/P75/ibm75n10.xml, test/resources/ibm/not-wf/P75/ibm75n11.xml, test/resources/ibm/not-wf/P75/ibm75n12.xml, test/resources/ibm/not-wf/P75/ibm75n12.xml.correct, test/resources/ibm/not-wf/P75/ibm75n13.xml, test/resources/ibm/not-wf/P80/ibm80n01.xml, test/resources/ibm/not-wf/P80/ibm80n02.xml, test/resources/ibm/not-wf/P80/ibm80n03.xml, test/resources/ibm/not-wf/P80/ibm80n04.xml, test/resources/ibm/not-wf/P80/ibm80n05.xml, test/resources/ibm/not-wf/P80/ibm80n06.xml, test/resources/ibm/not-wf/P81/ibm81n01.xml, test/resources/ibm/not-wf/P81/ibm81n02.xml, test/resources/ibm/not-wf/P81/ibm81n03.xml, test/resources/ibm/not-wf/P81/ibm81n04.xml, test/resources/ibm/not-wf/P81/ibm81n05.xml, test/resources/ibm/not-wf/P81/ibm81n06.xml, test/resources/ibm/not-wf/P81/ibm81n07.xml, test/resources/ibm/not-wf/P81/ibm81n08.xml, test/resources/ibm/not-wf/P81/ibm81n09.xml, test/resources/ibm/valid/P01/ibm01v01.xml, test/resources/ibm/valid/P01/out/ibm01v01.xml, test/resources/ibm/valid/P02/ibm02v01.xml, test/resources/ibm/valid/P02/ibm02v01.xml.incorrect, test/resources/ibm/valid/P02/out/ibm02v01.xml, test/resources/ibm/valid/P03/ibm03v01.xml, test/resources/ibm/valid/P03/out/ibm03v01.xml, test/resources/ibm/valid/P11/ibm11v01.xml, test/resources/ibm/valid/P11/ibm11v02.xml, test/resources/ibm/valid/P11/ibm11v03.xml, test/resources/ibm/valid/P11/ibm11v04.xml, test/resources/ibm/valid/P11/out/ibm11v01.xml, test/resources/ibm/valid/P11/out/ibm11v02.xml, test/resources/ibm/valid/P11/out/ibm11v03.xml, test/resources/ibm/valid/P11/out/ibm11v04.xml, test/resources/ibm/valid/P11/student.dtd, test/resources/ibm/valid/P12/ibm12v01.xml, test/resources/ibm/valid/P12/ibm12v02.xml, test/resources/ibm/valid/P12/ibm12v03.xml, test/resources/ibm/valid/P12/ibm12v04.xml, test/resources/ibm/valid/P12/out/ibm12v01.xml, test/resources/ibm/valid/P12/out/ibm12v02.xml, test/resources/ibm/valid/P12/out/ibm12v03.xml, test/resources/ibm/valid/P12/out/ibm12v04.xml, test/resources/ibm/valid/P12/student.dtd, test/resources/ibm/valid/P13/ibm13v01.xml, test/resources/ibm/valid/P13/out/ibm13v01.xml, test/resources/ibm/valid/P13/student.dtd, test/resources/ibm/valid/P14/ibm14v01.xml, test/resources/ibm/valid/P14/ibm14v02.xml, test/resources/ibm/valid/P14/ibm14v03.xml, test/resources/ibm/valid/P14/out/ibm14v01.xml, test/resources/ibm/valid/P14/out/ibm14v02.xml, test/resources/ibm/valid/P14/out/ibm14v03.xml, test/resources/ibm/valid/P15/ibm15v01.xml, test/resources/ibm/valid/P15/ibm15v02.xml, test/resources/ibm/valid/P15/ibm15v03.xml, test/resources/ibm/valid/P15/ibm15v04.xml, test/resources/ibm/valid/P15/out/ibm15v01.xml, test/resources/ibm/valid/P15/out/ibm15v02.xml, test/resources/ibm/valid/P15/out/ibm15v03.xml, test/resources/ibm/valid/P15/out/ibm15v04.xml, test/resources/ibm/valid/P16/ibm16v01.xml, test/resources/ibm/valid/P16/ibm16v02.xml, test/resources/ibm/valid/P16/ibm16v03.xml, test/resources/ibm/valid/P16/out/ibm16v01.xml, test/resources/ibm/valid/P16/out/ibm16v02.xml, test/resources/ibm/valid/P16/out/ibm16v03.xml, test/resources/ibm/valid/P17/ibm17v01.xml, test/resources/ibm/valid/P17/out/ibm17v01.xml, test/resources/ibm/valid/P18/ibm18v01.xml, test/resources/ibm/valid/P18/out/ibm18v01.xml, test/resources/ibm/valid/P19/ibm19v01.xml, test/resources/ibm/valid/P19/out/ibm19v01.xml, test/resources/ibm/valid/P20/ibm20v01.xml, test/resources/ibm/valid/P20/ibm20v02.xml, test/resources/ibm/valid/P20/out/ibm20v01.xml, test/resources/ibm/valid/P20/out/ibm20v02.xml, test/resources/ibm/valid/P21/ibm21v01.xml, test/resources/ibm/valid/P21/out/ibm21v01.xml, test/resources/ibm/valid/P22/ibm22v01.xml, test/resources/ibm/valid/P22/ibm22v02.xml, test/resources/ibm/valid/P22/ibm22v03.xml, test/resources/ibm/valid/P22/ibm22v04.xml, test/resources/ibm/valid/P22/ibm22v05.xml, test/resources/ibm/valid/P22/ibm22v06.xml, test/resources/ibm/valid/P22/ibm22v07.xml, test/resources/ibm/valid/P22/out/ibm22v01.xml, test/resources/ibm/valid/P22/out/ibm22v02.xml, test/resources/ibm/valid/P22/out/ibm22v03.xml, test/resources/ibm/valid/P22/out/ibm22v04.xml, test/resources/ibm/valid/P22/out/ibm22v05.xml, test/resources/ibm/valid/P22/out/ibm22v06.xml, test/resources/ibm/valid/P22/out/ibm22v07.xml, test/resources/ibm/valid/P23/ibm23v01.xml, test/resources/ibm/valid/P23/ibm23v02.xml, test/resources/ibm/valid/P23/ibm23v03.xml, test/resources/ibm/valid/P23/ibm23v04.xml, test/resources/ibm/valid/P23/ibm23v05.xml, test/resources/ibm/valid/P23/ibm23v06.xml, test/resources/ibm/valid/P23/out/ibm23v01.xml, test/resources/ibm/valid/P23/out/ibm23v02.xml, test/resources/ibm/valid/P23/out/ibm23v03.xml, test/resources/ibm/valid/P23/out/ibm23v04.xml, test/resources/ibm/valid/P23/out/ibm23v05.xml, test/resources/ibm/valid/P23/out/ibm23v06.xml, test/resources/oasis/p02fail31.xml, test/resources/oasis/p02fail14.xml, test/resources/oasis/p01fail4.xml, test/resources/oasis/p39fail5.xml, test/resources/oasis/p66fail5.xml, test/resources/oasis/p32pass2.xml, test/resources/oasis/p03fail29.xml, test/resources/oasis/p32pass1.xml, test/resources/oasis/p30pass2.xml, test/resources/oasis/p04fail3.xml, test/resources/oasis/p02fail21.xml, test/resources/oasis/p18fail3.xml, test/resources/oasis/p01fail3.xml, test/resources/oasis/p02fail11.xml, test/resources/oasis/p02fail22.xml, test/resources/oasis/p14fail3.xml.correct, test/resources/oasis/p27pass2.xml, test/resources/oasis/p15fail3.xml, test/resources/oasis/p03fail20.xml, test/resources/oasis/p03fail22.xml, test/resources/oasis/p59pass1.xml, test/resources/oasis/p70pass1.xml, test/resources/oasis/p31pass2.dtd, test/resources/oasis/p16pass3.xml, test/resources/oasis/p03fail13.xml, test/resources/oasis/p22fail2.xml, test/resources/oasis/p23pass4.xml, test/resources/oasis/p44pass2.xml, test/resources/oasis/p02fail26.xml, test/resources/oasis/p42fail2.xml, test/resources/oasis/oasis.xml, test/resources/oasis/p43pass1.xml, test/resources/oasis/p72pass1.xml, test/resources/oasis/p66fail1.xml.html.correct, test/resources/oasis/p64pass1.dtd, test/resources/oasis/p28pass4.xml, test/resources/oasis/p02fail27.xml, test/resources/oasis/p56pass1.xml, test/resources/oasis/p23fail4.xml, test/resources/oasis/p28pass5.dtd, test/resources/oasis/p03fail8.xml, test/resources/oasis/p02fail23.xml, test/resources/oasis/p71pass1.xml, test/resources/oasis/p08fail1.xml, test/resources/oasis/p22pass3.xml, test/resources/oasis/p24pass2.xml, test/resources/oasis/p62pass1.dtd, test/resources/oasis/p23pass1.xml, test/resources/oasis/p40pass2.xml, test/resources/oasis/p02fail16.xml, test/resources/oasis/p43fail3.xml, test/resources/oasis/p29pass1.xml, test/resources/oasis/p05fail5.xml, test/resources/oasis/p22pass1.xml, test/resources/oasis/p44fail2.xml, test/resources/oasis/p73pass1.xml, test/resources/oasis/p31pass1.xml, test/resources/oasis/p03fail26.xml, test/resources/oasis/p26fail2.xml, test/resources/oasis/p18fail3.xml.correct, test/resources/oasis/p03fail21.xml, test/resources/oasis/p28fail1.xml.correct, test/resources/oasis/p22pass5.xml, test/resources/oasis/p39pass2.xml, test/resources/oasis/p55pass1.xml, test/resources/oasis/p39fail2.xml, test/resources/oasis/p24pass1.xml, test/resources/oasis/p44pass3.xml, test/resources/oasis/p15fail1.xml, test/resources/oasis/p10fail2.xml.html.correct, test/resources/oasis/p26pass1.xml, test/resources/oasis/p09pass1.xml, test/resources/oasis/p40fail1.xml, test/resources/oasis/p23fail5.xml, test/resources/oasis/p68fail2.xml.html.correct, test/resources/oasis/p24fail2.xml, test/resources/oasis/p10fail3.xml, test/resources/oasis/p43fail1.xml, test/resources/oasis/p03fail18.xml, test/resources/oasis/p01fail3.xml.correct, test/resources/oasis/p62pass1.xml, test/resources/oasis/p66fail3.xml.html.correct, test/resources/oasis/p44fail1.xml, test/resources/oasis/p03fail11.xml, test/resources/oasis/p02fail6.xml, test/resources/oasis/p28pass3.xml, test/resources/oasis/p25fail1.xml, test/resources/oasis/p14fail2.xml, test/resources/oasis/p68fail2.xml, test/resources/oasis/p06fail1.xml, test/resources/oasis/p01pass2.xml, test/resources/oasis/p01pass1.xml, test/resources/oasis/p41fail2.xml.html.correct, test/resources/oasis/p41pass2.xml, test/resources/oasis/p05fail3.xml, test/resources/oasis/p02fail28.xml, test/resources/oasis/p18pass1.xml, test/resources/oasis/p22pass6.xml, test/resources/oasis/p23fail2.xml, test/resources/oasis/p66fail4.xml, test/resources/oasis/p02fail1.xml, test/resources/oasis/p03fail3.xml, test/resources/oasis/p02fail15.xml, test/resources/oasis/p03fail15.xml, test/resources/oasis/p05fail2.xml, test/resources/oasis/p43fail2.xml, test/resources/oasis/p10fail2.xml, test/resources/oasis/p53pass1.xml, test/resources/oasis/p60pass1.xml, test/resources/oasis/p24pass3.xml, test/resources/oasis/p16fail2.xml, test/resources/oasis/p07pass1.xml, test/resources/oasis/p03fail9.xml, test/resources/oasis/p03fail27.xml, test/resources/oasis/p03fail28.xml, test/resources/oasis/p66fail3.xml, test/resources/oasis/p26fail1.xml, test/resources/oasis/p18fail1.xml, test/resources/oasis/p15fail2.xml, test/resources/oasis/p40pass1.xml, test/resources/oasis/p10fail1.xml, test/resources/oasis/p30pass2.dtd, test/resources/oasis/p40pass3.xml, test/resources/oasis/p22pass2.xml, test/resources/oasis/p66pass1.xml, test/resources/oasis/p03fail7.xml, test/resources/oasis/p03fail2.xml, test/resources/oasis/p03pass1.xml, test/resources/oasis/p32fail4.xml, test/resources/oasis/p50pass1.xml, test/resources/oasis/p40fail3.xml, test/resources/oasis/p41pass1.xml, test/resources/oasis/p27fail1.xml.correct, test/resources/oasis/p45pass1.xml, test/resources/oasis/p31pass2.xml, test/resources/oasis/p02fail17.xml, test/resources/oasis/p32fail2.xml, test/resources/oasis/p14fail1.xml, test/resources/oasis/p02fail30.xml, test/resources/oasis/p10fail1.xml.html.correct, test/resources/oasis/p40pass4.xml, test/resources/oasis/p32fail5.xml, test/resources/oasis/p68fail3.xml, test/resources/oasis/p03fail1.xml, test/resources/oasis/p03fail5.xml, test/resources/oasis/p74pass1.xml, test/resources/oasis/p22pass4.xml, test/resources/oasis/p58pass1.xml, test/resources/oasis/p14fail3.xml, test/resources/oasis/p02fail18.xml, test/resources/oasis/p76pass1.xml, test/resources/oasis/p63pass1.xml, test/resources/oasis/p03fail17.xml, test/resources/oasis/p15pass1.xml, test/resources/oasis/p63pass1.dtd, test/resources/oasis/p52pass1.xml, test/resources/oasis/p16fail3.xml, test/resources/oasis/p08fail2.xml, test/resources/oasis/p01fail1.xml, test/resources/oasis/p42fail1.xml, test/resources/oasis/p27pass3.xml, test/resources/oasis/p08pass1.xml, test/resources/oasis/p23fail1.xml, test/resources/oasis/p14fail2.xml.html.correct, test/resources/oasis/p66fail6.xml, test/resources/oasis/p49pass1.xml, test/resources/oasis/p23pass2.xml, test/resources/oasis/p68pass1.xml.incorrect, test/resources/oasis/p01pass3.xml, test/resources/oasis/p16pass1.xml, test/resources/oasis/p61pass1.dtd, test/resources/oasis/p30pass1.dtd, test/resources/oasis/p42pass1.xml, test/resources/oasis/p18fail2.xml, test/resources/oasis/p44pass4.xml, test/resources/oasis/p66fail2.xml.html.correct, test/resources/oasis/p28pass5.xml, test/resources/oasis/p57pass1.xml, test/resources/oasis/p02fail7.xml, test/resources/oasis/p02fail25.xml, test/resources/oasis/p30pass1.xml, test/resources/oasis/p66fail4.xml.html.correct, test/resources/oasis/p54pass1.xml, test/resources/oasis/p02fail13.xml, test/resources/oasis/p64pass1.xml, test/resources/oasis/p06pass1.xml, test/resources/oasis/p02fail10.xml, test/resources/oasis/p31pass1.dtd, test/resources/oasis/p11fail1.xml, test/resources/oasis/p66fail2.xml, test/resources/oasis/p22fail1.xml, test/resources/oasis/p02fail20.xml, test/resources/oasis/p39fail4.xml, test/resources/oasis/p68fail1.xml, test/resources/oasis/p03fail25.xml, test/resources/oasis/p28fail1.xml, test/resources/oasis/p02fail5.xml, test/resources/oasis/p46pass1.xml, test/resources/oasis/p02fail3.xml, test/resources/oasis/p44fail3.xml, test/resources/oasis/p44fail3.xml.html.correct, test/resources/oasis/p14pass1.xml, test/resources/oasis/p03fail24.xml, test/resources/oasis/p10pass1.xml, test/resources/oasis/p16fail1.xml, test/resources/oasis/p27pass4.xml, test/resources/oasis/p25pass1.xml, test/resources/oasis/p02fail24.xml, test/resources/oasis/p28pass4.dtd, test/resources/oasis/p41fail3.xml, test/resources/oasis/p24pass4.xml, test/resources/oasis/p05fail1.xml, test/resources/oasis/p68fail3.xml.html.correct, test/resources/oasis/p02fail9.xml, test/resources/oasis/p68pass1.xml, test/resources/oasis/p01fail2.xml, test/resources/oasis/p42pass2.xml, test/resources/oasis/p24fail1.xml, test/resources/oasis/p41fail2.xml, test/resources/oasis/p68fail1.xml.html.correct, test/resources/oasis/p42fail3.xml, test/resources/oasis/p32fail3.xml, test/resources/oasis/p03fail19.xml, test/resources/oasis/p28pass1.xml, test/resources/oasis/p51pass1.xml, test/resources/oasis/p04fail2.xml, test/resources/oasis/p03fail16.xml, test/resources/oasis/p02fail29.xml, test/resources/oasis/p04fail1.xml, test/resources/oasis/p47pass1.xml, test/resources/oasis/p44pass5.xml, test/resources/oasis/p43pass1.xml.incorrect, test/resources/oasis/p02fail12.xml, test/resources/oasis/p03fail10.xml, test/resources/oasis/e2.xml, test/resources/oasis/p02fail19.xml, test/resources/oasis/p44fail4.xml, test/resources/oasis/p48pass1.xml, test/resources/oasis/p05pass1.xml, test/resources/oasis/p02fail4.xml, test/resources/oasis/p27pass1.xml, test/resources/oasis/p41fail1.xml.html.correct, test/resources/oasis/p12pass1.xml, test/resources/oasis/p39pass1.xml, test/resources/oasis/p11fail2.xml, test/resources/oasis/p44fail5.xml, test/resources/oasis/p05fail4.xml, test/resources/oasis/p75pass1.xml, test/resources/oasis/p03fail4.xml, test/resources/oasis/p03fail12.xml, test/resources/oasis/p16pass2.xml, test/resources/oasis/p09pass1.dtd, test/resources/oasis/p39fail1.xml, test/resources/oasis/p61pass1.xml, test/resources/oasis/p32fail1.xml, test/resources/oasis/p04pass1.xml, test/resources/oasis/p23fail3.xml, test/resources/oasis/p66fail1.xml, test/resources/oasis/p41fail1.xml, test/resources/oasis/p25pass2.xml, test/resources/oasis/p28pass2.xml, test/resources/oasis/p11pass1.xml, test/resources/oasis/p23pass3.xml, test/resources/oasis/p69pass1.xml, test/resources/oasis/p40fail2.xml, test/resources/oasis/p02fail2.xml, test/resources/oasis/p03fail23.xml, test/resources/oasis/p02fail8.xml, test/resources/oasis/p03fail14.xml, test/resources/oasis/p40fail4.xml, test/resources/oasis/p44pass1.xml, test/resources/oasis/p27fail1.xml Source-repository head Type: git Location: https://github.com/snapframework/xmlhtml.git Library Hs-source-dirs: src Exposed-modules: Text.XmlHtml, Text.XmlHtml.Cursor, Text.XmlHtml.HTML.Meta, Text.Blaze.Renderer.XmlHtml Other-modules: Text.XmlHtml.Common, Text.XmlHtml.TextParser, Text.XmlHtml.XML.Parse, Text.XmlHtml.XML.Render, Text.XmlHtml.HTML.Parse, Text.XmlHtml.HTML.Render Build-depends: base >= 4 && < 5, blaze-builder >= 0.2 && < 0.4, blaze-html >= 0.5 && < 0.8, blaze-markup >= 0.5 && < 0.7, bytestring >= 0.9 && < 0.11, containers >= 0.3 && < 0.6, parsec >= 3.1.2 && < 3.2, text >= 0.11 && < 1.3, unordered-containers >= 0.1.4 && < 0.3 extensions: OverloadedStrings, FlexibleInstances, MultiParamTypeClasses, TupleSections, PatternGuards, ScopedTypeVariables, ExistentialQuantification Ghc-options: -Wall -fwarn-tabs -fno-warn-orphans ghc-prof-options: -prof -auto-all xmlhtml-0.2.3.4/LICENSE0000644000000000000000000000302712446622357012553 0ustar0000000000000000Copyright (c)2011, Chris Smith All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Chris Smith nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. xmlhtml-0.2.3.4/haddock.sh0000755000000000000000000000047212446622357013503 0ustar0000000000000000#!/bin/sh set -x rm -Rf dist/doc HADDOCK_OPTS='--html-location=http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html --css=extra/haddock.css' cabal haddock $HADDOCK_OPTS --hyperlink-source $@ cp extra/logo.gif dist/doc/html/xmlhtml/haskell_icon.gif cp extra/hscolour.css dist/doc/html/xmlhtml/src/ xmlhtml-0.2.3.4/README0000644000000000000000000000477712446622357012443 0ustar0000000000000000xmlhtml - XML and HTML 5 parsing and rendering This library implements both parsers and renderers for XML and HTML 5 document fragments. The two share data structures to represent the document tree, so that you can write code to easily work with either XML or HTML 5. Convenience functions are also available to work with the internal data structure in several natural ways. Caveats: - Both parsers are written to parse document fragments, not complete documents. This means that they do not enforce rules about overall document structure. There does not need to be only a single root node, and the HTML 5 implementation never inserts any missing start tags. - The XML parser is incapable of handling processing instructions, or defined entities. If will silently drop processing instructions, and will fail if encounters an entity reference for anything by the predefined entities (apos, quot, amp, lt, and gt). - The HTML parser is really an XML parser with HTML 5 quirks mode. It should be just fine for parsing documents that conform to the HTML 5 specification. However, it is *not* a compliant HTML 5 parser, as compliant parsers are required to be compatible with non-compliant documents in many ways that we aren't interested in. So this is a great basis for a template system, for example, but a very poor basis for a web browser or web spider. To get started, just use the parseHTML or parseXML functions from Text.XmlHtml to parse a ByteString into a document tree. On the other side, use render to write the document tree back to a ByteString. Working with document trees is easily done in two ways. 1. Text.XmlHtml exports the document tree types (notably, Document and Node) and functions like getAttribute, setAttribute, tagName, childNodes, etc. for working with them. 2. Text.XmlHtml.Cursor exports a zipper for node forests, which you can use to navigate and modify the document tree positionally. That's it, basically. This is hopefully a pretty simple package to use. TO DO Items: 1. Do something better with character encodings. For now, they are basically ignored, and we just use the byte order mark to distinguish between the three required encodings. We should implement the encoding sniffing rules for both XML (the declaration) and HTML 5. 2. Benchmark and improve performance of the parsers and renderers. 3. Ensure that rendering always gives an error rather than writing an invalid document. (Is this a good idea? It does limit rendering speed.) xmlhtml-0.2.3.4/Setup.hs0000644000000000000000000000005612446622357013201 0ustar0000000000000000import Distribution.Simple main = defaultMain xmlhtml-0.2.3.4/extra/0000755000000000000000000000000012446622357012667 5ustar0000000000000000xmlhtml-0.2.3.4/extra/hscolour.css0000644000000000000000000000073712446622357015246 0ustar0000000000000000body { font-size: 90%; } pre, code, body { font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; } .hs-keyglyph, .hs-layout {color: #5200A3;} .hs-keyword {color: #3465a4; font-weight: bold;} .hs-comment, .hs-comment a {color: #579; } .hs-str, .hs-chr {color: #141B24;} .hs-keyword, .hs-conid, .hs-varid, .hs-conop, .hs-varop, .hs-num, .hs-cpp, .hs-sel, .hs-definition {} xmlhtml-0.2.3.4/extra/haddock.css0000644000000000000000000002023012446622357014773 0ustar0000000000000000/* -------- Global things --------- */ HTML { background-color: #f0f3ff; width: 100%; } BODY { -moz-border-radius:5px; -webkit-border-radius:5px; width: 50em; margin: 2em auto; padding: 0; background-color: #ffffff; color: #000000; font-size: 110%; font-family: Georgia, serif; } A:link { color: #5200A3; text-decoration: none } A:visited { color: #5200A3; text-decoration: none } A:hover { color: #5200A3; text-decoration: none; border-bottom:#5200A3 dashed 1px; } TABLE.vanilla { width: 100%; border-width: 0px; /* I can't seem to specify cellspacing or cellpadding properly using CSS... */ } DL { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; letter-spacing: -0.01em; margin: 0; } .vanilla .vanilla dl { font-size: 80%; } .vanilla .vanilla dl dl { padding-left: 0; font-size: 95%; } TD.section1, TD.section2, TD.section3, TD.section4, TD.doc, DL { padding: 0 30px 0 34px; } TABLE.vanilla2 { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; border-width: 0px; } /* font is a little too small in MSIE */ TT, PRE, CODE { font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; font-size: 90%; } LI P { margin: 0pt } P { margin-top: 0; margin-bottom: 0.75em; } TD { border-width: 0px; } TABLE.narrow { border-width: 0px; } TD.s8 { height: 0; margin:0; padding: 0 } TD.s15 { height: 20px; } SPAN.keyword { text-decoration: underline; } /* Resize the buttom image to match the text size */ IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em } /* --------- Contents page ---------- */ DIV.node { padding-left: 3em; } DIV.cnode { padding-left: 1.75em; } SPAN.pkg { position: absolute; left: 50em; } /* --------- Documentation elements ---------- */ TD FONT { font-weight: bold; letter-spacing: -0.02em; } TD.children { padding-left: 25px; } TD.synopsis { padding: 2px; background-color: #f0f0f0; font-size: 80%; font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; } TD.decl { padding: 4px 8px; background-color: #FAFAFA; border-bottom: #F2F2F2 solid 1px; border-top: #FCFCFC solid 1px; font-size: 80%; font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; vertical-align: top; } TD.decl TD.decl { font-size: 100%; padding: 4px 0; border: 0; } TD.topdecl { padding: 20px 30px 0.5ex 30px; font-size: 80%; font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; ; vertical-align: top; } .vanilla .vanilla .vanilla .topdecl { padding-left: 0; padding-right: 0; } .vanilla .vanilla .vanilla { padding-left: 30px; } .decl .vanilla { padding-left: 0px !important; } .body .vanilla .body { padding-left: 0; padding-right: 0; } .body .vanilla .body .decl { padding-left: 12px; } .body .vanilla .body div .vanilla .decl { padding-left: 12px; } TABLE.declbar { background-color: #f0f0f0; border-spacing: 0px; border-bottom:1px solid #d7d7df; border-right:1px solid #d7d7df; border-top:1px solid #f4f4f9; border-left:1px solid #f4f4f9; padding: 4px; } TD.declname { width: 100%; padding-right: 4px; } TD.declbut { padding-left: 8px; padding-right: 5px; border-left-width: 1px; border-left-color: #000099; border-left-style: solid; white-space: nowrap; font-size: x-small; } /* arg is just like decl, except that wrapping is not allowed. It is used for function and constructor arguments which have a text box to the right, where if wrapping is allowed the text box squashes up the declaration by wrapping it. */ TD.arg { padding: 2px 12px; background-color: #f0f0f0; font-size: 80%; font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", monospace; vertical-align: top; white-space: nowrap; } TD.recfield { padding-left: 20px } TD.doc { padding-left: 38px; font-size: 95%; line-height: 1.66; } TD.ndoc { font-size: 95%; line-height: 1.66; padding: 2px 4px 2px 8px; } TD.rdoc { padding: 2px; padding-left: 30px; width: 100%; font-size: 80%; font-style: italic; font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; } TD.body { padding: 0 30px; } TD.pkg { width: 100%; padding-left: 30px } TABLE.indexsearch TR.indexrow { display: none; } TABLE.indexsearch TR.indexshow { display: table-row; } TD.indexentry { vertical-align: top; padding: 0 30px } TD.indexannot { vertical-align: top; padding-left: 20px; white-space: nowrap } TD.indexlinks { width: 100% } /* ------- Section Headings ------- */ TD.section1, TD.section2, TD.section3, TD.section4, TD.section5 { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; } TD.section1 { padding-top: 14px; font-weight: bold; letter-spacing: -0.02em; font-size: 140% } TD.section2 { padding-top: 4px; font-weight: bold; letter-spacing: -0.02em; font-size: 120% } TD.section3 { padding-top: 5px; font-weight: bold; letter-spacing: -0.02em; font-size: 105% } TD.section4 { font-weight: bold; padding-top: 12px; padding-bottom: 4px; letter-spacing: -0.02em; font-size: 90% } /* -------------- The title bar at the top of the page */ TD.infohead { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; color: #ffffff; font-weight: bold; padding: 0 30px; text-align: left; } TD.infoval { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; color: #ffffff; padding: 0 30px; text-align: left; } TD.topbar { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; background-color: #3465a4; padding: 5px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px; -webkit-border-radius-topleft:5px; -webkit-border-radius-topright:5px; } TD.title { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; color: #ffffff; padding-left: 30px; letter-spacing: -0.02em; font-weight: bold; width: 100% } TD.topbut { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; padding-left: 5px; padding-right: 5px; border-left-width: 1px; border-left-color: #ffffff; border-left-style: solid; letter-spacing: -0.02em; font-weight: bold; white-space: nowrap; } TD.topbut A:link { color: #ffffff } TD.topbut A:visited { color: #ffff00 } TD.topbut A:hover { background-color: #C9D3DE; } TD.topbut:hover { background-color: #C9D3DE; } TD.modulebar { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; color: #141B24; background-color: #C9D3DE; padding: 5px; border-top-width: 1px; border-top-color: #ffffff; border-top-style: solid; -moz-border-radius-bottomleft:5px; -moz-border-radius-bottomright:5px; -webkit-border-radius-bottomleft:5px; -webkit-border-radius-bottomright:5px; } /* --------- The page footer --------- */ TD.botbar { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; -moz-border-radius:5px; -webkit-border-radius:5px; background-color: #3465a4; color: #ffffff; padding: 5px } TD.botbar A:link { color: #ffffff; text-decoration: underline } TD.botbar A:visited { color: #ffff00 } TD.botbar A:hover { background-color: #6060ff } /* --------- Mini Synopsis for Frame View --------- */ .outer { margin: 0 0; padding: 0 0; } .mini-synopsis { padding: 0.25em 0.25em; } .mini-synopsis H1 { font-size: 120%; } .mini-synopsis H2 { font-size: 107%; } .mini-synopsis H3 { font-size: 100%; } .mini-synopsis H1, .mini-synopsis H2, .mini-synopsis H3 { font-family: "Gill Sans", "Helvetica Neue","Arial",sans-serif; margin-top: 0.5em; margin-bottom: 0.25em; padding: 0 0; font-weight: bold; letter-spacing: -0.02em; } .mini-synopsis H1 { border-bottom: 1px solid #ccc; } .mini-topbar { font-size: 120%; background: #0077dd; padding: 0.25em; } xmlhtml-0.2.3.4/extra/logo.gif0000644000000000000000000000113712446622357014320 0ustar0000000000000000GIF89aö` J‡"Kˆ#M‰%NŠ(P‹1W1X3Z‘6\“?d˜4e¤=i£9i¦:j§ ByteString -- ^ Document contents -> Either String Document -- ^ The document or an error message parseXML = parse XML.docFragment ------------------------------------------------------------------------------ -- | Parses the given HTML fragment. This enables HTML quirks mode, which -- changes the parsing algorithm to parse valid HTML 5 documents correctly. parseHTML :: String -- ^ Name of document source (perhaps a filename) for error messages -> ByteString -- ^ Document contents -> Either String Document -- ^ The document or an error message parseHTML = parse HTML.docFragment ------------------------------------------------------------------------------ -- | Renders a 'Document'. render :: Document -> Builder render (XmlDocument e dt ns) = XMLR.render e dt ns render (HtmlDocument e dt ns) = HTML.render e dt ns renderDocType :: Encoding -> Maybe DocType -> Builder renderDocType = XMLR.docTypeDecl xmlhtml-0.2.3.4/src/Text/XmlHtml/0000755000000000000000000000000012446622357014644 5ustar0000000000000000xmlhtml-0.2.3.4/src/Text/XmlHtml/Common.hs0000644000000000000000000002035512446622357016435 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Text.XmlHtml.Common where import Blaze.ByteString.Builder import Data.Maybe import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Data.Text.Encoding.Error as TE import Data.ByteString (ByteString) ------------------------------------------------------------------------------ -- | Represents a document fragment, including the format, encoding, and -- document type declaration as well as its content. data Document = XmlDocument { docEncoding :: !Encoding, docType :: !(Maybe DocType), docContent :: ![Node] } | HtmlDocument { docEncoding :: !Encoding, docType :: !(Maybe DocType), docContent :: ![Node] } deriving (Eq, Show) ------------------------------------------------------------------------------ -- | A node of a document structure. A node can be text, a comment, or an -- element. XML processing instructions are intentionally omitted as a -- simplification, and CDATA and plain text are both text nodes, since they -- ought to be semantically interchangeable. data Node = TextNode !Text | Comment !Text | Element { elementTag :: !Text, elementAttrs :: ![(Text, Text)], elementChildren :: ![Node] } deriving (Eq, Show) ------------------------------------------------------------------------------ -- | Determines whether the node is text or not. isTextNode :: Node -> Bool isTextNode (TextNode _) = True isTextNode _ = False ------------------------------------------------------------------------------ -- | Determines whether the node is a comment or not. isComment :: Node -> Bool isComment (Comment _) = True isComment _ = False ------------------------------------------------------------------------------ -- | Determines whether the node is an element or not. isElement :: Node -> Bool isElement (Element _ _ _) = True isElement _ = False ------------------------------------------------------------------------------ -- | Gives the tag name of an element, or 'Nothing' if the node isn't an -- element. tagName :: Node -> Maybe Text tagName (Element t _ _) = Just t tagName _ = Nothing ------------------------------------------------------------------------------ -- | Retrieves the attribute with the given name. If the 'Node' is not an -- element, the result is always 'Nothing' getAttribute :: Text -> Node -> Maybe Text getAttribute name (Element _ attrs _) = lookup name attrs getAttribute _ _ = Nothing ------------------------------------------------------------------------------ -- | Checks if a given attribute exists in a 'Node'. hasAttribute :: Text -> Node -> Bool hasAttribute name = isJust . getAttribute name ------------------------------------------------------------------------------ -- | Sets the attribute name to the given value. If the 'Node' is not an -- element, this is the identity. setAttribute :: Text -> Text -> Node -> Node setAttribute name val (Element t a c) = Element t newAttrs c where newAttrs = (name, val) : filter ((/= name) . fst) a setAttribute _ _ n = n ------------------------------------------------------------------------------ -- | Gives the entire text content of a node, ignoring markup. nodeText :: Node -> Text nodeText (TextNode t) = t nodeText (Comment _) = "" nodeText (Element _ _ c) = T.concat (map nodeText c) ------------------------------------------------------------------------------ -- | Gives the child nodes of the given node. Only elements have child nodes. childNodes :: Node -> [Node] childNodes (Element _ _ c) = c childNodes _ = [] ------------------------------------------------------------------------------ -- | Gives the child elements of the given node. childElements :: Node -> [Node] childElements = filter isElement . childNodes ------------------------------------------------------------------------------ -- | Gives all of the child elements of the node with the given tag -- name. childElementsTag :: Text -> Node -> [Node] childElementsTag tag = filter ((== Just tag) . tagName) . childNodes ------------------------------------------------------------------------------ -- | Gives the first child element of the node with the given tag name, -- or 'Nothing' if there is no such child element. childElementTag :: Text -> Node -> Maybe Node childElementTag tag = listToMaybe . childElementsTag tag ------------------------------------------------------------------------------ -- | Gives the descendants of the given node in the order that they begin in -- the document. descendantNodes :: Node -> [Node] descendantNodes = concatMap (\n -> n : descendantNodes n) . childNodes ------------------------------------------------------------------------------ -- | Gives the descendant elements of the given node, in the order that their -- start tags appear in the document. descendantElements :: Node -> [Node] descendantElements = filter isElement . descendantNodes ------------------------------------------------------------------------------ -- | Gives the descendant elements with a given tag name. descendantElementsTag :: Text -> Node -> [Node] descendantElementsTag tag = filter ((== Just tag) . tagName) . descendantNodes ------------------------------------------------------------------------------ -- | Gives the first descendant element of the node with the given tag name, -- or 'Nothing' if there is no such element. descendantElementTag :: Text -> Node -> Maybe Node descendantElementTag tag = listToMaybe . descendantElementsTag tag ------------------------------------------------------------------------------ -- | A document type declaration. Note that DTD internal subsets are -- currently unimplemented. data DocType = DocType !Text !ExternalID !InternalSubset deriving (Eq, Show) ------------------------------------------------------------------------------ -- | An external ID, as in a document type declaration. This can be a -- SYSTEM identifier, or a PUBLIC identifier, or can be omitted. data ExternalID = Public !Text !Text | System !Text | NoExternalID deriving (Eq, Show) ------------------------------------------------------------------------------ -- | The internal subset is unparsed, but preserved in case it's actually -- wanted. data InternalSubset = InternalText !Text | NoInternalSubset deriving (Eq, Show) ------------------------------------------------------------------------------ -- | The character encoding of a document. Currently only the required -- character encodings are implemented. data Encoding = UTF8 | UTF16BE | UTF16LE deriving (Eq, Show) ------------------------------------------------------------------------------ -- | Retrieves the preferred name of a character encoding for embedding in -- a document. encodingName :: Encoding -> Text encodingName UTF8 = "UTF-8" encodingName UTF16BE = "UTF-16" encodingName UTF16LE = "UTF-16" ------------------------------------------------------------------------------ -- | Gets the encoding function from 'Text' to 'ByteString' for an encoding. encoder :: Encoding -> Text -> ByteString encoder UTF8 = T.encodeUtf8 encoder UTF16BE = T.encodeUtf16BE encoder UTF16LE = T.encodeUtf16LE ------------------------------------------------------------------------------ -- | Gets the decoding function from 'ByteString' to 'Text' for an encoding. decoder :: Encoding -> ByteString -> Text decoder UTF8 = T.decodeUtf8With (TE.replace '\xFFFF') decoder UTF16BE = T.decodeUtf16BEWith (TE.replace '\xFFFF') decoder UTF16LE = T.decodeUtf16LEWith (TE.replace '\xFFFF') ------------------------------------------------------------------------------ isUTF16 :: Encoding -> Bool isUTF16 e = e == UTF16BE || e == UTF16LE ------------------------------------------------------------------------------ fromText :: Encoding -> Text -> Builder fromText e t = fromByteString (encoder e t) xmlhtml-0.2.3.4/src/Text/XmlHtml/Cursor.hs0000644000000000000000000003403112446622357016456 0ustar0000000000000000------------------------------------------------------------------------------ -- | A zipper for navigating and modifying XML trees. This is nearly the -- same exposed interface as the @xml@ package in @Text.XML.Light.Cursor@, -- with modifications as needed to adapt to different types. module Text.XmlHtml.Cursor ( -- * Cursor type Cursor, -- * Conversion to and from cursors fromNode, fromNodes, topNode, topNodes, current, siblings, -- * Cursor navigation parent, root, getChild, firstChild, lastChild, left, right, nextDF, -- * Search findChild, findLeft, findRight, findRec, -- * Node classification isRoot, isFirst, isLast, isLeaf, isChild, hasChildren, getNodeIndex, -- * Updates setNode, modifyNode, modifyNodeM, -- * Insertions insertLeft, insertRight, insertManyLeft, insertManyRight, insertFirstChild, insertLastChild, insertManyFirstChild, insertManyLastChild, insertGoLeft, insertGoRight, -- * Deletions removeLeft, removeRight, removeGoLeft, removeGoRight, removeGoUp ) where import Control.Monad import Data.Maybe import Data.Text (Text) import Text.XmlHtml ------------------------------------------------------------------------------ -- | Just the tag of an element type Tag = (Text, [(Text, Text)]) ------------------------------------------------------------------------------ -- | Reconstructs an element from a tag and a list of its children. fromTag :: Tag -> [Node] -> Node fromTag (t,a) c = Element t a c ------------------------------------------------------------------------------ -- | A zipper for XML document forests. data Cursor = Cursor { current :: !Node, -- ^ Retrieves the current node of a 'Cursor' lefts :: ![Node], -- right to left rights :: ![Node], -- left to right parents :: ![([Node], Tag, [Node])] -- parent's tag and siblings } deriving (Eq) ------------------------------------------------------------------------------ -- | Builds a 'Cursor' for navigating a tree. That is, a forest with a single -- root 'Node'. fromNode :: Node -> Cursor fromNode n = Cursor n [] [] [] ------------------------------------------------------------------------------ -- | Builds a 'Cursor' for navigating a forest with the given list of roots. -- The cursor is initially positioned at the left-most node. Gives 'Nothing' -- if the list is empty. fromNodes :: [Node] -> Maybe Cursor fromNodes (n:ns) = Just (Cursor n [] ns []) fromNodes [] = Nothing ------------------------------------------------------------------------------ -- | Retrieves the root node containing the current cursor position. topNode :: Cursor -> Node topNode cur = current (root cur) ------------------------------------------------------------------------------ -- | Retrieves the entire forest of 'Node's corresponding to a 'Cursor'. topNodes :: Cursor -> [Node] topNodes cur = siblings (root cur) ------------------------------------------------------------------------------ -- | Retrieves a list of the 'Node's at the same level as the current position -- of a cursor, including the current node. siblings :: Cursor -> [Node] siblings (Cursor cur ls rs _) = foldl (flip (:)) (cur:rs) ls ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' to its parent in the document. parent :: Cursor -> Maybe Cursor parent c@(Cursor _ _ _ ((ls,t,rs):ps)) = Just (Cursor (fromTag t (siblings c)) ls rs ps) parent _ = Nothing ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' up through parents to reach the root level. root :: Cursor -> Cursor root = until isRoot (fromJust . parent) ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' down to the indicated child index. getChild :: Int -> Cursor -> Maybe Cursor getChild i (Cursor n ls rs ps) = case n of Element t a cs -> let (lls, rest) = splitAt i cs in if i >= length cs || i < 0 then Nothing else Just $ Cursor (head rest) (reverse lls) (tail rest) ((ls, (t,a), rs):ps) _ -> Nothing ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' down to its first child. firstChild :: Cursor -> Maybe Cursor firstChild = getChild 0 ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' down to its last child. lastChild :: Cursor -> Maybe Cursor lastChild (Cursor (Element t a c) ls rs ps) | not (null c) = let rc = reverse c in Just $ Cursor (head rc) (tail rc) [] ((ls, (t,a), rs):ps) lastChild _ = Nothing ------------------------------------------------------------------------------ -- | Moves a 'Cursor' to its left sibling. left :: Cursor -> Maybe Cursor left (Cursor c (l:ls) rs ps) = Just (Cursor l ls (c:rs) ps) left _ = Nothing ------------------------------------------------------------------------------ -- | Moves a 'Cursor' to its right sibling. right :: Cursor -> Maybe Cursor right (Cursor c ls (r:rs) ps) = Just (Cursor r (c:ls) rs ps) right _ = Nothing ------------------------------------------------------------------------------ -- | Moves a 'Cursor' to the next node encountered in a depth-first search. -- If it has children, this is equivalent to 'firstChild'. Otherwise, if it -- has a right sibling, then this is equivalent to 'right'. Otherwise, the -- cursor moves to the first right sibling of one of its parents. nextDF :: Cursor -> Maybe Cursor nextDF c = firstChild c `mplus` up c where up x = right x `mplus` (up =<< parent x) ------------------------------------------------------------------------------ -- | Repeats the given move until a 'Cursor' is obtained that matches the -- predicate. search :: (Cursor -> Bool) -- ^ predicate -> (Cursor -> Maybe Cursor) -- ^ move -> Cursor -- ^ starting point -> Maybe Cursor search p move c | p c = return c | otherwise = search p move =<< move c ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' to the first child that matches the predicate. findChild :: (Cursor -> Bool) -> Cursor -> Maybe Cursor findChild p cur = search p right =<< firstChild cur ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' to the nearest left sibling that matches a -- predicate. findLeft :: (Cursor -> Bool) -> Cursor -> Maybe Cursor findLeft p cur = search p left =<< left cur ------------------------------------------------------------------------------ -- | Navigates a 'Cursor' to the nearest right sibling that matches a -- predicate. findRight :: (Cursor -> Bool) -> Cursor -> Maybe Cursor findRight p cur = search p right =<< right cur ------------------------------------------------------------------------------ -- | Does a depth-first search for a descendant matching the predicate. This -- can match the current cursor position. findRec :: (Cursor -> Bool) -> Cursor -> Maybe Cursor findRec p = search p nextDF ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a root node. isRoot :: Cursor -> Bool isRoot cur = null (parents cur) ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a first child. isFirst :: Cursor -> Bool isFirst cur = null (lefts cur) ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a last child. isLast :: Cursor -> Bool isLast cur = null (rights cur) ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a leaf node. isLeaf :: Cursor -> Bool isLeaf (Cursor (Element _ _ c) _ _ _) = null c isLeaf _ = True ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a child node (i.e., if it has a parent). isChild :: Cursor -> Bool isChild = not . isRoot ------------------------------------------------------------------------------ -- | Determines if the 'Cursor' is at a non-leaf node (i.e., if it has -- children). hasChildren :: Cursor -> Bool hasChildren = not . isLeaf ------------------------------------------------------------------------------ -- | Gets the index of the 'Cursor' among its siblings. getNodeIndex :: Cursor -> Int getNodeIndex cur = length (lefts cur) ------------------------------------------------------------------------------ -- | Replaces the current node. setNode :: Node -> Cursor -> Cursor setNode n cur = cur { current = n } ------------------------------------------------------------------------------ -- | Modifies the current node by applying a function. modifyNode :: (Node -> Node) -> Cursor -> Cursor modifyNode f cur = setNode (f (current cur)) cur ------------------------------------------------------------------------------ -- | Modifies the current node by applying an action in some functor. modifyNodeM :: Functor m => (Node -> m Node) -> Cursor -> m Cursor modifyNodeM f cur = flip setNode cur `fmap` f (current cur) ------------------------------------------------------------------------------ -- | Inserts a new 'Node' to the left of the current position. insertLeft :: Node -> Cursor -> Cursor insertLeft n (Cursor nn ls rs ps) = Cursor nn (n:ls) rs ps ------------------------------------------------------------------------------ -- | Inserts a new 'Node' to the right of the current position. insertRight :: Node -> Cursor -> Cursor insertRight n (Cursor nn ls rs ps) = Cursor nn ls (n:rs) ps ------------------------------------------------------------------------------ -- | Inserts a list of new 'Node's to the left of the current position. insertManyLeft :: [Node] -> Cursor -> Cursor insertManyLeft ns (Cursor nn ls rs ps) = Cursor nn (reverse ns ++ ls) rs ps ------------------------------------------------------------------------------ -- | Inserts a list of new 'Node's to the right of the current position. insertManyRight :: [Node] -> Cursor -> Cursor insertManyRight ns (Cursor nn ls rs ps) = Cursor nn ls (ns ++ rs) ps ------------------------------------------------------------------------------ -- | Inserts a 'Node' as the first child of the current element. insertFirstChild :: Node -> Cursor -> Maybe Cursor insertFirstChild n (Cursor (Element t a c) ls rs ps) = Just (Cursor (Element t a (n:c)) ls rs ps) insertFirstChild _ _ = Nothing ------------------------------------------------------------------------------ -- | Inserts a 'Node' as the last child of the current element. insertLastChild :: Node -> Cursor -> Maybe Cursor insertLastChild n (Cursor (Element t a c) ls rs ps) = Just (Cursor (Element t a (c ++ [n])) ls rs ps) insertLastChild _ _ = Nothing ------------------------------------------------------------------------------ -- | Inserts a list of 'Node's as the first children of the current element. insertManyFirstChild :: [Node] -> Cursor -> Maybe Cursor insertManyFirstChild ns (Cursor (Element t a c) ls rs ps) = Just (Cursor (Element t a (ns ++ c)) ls rs ps) insertManyFirstChild _ _ = Nothing ------------------------------------------------------------------------------ -- | Inserts a list of 'Node's as the last children of the current element. insertManyLastChild :: [Node] -> Cursor -> Maybe Cursor insertManyLastChild ns (Cursor (Element t a c) ls rs ps) = Just (Cursor (Element t a (c ++ ns)) ls rs ps) insertManyLastChild _ _ = Nothing ------------------------------------------------------------------------------ -- | Inserts a new 'Node' to the left of the current position, and moves -- left to the new node. insertGoLeft :: Node -> Cursor -> Cursor insertGoLeft n (Cursor nn ls rs ps) = Cursor n ls (nn:rs) ps ------------------------------------------------------------------------------ -- | Inserts a new 'Node' to the right of the current position, and moves -- right to the new node. insertGoRight :: Node -> Cursor -> Cursor insertGoRight n (Cursor nn ls rs ps) = Cursor n (nn:ls) rs ps ------------------------------------------------------------------------------ -- | Removes the 'Node' to the left of the current position, if any. removeLeft :: Cursor -> Maybe (Node, Cursor) removeLeft (Cursor n (l:ls) rs ps) = Just (l, Cursor n ls rs ps) removeLeft _ = Nothing ------------------------------------------------------------------------------ -- | Removes the 'Node' to the right of the current position, if any. removeRight :: Cursor -> Maybe (Node, Cursor) removeRight (Cursor n ls (r:rs) ps) = Just (r, Cursor n ls rs ps) removeRight _ = Nothing ------------------------------------------------------------------------------ -- | Removes the current 'Node', and moves the Cursor to its left sibling, -- if any. removeGoLeft :: Cursor -> Maybe Cursor removeGoLeft (Cursor _ (l:ls) rs ps) = Just (Cursor l ls rs ps) removeGoLeft _ = Nothing ------------------------------------------------------------------------------ -- | Removes the current 'Node', and moves the Cursor to its right sibling, -- if any. removeGoRight :: Cursor -> Maybe Cursor removeGoRight (Cursor _ ls (r:rs) ps) = Just (Cursor r ls rs ps) removeGoRight _ = Nothing ------------------------------------------------------------------------------ -- | Removes the current 'Node', and moves the Cursor to its parent, if any. removeGoUp :: Cursor -> Maybe Cursor removeGoUp (Cursor _ ls rs ((lls, (t,a), rrs):ps)) = Just (Cursor (Element t a children) lls rrs ps) where children = foldl (flip (:)) (rs) ls removeGoUp _ = Nothing xmlhtml-0.2.3.4/src/Text/XmlHtml/TextParser.hs0000644000000000000000000001121412446622357017300 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Text.XmlHtml.TextParser ( guessEncoding , parse , isValidChar , parseText , takeWhile0 , takeWhile1 , text , scanText , ScanState(..) , module Text.Parsec.Text ) where import Control.Applicative import Data.Char import Data.Maybe import Text.XmlHtml.Common import Data.Text (Text) import qualified Data.Text as T import qualified Text.Parsec as P import Text.Parsec.Text import Data.ByteString (ByteString) import qualified Data.ByteString as B ------------------------------------------------------------------------------ -- | Get an initial guess at document encoding from the byte order mark. If -- the mark doesn't exist, guess UTF-8. Otherwise, guess according to the -- mark. guessEncoding :: ByteString -> (Encoding, ByteString) guessEncoding b | B.take 3 b == B.pack [ 0xEF, 0xBB, 0xBF ] = (UTF8, B.drop 3 b) | B.take 2 b == B.pack [ 0xFE, 0xFF ] = (UTF16BE, B.drop 2 b) | B.take 2 b == B.pack [ 0xFF, 0xFE ] = (UTF16LE, B.drop 2 b) | otherwise = (UTF8, b) ------------------------------------------------------------------------------ parse :: (Encoding -> Parser a) -> String -> ByteString -> Either String a parse p src b = let (e, b') = guessEncoding b t = decoder e b' bad = T.find (not . isValidChar) t in if isNothing bad then parseText (p e <* P.eof) src t else Left $ "Document contains invalid character:" ++ " \\" ++ show (ord (fromJust bad)) ------------------------------------------------------------------------------ -- | Checks if a document contains invalid characters. -- isValidChar :: Char -> Bool isValidChar c | c < '\x9' = False | c > '\xA' && c < '\xD' = False | c > '\xD' && c < '\x20' = False | c > '\xD7FF' && c < '\xE000' = False | c > '\xFFFD' && c < '\x10000' = False | otherwise = True ------------------------------------------------------------------------------ -- | Parses a 'Text' value and gives back the result. The parser is expected -- to match the entire string. parseText :: Parser a -- ^ The parser to match -> String -- ^ Name of the source file (can be @\"\"@) -> Text -- ^ Text to parse -> Either String a -- Either an error message or the result parseText p src t = inLeft show (P.parse p src t) where inLeft :: (a -> b) -> Either a c -> Either b c inLeft f (Left x) = Left (f x) inLeft _ (Right x) = Right x ------------------------------------------------------------------------------ -- | Consume input as long as the predicate returns 'True', and return the -- consumed input. This parser does not fail. If it matches no input, it -- will return an empty string. takeWhile0 :: (Char -> Bool) -> Parser Text takeWhile0 p = fmap T.pack $ P.many $ P.satisfy p ------------------------------------------------------------------------------ -- | Consume input as long as the predicate returns 'True', and return the -- consumed input. This parser requires the predicate to succeed on at least -- one character of input. It will fail if the first character fails the -- predicate. takeWhile1 :: (Char -> Bool) -> Parser Text takeWhile1 p = fmap T.pack $ P.many1 $ P.satisfy p ------------------------------------------------------------------------------ -- | The equivalent of Parsec's string combinator, but for text. If there is -- not a complete match, then no input is consumed. This matches the behavior -- of @string@ from the attoparsec-text package. text :: Text -> Parser Text text t = P.try $ P.string (T.unpack t) *> return t ------------------------------------------------------------------------------ -- | Represents the state of a text scanner, for use with the 'scanText' -- parser combinator. data ScanState = ScanNext (Char -> ScanState) | ScanFinish | ScanFail String ------------------------------------------------------------------------------ -- | Scans text and progresses through a DFA, collecting the complete matching -- text as it goes. scanText :: (Char -> ScanState) -> Parser String scanText f = do P.try $ do c <- P.anyChar case f c of ScanNext f' -> (c:) `fmap` scanText f' ScanFinish -> return [c] ScanFail err -> fail err xmlhtml-0.2.3.4/src/Text/XmlHtml/XML/0000755000000000000000000000000012446622357015304 5ustar0000000000000000xmlhtml-0.2.3.4/src/Text/XmlHtml/XML/Parse.hs0000644000000000000000000005422312446622357016720 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.XML.Parse where import Control.Applicative import Control.Monad import Data.Char import Data.List import Data.Maybe import Text.XmlHtml.Common import Text.XmlHtml.TextParser import qualified Text.Parsec as P import Data.Map (Map) import qualified Data.Map as M import Data.Text (Text) import qualified Data.Text as T ------------------------------------------------------------------------------ -- | This is my best guess as to the best rule for handling document fragments -- for processing. It is essentially modeled after document, but allowing -- multiple nodes. docFragment :: Encoding -> Parser Document docFragment e = do (dt, nodes1) <- prolog nodes2 <- content return $ XmlDocument e dt (nodes1 ++ nodes2) ------------------------------------------------------------------------------ -- Everything from here forward is translated from the XML specification. -- ------------------------------------------------------------------------------ {- Map from numbered productions in the XML specification to symbols here: PROD SPEC NAME PARSER NAME NOTES -----|------------------|---------------------|------- [1] document document [2] Char {2} [3] S whiteSpace [4] NameStartChar isNameStartChar {1} [4a] NameChar isNameChar {1} [5] Name name [6] Names names [7] Nmtoken nmtoken [8] Nmtokens nmtokens [9] EntityValue {4} [10] AttValue attrValue [11] SystemLiteral systemLiteral [12] PubidLiteral pubIdLiteral [13] PubidChar isPubIdChar {1} [14] CharData charData [15] Comment comment [16] PI processingInstruction [17] PITarget piTarget [18] CDSect cdSect [19] CDStart cdSect {3} [20] CData cdSect {3} [21] CDEnd cdSect {3} [22] prolog prolog [23] XMLDecl xmlDecl [24] VersionInfo versionInfo [25] Eq eq [26] VersionNum versionInfo {3} [27] Misc misc [28] doctypedecl docTypeDecl [28a] DeclSep {4} [28b] intSubset {4} [29] markupdecl {4} [30] extSubset {4} [31] extSubsetDecl {4} [32] SDDecl sdDecl [39] element element [40] STag emptyOrStartTag [41] Attribute attribute [42] ETag endTag [43] content content [44] EmptyElemTag emptyOrStartTag [45] elementDecl {4} [46] contentSpec {4} [47] children {4} [48] cp {4} [49] choice {4} [50] seq {4} [51] Mixed {4} [52] AttlistDecl {4} [53] AttDef {4} [54] AttType {4} [55] StringType {4} [56] TokenizedType {4} [57] EnumeratedType {4} [58] NotationType {4} [59] Enumeration {4} [60] DefaultDecl {4} [61] conditionalSect {4} [62] includeSect {4} [63] ignoreSect {4} [64] ignoreSectContents {4} [65] Ignore {4} [66] CharRef charRef [67] Reference reference [68] EntityRef entityRef [69] PEReference {4} [70] EntityDecl {4} [71] GEDecl {4} [72] PEDecl {4} [73] EntityDef {4} [74] PEDef {4} [75] ExternalID externalID [76] NDataDecl {4} [77] TextDecl textDecl [78] extParsedEnt extParsedEnt [80] EncodingDecl encodingDecl [81] EncName encodingDecl {3} [82] NotationDecl {4} [83] PublicID {4} [84] Letter {5} [85] BaseChar {5} [86] Ideographic {5} [87] CombiningChar {5} [88] Digit {5} [89] Extender {5} Notes: {1} - These productions match single characters, and so are implemented as predicates instead of parsers. {3} - Denotes a production which is not exposed as a top-level symbol because it is trivial and included in another definition. {4} - This module does not contain a parser for the DTD subsets, so grammar that occurs only in DTD subsets is not defined. {5} - These are orphaned productions for character classes. -} ------------------------------------------------------------------------------ whiteSpace :: Parser () whiteSpace = some (P.satisfy (`elem` [' ','\t','\r','\n'])) *> return () ------------------------------------------------------------------------------ isNameStartChar :: Char -> Bool isNameStartChar c | c == ':' = True | c == '_' = True | c >= 'a' && c <= 'z' = True | c >= 'A' && c <= 'Z' = True | c >= '\xc0' && c <= '\xd6' = True | c >= '\xd8' && c <= '\xf6' = True | c >= '\xf8' && c <= '\x2ff' = True | c >= '\x370' && c <= '\x37d' = True | c >= '\x37f' && c <= '\x1fff' = True | c >= '\x200c' && c <= '\x200d' = True | c >= '\x2070' && c <= '\x218f' = True | c >= '\x2c00' && c <= '\x2fef' = True | c >= '\x3001' && c <= '\xd7ff' = True | c >= '\xf900' && c <= '\xfdcf' = True | c >= '\xfdf0' && c <= '\xfffd' = True | c >= '\x10000' && c <= '\xeffff' = True | otherwise = False ------------------------------------------------------------------------------ isNameChar :: Char -> Bool isNameChar c | isNameStartChar c = True | c == '-' = True | c == '.' = True | c == '\xb7' = True | c >= '0' && c <= '9' = True | c >= '\x300' && c <= '\x36f' = True | c >= '\x203f' && c <= '\x2040' = True | otherwise = False ------------------------------------------------------------------------------ name :: Parser Text name = do c <- P.satisfy isNameStartChar r <- takeWhile0 isNameChar return $ T.cons c r ------------------------------------------------------------------------------ attrValue :: Parser Text attrValue = fmap T.concat (singleQuoted <|> doubleQuoted) where singleQuoted = P.char '\'' *> refTill ['<','&','\''] <* P.char '\'' doubleQuoted = P.char '"' *> refTill ['<','&','"'] <* P.char '"' refTill end = many (takeWhile1 (not . (`elem` end)) <|> reference) ------------------------------------------------------------------------------ systemLiteral :: Parser Text systemLiteral = singleQuoted <|> doubleQuoted where singleQuoted = do _ <- P.char '\'' x <- takeWhile0 (not . (== '\'')) _ <- P.char '\'' return x doubleQuoted = do _ <- P.char '\"' x <- takeWhile0 (not . (== '\"')) _ <- P.char '\"' return x ------------------------------------------------------------------------------ pubIdLiteral :: Parser Text pubIdLiteral = singleQuoted <|> doubleQuoted where singleQuoted = do _ <- P.char '\'' x <- takeWhile0 (\c -> isPubIdChar c && c /= '\'') _ <- P.char '\'' return x doubleQuoted = do _ <- P.char '\"' x <- takeWhile0 isPubIdChar _ <- P.char '\"' return x ------------------------------------------------------------------------------ isPubIdChar :: Char -> Bool isPubIdChar c | c >= 'a' && c <= 'z' = True | c >= 'A' && c <= 'Z' = True | c >= '0' && c <= '9' = True | c `elem` otherChars = True | otherwise = False where otherChars = " \r\n-\'()+,./:=?;!*#@$_%" :: [Char] ------------------------------------------------------------------------------ -- | The requirement to not contain "]]>" is for SGML compatibility. We -- deliberately choose to not enforce it. This makes the parser accept -- strictly more documents than a standards-compliant parser. charData :: Parser Node charData = TextNode <$> takeWhile1 (not . (`elem` ['<','&'])) ------------------------------------------------------------------------------ comment :: Parser (Maybe Node) comment = text "" where commentText = fmap T.concat $ many $ nonDash <|> P.try (T.cons <$> P.char '-' <*> nonDash) nonDash = takeWhile1 (not . (== '-')) ------------------------------------------------------------------------------ -- | Always returns Nothing since there's no representation for a PI in the -- document tree. processingInstruction :: Parser (Maybe Node) processingInstruction = do _ <- text " contentEnd return Nothing where emptyEnd = P.try (P.string "?>") contentEnd = P.try $ do _ <- whiteSpace P.manyTill P.anyChar (P.try $ text "?>") ------------------------------------------------------------------------------ piTarget :: Parser () piTarget = do n <- name when (T.map toLower n == "xml") $ fail "xml declaration can't occur here" ------------------------------------------------------------------------------ cdata :: [Char] -> Parser a -> Parser Node cdata cs end = TextNode <$> T.concat <$> P.manyTill part end where part = takeWhile1 (not . (`elem` cs)) <|> T.singleton <$> P.anyChar ------------------------------------------------------------------------------ cdSect :: Parser (Maybe Node) cdSect = Just <$> do _ <- text "") ------------------------------------------------------------------------------ prolog :: Parser (Maybe DocType, [Node]) prolog = do _ <- optional xmlDecl nodes1 <- many misc rest <- optional $ do dt <- docTypeDecl nodes2 <- many misc return (dt, nodes2) case rest of Nothing -> return (Nothing, catMaybes nodes1) Just (dt, nodes2) -> return (Just dt, catMaybes (nodes1 ++ nodes2)) ------------------------------------------------------------------------------ -- | Return value is the encoding, if present. xmlDecl :: Parser (Maybe Text) xmlDecl = do _ <- text "" return e ------------------------------------------------------------------------------ versionInfo :: Parser () versionInfo = do whiteSpace *> text "version" *> eq *> (singleQuoted <|> doubleQuoted) where singleQuoted = P.char '\'' *> versionNum <* P.char '\'' doubleQuoted = P.char '\"' *> versionNum <* P.char '\"' versionNum = do _ <- text "1." _ <- some (P.satisfy (\c -> c >= '0' && c <= '9')) return () ------------------------------------------------------------------------------ eq :: Parser () eq = optional whiteSpace *> P.char '=' *> optional whiteSpace *> return () ------------------------------------------------------------------------------ misc :: Parser (Maybe Node) misc = comment <|> processingInstruction <|> (whiteSpace *> return Nothing) ------------------------------------------------------------------------------ -- | Internal subset is parsed, but ignored since we don't have data types to -- store it. docTypeDecl :: Parser DocType docTypeDecl = do _ <- text "' return (DocType tag extid intsub) ------------------------------------------------------------------------------ -- | States for the DOCTYPE internal subset state machine. data InternalDoctypeState = IDSStart | IDSScanning Int | IDSInQuote Int Char | IDSCommentS1 Int | IDSCommentS2 Int | IDSCommentS3 Int | IDSComment Int | IDSCommentD1 Int | IDSCommentE1 Int ------------------------------------------------------------------------------ -- | Internal DOCTYPE subset. We don't actually parse this; just scan through -- and look for the end, and store it in a block of text. internalDoctype :: Parser InternalSubset internalDoctype = InternalText <$> T.pack <$> scanText (dfa IDSStart) <|> return NoInternalSubset where dfa IDSStart '[' = ScanNext (dfa (IDSScanning 0)) dfa IDSStart _ = ScanFail "Not a DOCTYPE internal subset" dfa (IDSInQuote n c) d | c == d = ScanNext (dfa (IDSScanning n)) | otherwise = ScanNext (dfa (IDSInQuote n c)) dfa (IDSScanning n) '[' = ScanNext (dfa (IDSScanning (n+1))) dfa (IDSScanning 0) ']' = ScanFinish dfa (IDSScanning n) ']' = ScanNext (dfa (IDSScanning (n-1))) dfa (IDSScanning n) '\'' = ScanNext (dfa (IDSInQuote n '\'')) dfa (IDSScanning n) '\"' = ScanNext (dfa (IDSInQuote n '\"')) dfa (IDSScanning n) '<' = ScanNext (dfa (IDSCommentS1 n)) dfa (IDSScanning n) _ = ScanNext (dfa (IDSScanning n)) dfa (IDSCommentS1 n) '[' = ScanNext (dfa (IDSScanning (n+1))) dfa (IDSCommentS1 0) ']' = ScanFinish dfa (IDSCommentS1 n) ']' = ScanNext (dfa (IDSScanning (n-1))) dfa (IDSCommentS1 n) '\'' = ScanNext (dfa (IDSInQuote n '\'')) dfa (IDSCommentS1 n) '\"' = ScanNext (dfa (IDSInQuote n '\"')) dfa (IDSCommentS1 n) '!' = ScanNext (dfa (IDSCommentS2 n)) dfa (IDSCommentS1 n) _ = ScanNext (dfa (IDSScanning n)) dfa (IDSCommentS2 n) '[' = ScanNext (dfa (IDSScanning (n+1))) dfa (IDSCommentS2 0) ']' = ScanFinish dfa (IDSCommentS2 n) ']' = ScanNext (dfa (IDSScanning (n-1))) dfa (IDSCommentS2 n) '\'' = ScanNext (dfa (IDSInQuote n '\'')) dfa (IDSCommentS2 n) '\"' = ScanNext (dfa (IDSInQuote n '\"')) dfa (IDSCommentS2 n) '-' = ScanNext (dfa (IDSCommentS3 n)) dfa (IDSCommentS2 n) _ = ScanNext (dfa (IDSScanning n)) dfa (IDSCommentS3 n) '[' = ScanNext (dfa (IDSScanning (n+1))) dfa (IDSCommentS3 0) ']' = ScanFinish dfa (IDSCommentS3 n) ']' = ScanNext (dfa (IDSScanning (n-1))) dfa (IDSCommentS3 n) '\'' = ScanNext (dfa (IDSInQuote n '\'')) dfa (IDSCommentS3 n) '\"' = ScanNext (dfa (IDSInQuote n '\"')) dfa (IDSCommentS3 n) '-' = ScanNext (dfa (IDSComment n)) dfa (IDSCommentS3 n) _ = ScanNext (dfa (IDSScanning n)) dfa (IDSComment n) '-' = ScanNext (dfa (IDSCommentD1 n)) dfa (IDSComment n) _ = ScanNext (dfa (IDSComment n)) dfa (IDSCommentD1 n) '-' = ScanNext (dfa (IDSCommentE1 n)) dfa (IDSCommentD1 n) _ = ScanNext (dfa (IDSComment n)) dfa (IDSCommentE1 n) '>' = ScanNext (dfa (IDSScanning n)) dfa (IDSCommentE1 _) _ = ScanFail "Poorly formatted comment" ------------------------------------------------------------------------------ sdDecl :: Parser () sdDecl = do _ <- P.try $ whiteSpace *> text "standalone" eq _ <- single <|> double return () where single = P.char '\'' *> yesno <* P.char '\'' double = P.char '\"' *> yesno <* P.char '\"' yesno = text "yes" <|> text "no" ------------------------------------------------------------------------------ element :: Parser Node element = do (t,a,b) <- emptyOrStartTag if b then return (Element t a []) else nonEmptyElem t a where nonEmptyElem t a = do c <- content endTag t return (Element t a c) ------------------------------------------------------------------------------ -- | Results are (tag name, attributes, isEmpty) emptyOrStartTag :: Parser (Text, [(Text, Text)], Bool) emptyOrStartTag = do t <- P.try $ P.char '<' *> name a <- many $ P.try $ do whiteSpace attribute when (hasDups a) $ fail "Duplicate attribute names in element" _ <- optional whiteSpace e <- optional (P.char '/') _ <- P.char '>' return (t, a, isJust e) where hasDups a = length (nub (map fst a)) < length a ------------------------------------------------------------------------------ attribute :: Parser (Text, Text) attribute = do n <- name eq v <- attrValue return (n,v) ------------------------------------------------------------------------------ endTag :: Text -> Parser () endTag s = do _ <- text " found inside <" ++ T.unpack s ++ "> tag" _ <- optional whiteSpace _ <- text ">" return () ------------------------------------------------------------------------------ content :: Parser [Node] content = do n <- optional charData ns <- fmap concat $ many $ do s <- ((Just <$> TextNode <$> reference) <|> cdSect <|> processingInstruction <|> comment <|> fmap Just element) t <- optional charData return [s,t] return $ coalesceText $ catMaybes (n:ns) where coalesceText (TextNode s : TextNode t : ns) = coalesceText (TextNode (T.append s t) : ns) coalesceText (n:ns) = n : coalesceText ns coalesceText [] = [] ------------------------------------------------------------------------------ charRef :: Parser Text charRef = hexCharRef <|> decCharRef where decCharRef = do _ <- text "&#" ds <- some digit _ <- P.char ';' let c = chr $ foldl' (\a b -> 10 * a + b) 0 ds when (not (isValidChar c)) $ fail $ "Reference is not a valid character" return $ T.singleton c where digit = do d <- P.satisfy (\c -> c >= '0' && c <= '9') return (ord d - ord '0') hexCharRef = do _ <- text "&#x" ds <- some digit _ <- P.char ';' let c = chr $ foldl' (\a b -> 16 * a + b) 0 ds when (not (isValidChar c)) $ fail $ "Reference is not a valid character" return $ T.singleton c where digit = num <|> upper <|> lower num = do d <- P.satisfy (\c -> c >= '0' && c <= '9') return (ord d - ord '0') upper = do d <- P.satisfy (\c -> c >= 'A' && c <= 'F') return (10 + ord d - ord 'A') lower = do d <- P.satisfy (\c -> c >= 'a' && c <= 'f') return (10 + ord d - ord 'a') ------------------------------------------------------------------------------ reference :: Parser Text reference = charRef <|> entityRef ------------------------------------------------------------------------------ entityRef :: Parser Text entityRef = do _ <- P.char '&' n <- name _ <- P.char ';' case M.lookup n entityRefLookup of Nothing -> fail $ "Unknown entity reference: " ++ T.unpack n Just t -> return t where entityRefLookup :: Map Text Text entityRefLookup = M.fromList [ ("amp", "&"), ("lt", "<"), ("gt", ">"), ("apos", "\'"), ("quot", "\"") ] ------------------------------------------------------------------------------ externalID :: Parser ExternalID externalID = systemID <|> publicID <|> return NoExternalID where systemID = do _ <- text "SYSTEM" whiteSpace fmap System systemLiteral publicID = do _ <- text "PUBLIC" whiteSpace pid <- pubIdLiteral whiteSpace sid <- systemLiteral return (Public pid sid) ------------------------------------------------------------------------------ encodingDecl :: Parser Text encodingDecl = do _ <- P.try $ whiteSpace *> text "encoding" _ <- eq singleQuoted <|> doubleQuoted where singleQuoted = P.char '\'' *> encName <* P.char '\'' doubleQuoted = P.char '\"' *> encName <* P.char '\"' encName = do c <- P.satisfy isEncStart cs <- takeWhile0 isEnc return (T.cons c cs) isEncStart c | c >= 'A' && c <= 'Z' = True | c >= 'a' && c <= 'z' = True | otherwise = False isEnc c | c >= 'A' && c <= 'Z' = True | c >= 'a' && c <= 'z' = True | c >= '0' && c <= '9' = True | c `elem` ['.','_','-'] = True | otherwise = False xmlhtml-0.2.3.4/src/Text/XmlHtml/XML/Render.hs0000644000000000000000000001560312446622357017064 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.XML.Render where import Blaze.ByteString.Builder import Data.Char import Data.Maybe import Data.Monoid import Text.XmlHtml.Common import Data.Text (Text) import qualified Data.Text as T ------------------------------------------------------------------------------ render :: Encoding -> Maybe DocType -> [Node] -> Builder render e dt ns = byteOrder `mappend` xmlDecl e `mappend` docTypeDecl e dt `mappend` nodes where byteOrder | isUTF16 e = fromText e "\xFEFF" -- byte order mark | otherwise = mempty nodes | null ns = mempty | otherwise = firstNode e (head ns) `mappend` (mconcat $ map (node e) (tail ns)) ------------------------------------------------------------------------------ -- | Function for rendering XML nodes without the overhead of creating a -- Document structure. renderXmlFragment :: Encoding -> [Node] -> Builder renderXmlFragment _ [] = mempty renderXmlFragment e (n:ns) = firstNode e n `mappend` (mconcat $ map (node e) ns) ------------------------------------------------------------------------------ xmlDecl :: Encoding -> Builder xmlDecl e = fromText e "\n" ------------------------------------------------------------------------------ docTypeDecl :: Encoding -> Maybe DocType -> Builder docTypeDecl _ Nothing = mempty docTypeDecl e (Just (DocType tag ext int)) = fromText e "\n" ------------------------------------------------------------------------------ externalID :: Encoding -> ExternalID -> Builder externalID _ NoExternalID = mempty externalID e (System sid) = fromText e " SYSTEM " `mappend` sysID e sid externalID e (Public pid sid) = fromText e " PUBLIC " `mappend` pubID e pid `mappend` fromText e " " `mappend` sysID e sid ------------------------------------------------------------------------------ internalSubset :: Encoding -> InternalSubset -> Builder internalSubset _ NoInternalSubset = mempty internalSubset e (InternalText t) = fromText e " " `mappend` fromText e t ------------------------------------------------------------------------------ sysID :: Encoding -> Text -> Builder sysID e sid | not ("\'" `T.isInfixOf` sid) = fromText e "\'" `mappend` fromText e sid `mappend` fromText e "\'" | not ("\"" `T.isInfixOf` sid) = fromText e "\"" `mappend` fromText e sid `mappend` fromText e "\"" | otherwise = error "SYSTEM id is invalid" ------------------------------------------------------------------------------ pubID :: Encoding -> Text -> Builder pubID e sid | not ("\"" `T.isInfixOf` sid) = fromText e "\"" `mappend` fromText e sid `mappend` fromText e "\"" | otherwise = error "PUBLIC id is invalid" ------------------------------------------------------------------------------ node :: Encoding -> Node -> Builder node e (TextNode t) = escaped "<>&" e t node e (Comment t) | "--" `T.isInfixOf` t = error "Invalid comment" | "-" `T.isSuffixOf` t = error "Invalid comment" | otherwise = fromText e "" node e (Element t a c) = element e t a c ------------------------------------------------------------------------------ -- | Process the first node differently to encode leading whitespace. This -- lets us be sure that @parseXML@ is a left inverse to @render@. firstNode :: Encoding -> Node -> Builder firstNode e (Comment t) = node e (Comment t) firstNode e (Element t a c) = node e (Element t a c) firstNode _ (TextNode "") = mempty firstNode e (TextNode t) = let (c,t') = fromJust $ T.uncons t in escaped "<>& \t\r\n" e (T.singleton c) `mappend` node e (TextNode t') ------------------------------------------------------------------------------ escaped :: [Char] -> Encoding -> Text -> Builder escaped _ _ "" = mempty escaped bad e t = let (p,s) = T.break (`elem` bad) t r = T.uncons s in fromText e p `mappend` case r of Nothing -> mempty Just (c,ss) -> entity e c `mappend` escaped bad e ss ------------------------------------------------------------------------------ entity :: Encoding -> Char -> Builder entity e '&' = fromText e "&" entity e '<' = fromText e "<" entity e '>' = fromText e ">" entity e '\"' = fromText e """ entity e c = fromText e "&#" `mappend` fromText e (T.pack (show (ord c))) `mappend` fromText e ";" ------------------------------------------------------------------------------ element :: Encoding -> Text -> [(Text, Text)] -> [Node] -> Builder element e t a [] = fromText e "<" `mappend` fromText e t `mappend` (mconcat $ map (attribute e) a) `mappend` fromText e "/>" element e t a c = fromText e "<" `mappend` fromText e t `mappend` (mconcat $ map (attribute e) a) `mappend` fromText e ">" `mappend` (mconcat $ map (node e) c) `mappend` fromText e "" ------------------------------------------------------------------------------ attribute :: Encoding -> (Text, Text) -> Builder attribute e (n,v) | not ("\'" `T.isInfixOf` v) = fromText e " " `mappend` fromText e n `mappend` fromText e "=\'" `mappend` escaped "<&" e v `mappend` fromText e "\'" | otherwise = fromText e " " `mappend` fromText e n `mappend` fromText e "=\"" `mappend` escaped "<&\"" e v `mappend` fromText e "\"" xmlhtml-0.2.3.4/src/Text/XmlHtml/HTML/0000755000000000000000000000000012446622357015410 5ustar0000000000000000xmlhtml-0.2.3.4/src/Text/XmlHtml/HTML/Parse.hs0000644000000000000000000003165612446622357017031 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} module Text.XmlHtml.HTML.Parse where import Control.Applicative import Control.Monad import Data.Char import Data.List import Data.Maybe import Text.XmlHtml.Common import Text.XmlHtml.HTML.Meta import Text.XmlHtml.TextParser import qualified Text.XmlHtml.XML.Parse as XML import qualified Text.Parsec as P import qualified Data.HashSet as S import qualified Data.HashMap.Strict as M import Data.Text (Text) import qualified Data.Text as T ------------------------------------------------------------------------------ -- | HTML version of document fragment parsing rule It differs only in that -- it parses the HTML version of 'content' and returns an 'HtmlDocument'. docFragment :: Encoding -> Parser Document docFragment e = do (dt, nodes1) <- prolog (nodes2, Matched) <- content Nothing return $ HtmlDocument e dt (nodes1 ++ nodes2) ------------------------------------------------------------------------------ -- Parsing code -- ------------------------------------------------------------------------------ {- The following are the differences between this code and the straight XML parsing code. 1. HTML void tags (area, base, etc.) are always treated as empty tags, regardless of whether they have the empty-tag slash. 2. HTML raw text tags (script and style) are parsed as straight text with neither markup nor references, except that they end at the first syntactically valid matching end tag. 3. End tags need only match their corresponding start tags in a case insensitive comparison. In case they are different, the start tag is used for the element tag name. 4. Hexadecimal char references may use &#X...; (capital X) -- DONE 5. Attribute names are allowed to consist of any text except for control characters, space, '\"', '\'', '>', '/', or '='. 6. Empty attribute syntax is allowed (an attribute not followed by an eq). In this case, the attribute value is considered to be the empty string. 7. Quoted attribute syntax is relaxed to allow any character except for the matching quote. References are allowed. 8. Attribute values may be unquoted. In this case, the attribute value may not contain space, single or double quotes, '=', '<', '>', or '`', and may not be the empty string. It can still contain references. 9. There are many more character references available. 10. Only "ambiguous" ampersands are prohibited in character data. This means ampersands that parse like character or entity references. 11. Omittable end tags are inserted automatically. 12. DOCTYPE tags matched with case insensitive keywords. -} ------------------------------------------------------------------------------ prolog :: Parser (Maybe DocType, [Node]) prolog = do _ <- optional XML.xmlDecl nodes1 <- many XML.misc rest <- optional $ do dt <- docTypeDecl nodes2 <- many XML.misc return (dt, nodes2) case rest of Nothing -> return (Nothing, catMaybes nodes1) Just (dt, nodes2) -> return (Just dt, catMaybes (nodes1 ++ nodes2)) ------------------------------------------------------------------------------ -- | Internal subset is parsed, but ignored since we don't have data types to -- store it. docTypeDecl :: Parser DocType docTypeDecl = do P.try $ do _ <- text "' return (DocType tag extid intsub) ------------------------------------------------------------------------------ externalID :: Parser ExternalID externalID = do tok <- optional $ T.toLower <$> XML.name case tok of Just "system" -> systemID Just "public" -> publicID Just _ -> fail "Expected SYSTEM or PUBLIC" Nothing -> return NoExternalID where systemID = do XML.whiteSpace System <$> XML.systemLiteral publicID = do XML.whiteSpace pid <- XML.pubIdLiteral XML.whiteSpace sid <- XML.systemLiteral return (Public pid sid) ------------------------------------------------------------------------------ -- | When parsing an element, three things can happen (besides failure): -- -- (1) The end tag matches the start tag. This is a Matched. -- -- (2) The end tag does not match, but the element has an end tag that can be -- omitted when there is no more content in its parent. This is an -- ImplicitLast. In this case, we need to remember the tag name of the -- end tag that we did find, so as to match it later. -- -- (3) A start tag is found such that it implicitly ends the current element. -- This is an ImplicitNext. In this case, we parse and remember the -- entire element that comes next, so that it can be inserted after the -- element being parsed. data ElemResult = Matched | ImplicitLast Text | ImplicitNext Text Text [(Text, Text)] Bool ------------------------------------------------------------------------------ finishElement :: Text -> Text -> [(Text, Text)] -> Bool -> Parser (Node, ElemResult) finishElement t tbase a b = do if b then return (Element t a [], Matched) else nonEmptyElem where nonEmptyElem | isRawText tbase a = do c <- XML.cdata "<" $ P.try (endTag t) return (Element t a [c], Matched) | tbase `S.member` endOmittableLast = tagContents optional | otherwise = tagContents (fmap Just) tagContents modifier = do (c,r1) <- content (Just tbase) case r1 of Matched -> do r2 <- modifier (endTag t) case r2 of Nothing -> return (Element t a c, Matched) Just rr -> return (Element t a c, rr) ImplicitLast tag | T.toCaseFold tag == T.toCaseFold t -> do return (Element t a c, Matched) end -> do return (Element t a c, end) ------------------------------------------------------------------------------ emptyOrStartTag :: Parser (Text, Text, [(Text, Text)], Bool) emptyOrStartTag = do t <- P.try $ P.char '<' *> XML.name let tbase = T.toLower $ snd $ T.breakOnEnd ":" t a <- many $ P.try $ do XML.whiteSpace attribute when (hasDups a) $ fail "Duplicate attribute names in element" _ <- optional XML.whiteSpace e <- fmap isJust $ optional (P.char '/') let e' = e || (tbase `S.member` voidTags) _ <- P.char '>' return (t, tbase, a, e') where hasDups a = length (nub (map fst a)) < length a ------------------------------------------------------------------------------ attrName :: Parser Text attrName = takeWhile1 isAttrName where isAttrName c | c `elem` ['\0',' ','"','\'','>','/','='] = False | isControlChar c = False | otherwise = True ------------------------------------------------------------------------------ -- | From 8.2.2.3 of the HTML 5 spec, omitting the very high control -- characters because they are unlikely to occur and I got tired of typing. isControlChar :: Char -> Bool isControlChar c | c >= '\x007F' && c <= '\x009F' = True | c >= '\xFDD0' && c <= '\xFDEF' = True | otherwise = False ------------------------------------------------------------------------------ quotedAttrValue :: Parser Text quotedAttrValue = singleQuoted <|> doubleQuoted where singleQuoted = P.char '\'' *> refTill ['&','\''] <* P.char '\'' doubleQuoted = P.char '"' *> refTill ['&','"'] <* P.char '"' refTill end = T.concat <$> many (takeWhile1 (not . (`elem` end)) <|> reference) ------------------------------------------------------------------------------ unquotedAttrValue :: Parser Text unquotedAttrValue = refTill [' ','"','\'','=','<','>','&','`'] where refTill end = T.concat <$> some (takeWhile1 (not . (`elem` end)) <|> reference) ------------------------------------------------------------------------------ attrValue :: Parser Text attrValue = quotedAttrValue <|> unquotedAttrValue ------------------------------------------------------------------------------ attribute :: Parser (Text, Text) attribute = do n <- attrName v <- optional $ do _ <- P.try $ do _ <- optional XML.whiteSpace P.char '=' _ <- optional XML.whiteSpace attrValue return $ maybe (n,"") (n,) v ------------------------------------------------------------------------------ endTag :: Text -> Parser ElemResult endTag s = do _ <- text " found inside <" ++ T.unpack s ++ "> tag" _ <- optional XML.whiteSpace _ <- text ">" return r ------------------------------------------------------------------------------ content :: Maybe Text -> Parser ([Node], ElemResult) content parent = do (ns, end) <- readText return (coalesceText (catMaybes ns), end) where readText = do s <- optional XML.charData t <- optional whileMatched case t of Nothing -> return ([s], Matched) Just (tt, m) -> return (s:tt, m) whileMatched = do (n,end) <- (,Matched) <$> (:[]) <$> Just <$> TextNode <$> reference <|> (,Matched) <$> (:[]) <$> XML.cdSect <|> (,Matched) <$> (:[]) <$> XML.processingInstruction <|> (,Matched) <$> (:[]) <$> XML.comment <|> doElement case end of Matched -> do (ns, end') <- readText return (n ++ ns, end') _ -> do return (n, end) doElement = do (t,tb, a,b) <- emptyOrStartTag handle t tb a b handle t tb a b = do if breaksTag tb parent then return ([Nothing], ImplicitNext t tb a b) else do (n,end) <- finishElement t tb a b case end of ImplicitNext t' tb' a' b' -> do (ns,end') <- handle t' tb' a' b' return (Just n : ns, end') _ -> return ([Just n], end) breaksTag _ Nothing = False breaksTag child (Just tag) = case M.lookup tag endOmittableNext of Nothing -> False Just s -> S.member child s coalesceText (TextNode s : TextNode t : ns) = coalesceText (TextNode (T.append s t) : ns) coalesceText (n:ns) = n : coalesceText ns coalesceText [] = [] ------------------------------------------------------------------------------ reference :: Parser Text reference = do _ <- P.char '&' r <- (Left <$> P.try finishCharRef) <|> (Right <$> P.try finishEntityRef) <|> (Left <$> return '&') case r of Left c -> do when (not (isValidChar c)) $ fail $ "Reference is not a valid character" return (T.singleton c) Right nm -> case M.lookup nm predefinedRefs of Nothing -> fail $ "Unknown entity reference: " ++ T.unpack nm Just t -> return t ------------------------------------------------------------------------------ finishCharRef :: Parser Char finishCharRef = P.char '#' *> (hexCharRef <|> decCharRef) where decCharRef = do ds <- some digit _ <- P.char ';' let c = chr $ foldl' (\a b -> 10 * a + b) 0 ds return c where digit = do d <- P.satisfy (\c -> c >= '0' && c <= '9') return (ord d - ord '0') hexCharRef = do _ <- P.char 'x' <|> P.char 'X' ds <- some digit _ <- P.char ';' let c = chr $ foldl' (\a b -> 16 * a + b) 0 ds return c where digit = num <|> upper <|> lower num = do d <- P.satisfy (\c -> c >= '0' && c <= '9') return (ord d - ord '0') upper = do d <- P.satisfy (\c -> c >= 'A' && c <= 'F') return (10 + ord d - ord 'A') lower = do d <- P.satisfy (\c -> c >= 'a' && c <= 'f') return (10 + ord d - ord 'a') ------------------------------------------------------------------------------ finishEntityRef :: Parser Text finishEntityRef = XML.name <* P.char ';' xmlhtml-0.2.3.4/src/Text/XmlHtml/HTML/Meta.hs0000644000000000000000000020707112446622357016641 0ustar0000000000000000{-# OPTIONS_GHC -O0 -fno-case-merge -fno-strictness -fno-cse #-} {-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.HTML.Meta ( voidTags , rawTextTags , isRawText , endOmittableLast , endOmittableNext , predefinedRefs ) where import Data.Monoid import Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as M import Data.HashSet (HashSet) import qualified Data.HashSet as S import Data.Text (Text) ------------------------------------------------------------------------------ -- Metadata used for HTML5 quirks mode. -- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- | Void elements as defined by the HTML5 spec. {-# NOINLINE voidTags #-} voidTags :: HashSet Text voidTags = S.fromList [ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ] ------------------------------------------------------------------------------ -- | Elements that XmlHtml treats as raw text by default. Raw text elements -- are not allowed to have any other tags in them. This is necessary to -- support the Javascript less than operator inside a script tag, for example. -- -- The library uses the 'isRawText' function everywhere instead of checking -- this set directly because that gives us an escape hatch to avoid the -- default behavior if necessary. {-# NOINLINE rawTextTags #-} rawTextTags :: HashSet Text rawTextTags = S.fromList [ "script", "style" ] ------------------------------------------------------------------------------ -- | Determine whether a tag should be treated as raw text. Raw text elements -- are not allowed to have any other tags in them. This is necessary to -- support the Javascript less than operator inside a script tag, for example. -- -- If a tag is in the 'rawTextTags' set, this function allows you to override -- that behavior by adding the @xmlhtmlNotRaw@ attribute. Conversely, if a -- tag is not in the 'rawTextTags' set, this function allows you to override -- that by adding the @xmlhtmlRaw@ attribute to the tag. -- -- This is the function that is actually used in the parser and renderer. -- 'rawTextTags' is not used any more, but is still provided for backwards -- compatibility and to let you see which tags are treated as raw by default. {-# NOINLINE isRawText #-} isRawText :: Text -> [(Text, Text)] -> Bool isRawText tag as = if tag `S.member` rawTextTags then ("xmlhtmlNotRaw", "") `notElem` as else ("xmlhtmlRaw", "") `elem` as ------------------------------------------------------------------------------ -- | List of elements with omittable end tags. {-# NOINLINE endOmittableLast #-} endOmittableLast :: HashSet Text endOmittableLast = S.fromList [ -- Tags which can be implicitly ended in case they are the last element in -- their parent. This list actually includes all of the elements that -- have any kind of omittable end tag, since in general when an element -- with an omittable end tag isn't specified to be omittable in this way, -- it's just because in a complete document it isn't expected to ever be -- the last thing in its parent. We aren't interested in enforcing -- element structure rules, so we'll allow it anyway. "body", "colgroup", "dd", "dt", "head", "html", "li", "optgroup", "option", "p", "rp", "rt", "tbody", "td", "tfoot", "th", "thead", "tr" ] ------------------------------------------------------------------------------ -- | Tags which should be considered automatically ended in case one of a -- certain set of tags pops up. {-# NOINLINE endOmittableNext #-} endOmittableNext :: HashMap Text (HashSet Text) endOmittableNext = M.fromList [ ("colgroup", S.fromList ["caption", "colgroup", "tbody", "thead", "tfoot", "tr"]), ("dd", S.fromList ["dd", "dt"]), ("dt", S.fromList ["dd", "dt"]), ("head", S.fromList ["body"]), ("li", S.fromList ["li"]), ("optgroup", S.fromList ["optgroup"]), ("option", S.fromList ["optgroup", "option"]), ("p", S.fromList ["address", "article", "aside", "blockquote", "dir", "div", "dl", "fieldset", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "hr", "menu", "nav", "ol", "p", "pre", "section", "table", "ul"]), ("rp", S.fromList ["rp", "rt"]), ("rt", S.fromList ["rp", "rt"]), ("tbody", S.fromList ["tbody", "tfoot", "thead"]), ("td", S.fromList ["td", "th"]), ("tfoot", S.fromList ["tbody", "tfoot", "thead"]), ("th", S.fromList ["td", "th"]), ("thead", S.fromList ["tbody", "tfoot", "thead"]), ("tr", S.fromList ["tr"]) ] ------------------------------------------------------------------------------ -- | Predefined character entity references as defined by the HTML5 spec. {-# NOINLINE predefinedRefs #-} predefinedRefs :: HashMap Text Text predefinedRefs = mconcat $ map M.fromList [ reftab1 , reftab2 , reftab3 , reftab4 , reftab5 , reftab6 , reftab7 , reftab8 , reftab9 , reftab10 , reftab11 , reftab12 , reftab13 , reftab14 , reftab15 , reftab16 , reftab17 , reftab18 , reftab19 , reftab20 , reftab21 , reftab22 , reftab23 , reftab24 , reftab25 , reftab26 , reftab27 , reftab28 , reftab29 , reftab30 , reftab31 , reftab32 , reftab33 , reftab34 , reftab35 , reftab36 , reftab37 , reftab38 , reftab39 , reftab40 , reftab41 , reftab42 , reftab43 , reftab44 , reftab45 , reftab46 , reftab47 , reftab48 , reftab49 , reftab50 , reftab51 , reftab52 , reftab53 , reftab54 , reftab55 , reftab56 , reftab57 , reftab58 ] {-# NOINLINE reftab1 #-} reftab1 :: [(Text,Text)] reftab1 = [ ("AElig", "\x000C6"), ("AMP", "\x00026"), ("Aacute", "\x000C1"), ("Abreve", "\x00102"), ("Acirc", "\x000C2"), ("Acy", "\x00410"), ("Afr", "\x1D504"), ("Agrave", "\x000C0"), ("Alpha", "\x00391"), ("Amacr", "\x00100"), ("And", "\x02A53"), ("Aogon", "\x00104"), ("Aopf", "\x1D538"), ("ApplyFunction", "\x02061"), ("Aring", "\x000C5"), ("Ascr", "\x1D49C"), ("Assign", "\x02254"), ("Atilde", "\x000C3"), ("Auml", "\x000C4"), ("Backslash", "\x02216"), ("Barv", "\x02AE7"), ("Barwed", "\x02306"), ("Bcy", "\x00411"), ("Because", "\x02235"), ("Bernoullis", "\x0212C"), ("Beta", "\x00392"), ("Bfr", "\x1D505"), ("Bopf", "\x1D539"), ("Breve", "\x002D8"), ("Bscr", "\x0212C"), ("Bumpeq", "\x0224E"), ("CHcy", "\x00427"), ("COPY", "\x000A9"), ("Cacute", "\x00106"), ("Cap", "\x022D2"), ("CapitalDifferentialD", "\x02145"), ("Cayleys", "\x0212D") ] {-# NOINLINE reftab2 #-} reftab2 :: [(Text,Text)] reftab2 = [ ("Ccaron", "\x0010C"), ("Ccedil", "\x000C7"), ("Ccirc", "\x00108"), ("Cconint", "\x02230"), ("Cdot", "\x0010A"), ("Cedilla", "\x000B8"), ("CenterDot", "\x000B7"), ("Cfr", "\x0212D"), ("Chi", "\x003A7"), ("CircleDot", "\x02299"), ("CircleMinus", "\x02296"), ("CirclePlus", "\x02295"), ("CircleTimes", "\x02297"), ("ClockwiseContourIntegral", "\x02232"), ("CloseCurlyDoubleQuote", "\x0201D"), ("CloseCurlyQuote", "\x02019"), ("Colon", "\x02237"), ("Colone", "\x02A74"), ("Congruent", "\x02261"), ("Conint", "\x0222F"), ("ContourIntegral", "\x0222E"), ("Copf", "\x02102"), ("Coproduct", "\x02210"), ("CounterClockwiseContourIntegral", "\x02233"), ("Cross", "\x02A2F"), ("Cscr", "\x1D49E"), ("Cup", "\x022D3"), ("CupCap", "\x0224D"), ("DD", "\x02145"), ("DDotrahd", "\x02911"), ("DJcy", "\x00402"), ("DScy", "\x00405"), ("DZcy", "\x0040F"), ("Dagger", "\x02021"), ("Darr", "\x021A1"), ("Dashv", "\x02AE4"), ("Dcaron", "\x0010E") ] {-# NOINLINE reftab3 #-} reftab3 :: [(Text,Text)] reftab3 = [ ("Dcy", "\x00414"), ("Del", "\x02207"), ("Delta", "\x00394"), ("Dfr", "\x1D507"), ("DiacriticalAcute", "\x000B4"), ("DiacriticalDot", "\x002D9"), ("DiacriticalDoubleAcute", "\x002DD"), ("DiacriticalGrave", "\x00060"), ("DiacriticalTilde", "\x002DC"), ("Diamond", "\x022C4"), ("DifferentialD", "\x02146"), ("Dopf", "\x1D53B"), ("Dot", "\x000A8"), ("DotDot", "\x020DC"), ("DotEqual", "\x02250"), ("DoubleContourIntegral", "\x0222F"), ("DoubleDot", "\x000A8"), ("DoubleDownArrow", "\x021D3"), ("DoubleLeftArrow", "\x021D0"), ("DoubleLeftRightArrow", "\x021D4"), ("DoubleLeftTee", "\x02AE4"), ("DoubleLongLeftArrow", "\x027F8"), ("DoubleLongLeftRightArrow", "\x027FA"), ("DoubleLongRightArrow", "\x027F9"), ("DoubleRightArrow", "\x021D2"), ("DoubleRightTee", "\x022A8"), ("DoubleUpArrow", "\x021D1"), ("DoubleUpDownArrow", "\x021D5"), ("DoubleVerticalBar", "\x02225"), ("DownArrow", "\x02193"), ("DownArrowBar", "\x02913"), ("DownArrowUpArrow", "\x021F5"), ("DownBreve", "\x00311"), ("DownLeftRightVector", "\x02950"), ("DownLeftTeeVector", "\x0295E"), ("DownLeftVector", "\x021BD"), ("DownLeftVectorBar", "\x02956") ] {-# NOINLINE reftab4 #-} reftab4 :: [(Text,Text)] reftab4 = [ ("DownRightTeeVector", "\x0295F"), ("DownRightVector", "\x021C1"), ("DownRightVectorBar", "\x02957"), ("DownTee", "\x022A4"), ("DownTeeArrow", "\x021A7"), ("Downarrow", "\x021D3"), ("Dscr", "\x1D49F"), ("Dstrok", "\x00110"), ("ENG", "\x0014A"), ("ETH", "\x000D0"), ("Eacute", "\x000C9"), ("Ecaron", "\x0011A"), ("Ecirc", "\x000CA"), ("Ecy", "\x0042D"), ("Edot", "\x00116"), ("Efr", "\x1D508"), ("Egrave", "\x000C8"), ("Element", "\x02208"), ("Emacr", "\x00112"), ("EmptySmallSquare", "\x025FB"), ("EmptyVerySmallSquare", "\x025AB"), ("Eogon", "\x00118"), ("Eopf", "\x1D53C"), ("Epsilon", "\x00395"), ("Equal", "\x02A75"), ("EqualTilde", "\x02242"), ("Equilibrium", "\x021CC"), ("Escr", "\x02130"), ("Esim", "\x02A73"), ("Eta", "\x00397"), ("Euml", "\x000CB"), ("Exists", "\x02203"), ("ExponentialE", "\x02147"), ("Fcy", "\x00424"), ("Ffr", "\x1D509"), ("FilledSmallSquare", "\x025FC"), ("FilledVerySmallSquare", "\x025AA") ] {-# NOINLINE reftab5 #-} reftab5 :: [(Text,Text)] reftab5 = [ ("Fopf", "\x1D53D"), ("ForAll", "\x02200"), ("Fouriertrf", "\x02131"), ("Fscr", "\x02131"), ("GJcy", "\x00403"), ("GT", "\x0003E"), ("Gamma", "\x00393"), ("Gammad", "\x003DC"), ("Gbreve", "\x0011E"), ("Gcedil", "\x00122"), ("Gcirc", "\x0011C"), ("Gcy", "\x00413"), ("Gdot", "\x00120"), ("Gfr", "\x1D50A"), ("Gg", "\x022D9"), ("Gopf", "\x1D53E"), ("GreaterEqual", "\x02265"), ("GreaterEqualLess", "\x022DB"), ("GreaterFullEqual", "\x02267"), ("GreaterGreater", "\x02AA2"), ("GreaterLess", "\x02277"), ("GreaterSlantEqual", "\x02A7E"), ("GreaterTilde", "\x02273"), ("Gscr", "\x1D4A2"), ("Gt", "\x0226B"), ("HARDcy", "\x0042A"), ("Hacek", "\x002C7"), ("Hat", "\x0005E"), ("Hcirc", "\x00124"), ("Hfr", "\x0210C"), ("HilbertSpace", "\x0210B"), ("Hopf", "\x0210D"), ("HorizontalLine", "\x02500"), ("Hscr", "\x0210B"), ("Hstrok", "\x00126"), ("HumpDownHump", "\x0224E"), ("HumpEqual", "\x0224F") ] {-# NOINLINE reftab6 #-} reftab6 :: [(Text,Text)] reftab6 = [ ("IEcy", "\x00415"), ("IJlig", "\x00132"), ("IOcy", "\x00401"), ("Iacute", "\x000CD"), ("Icirc", "\x000CE"), ("Icy", "\x00418"), ("Idot", "\x00130"), ("Ifr", "\x02111"), ("Igrave", "\x000CC"), ("Im", "\x02111"), ("Imacr", "\x0012A"), ("ImaginaryI", "\x02148"), ("Implies", "\x021D2"), ("Int", "\x0222C"), ("Integral", "\x0222B"), ("Intersection", "\x022C2"), ("InvisibleComma", "\x02063"), ("InvisibleTimes", "\x02062"), ("Iogon", "\x0012E"), ("Iopf", "\x1D540"), ("Iota", "\x00399"), ("Iscr", "\x02110"), ("Itilde", "\x00128"), ("Iukcy", "\x00406"), ("Iuml", "\x000CF"), ("Jcirc", "\x00134"), ("Jcy", "\x00419"), ("Jfr", "\x1D50D"), ("Jopf", "\x1D541"), ("Jscr", "\x1D4A5"), ("Jsercy", "\x00408"), ("Jukcy", "\x00404"), ("KHcy", "\x00425"), ("KJcy", "\x0040C"), ("Kappa", "\x0039A"), ("Kcedil", "\x00136"), ("Kcy", "\x0041A") ] {-# NOINLINE reftab7 #-} reftab7 :: [(Text,Text)] reftab7 = [ ("Kfr", "\x1D50E"), ("Kopf", "\x1D542"), ("Kscr", "\x1D4A6"), ("LJcy", "\x00409"), ("LT", "\x0003C"), ("Lacute", "\x00139"), ("Lambda", "\x0039B"), ("Lang", "\x027EA"), ("Laplacetrf", "\x02112"), ("Larr", "\x0219E"), ("Lcaron", "\x0013D"), ("Lcedil", "\x0013B"), ("Lcy", "\x0041B"), ("LeftAngleBracket", "\x027E8"), ("LeftArrow", "\x02190"), ("LeftArrowBar", "\x021E4"), ("LeftArrowRightArrow", "\x021C6"), ("LeftCeiling", "\x02308"), ("LeftDoubleBracket", "\x027E6"), ("LeftDownTeeVector", "\x02961"), ("LeftDownVector", "\x021C3"), ("LeftDownVectorBar", "\x02959"), ("LeftFloor", "\x0230A"), ("LeftRightArrow", "\x02194"), ("LeftRightVector", "\x0294E"), ("LeftTee", "\x022A3"), ("LeftTeeArrow", "\x021A4"), ("LeftTeeVector", "\x0295A"), ("LeftTriangle", "\x022B2"), ("LeftTriangleBar", "\x029CF"), ("LeftTriangleEqual", "\x022B4"), ("LeftUpDownVector", "\x02951"), ("LeftUpTeeVector", "\x02960"), ("LeftUpVector", "\x021BF"), ("LeftUpVectorBar", "\x02958"), ("LeftVector", "\x021BC"), ("LeftVectorBar", "\x02952") ] {-# NOINLINE reftab8 #-} reftab8 :: [(Text,Text)] reftab8 = [ ("Leftarrow", "\x021D0"), ("Leftrightarrow", "\x021D4"), ("LessEqualGreater", "\x022DA"), ("LessFullEqual", "\x02266"), ("LessGreater", "\x02276"), ("LessLess", "\x02AA1"), ("LessSlantEqual", "\x02A7D"), ("LessTilde", "\x02272"), ("Lfr", "\x1D50F"), ("Ll", "\x022D8"), ("Lleftarrow", "\x021DA"), ("Lmidot", "\x0013F"), ("LongLeftArrow", "\x027F5"), ("LongLeftRightArrow", "\x027F7"), ("LongRightArrow", "\x027F6"), ("Longleftarrow", "\x027F8"), ("Longleftrightarrow", "\x027FA"), ("Longrightarrow", "\x027F9"), ("Lopf", "\x1D543"), ("LowerLeftArrow", "\x02199"), ("LowerRightArrow", "\x02198"), ("Lscr", "\x02112"), ("Lsh", "\x021B0"), ("Lstrok", "\x00141"), ("Lt", "\x0226A"), ("Map", "\x02905"), ("Mcy", "\x0041C"), ("MediumSpace", "\x0205F"), ("Mellintrf", "\x02133"), ("Mfr", "\x1D510"), ("MinusPlus", "\x02213"), ("Mopf", "\x1D544"), ("Mscr", "\x02133"), ("Mu", "\x0039C"), ("NJcy", "\x0040A"), ("Nacute", "\x00143"), ("Ncaron", "\x00147") ] {-# NOINLINE reftab9 #-} reftab9 :: [(Text,Text)] reftab9 = [ ("Ncedil", "\x00145"), ("Ncy", "\x0041D"), ("NegativeMediumSpace", "\x0200B"), ("NegativeThickSpace", "\x0200B"), ("NegativeThinSpace", "\x0200B"), ("NegativeVeryThinSpace", "\x0200B"), ("NestedGreaterGreater", "\x0226B"), ("NestedLessLess", "\x0226A"), ("NewLine", "\x0000A"), ("Nfr", "\x1D511"), ("NoBreak", "\x02060"), ("NonBreakingSpace", "\x000A0"), ("Nopf", "\x02115"), ("Not", "\x02AEC"), ("NotCongruent", "\x02262"), ("NotCupCap", "\x0226D"), ("NotDoubleVerticalBar", "\x02226"), ("NotElement", "\x02209"), ("NotEqual", "\x02260"), ("NotEqualTilde", "\x02242\x00338"), ("NotExists", "\x02204"), ("NotGreater", "\x0226F"), ("NotGreaterEqual", "\x02271"), ("NotGreaterFullEqual", "\x02267\x00338"), ("NotGreaterGreater", "\x0226B\x00338"), ("NotGreaterLess", "\x02279"), ("NotGreaterSlantEqual", "\x02A7E\x00338"), ("NotGreaterTilde", "\x02275"), ("NotHumpDownHump", "\x0224E\x00338"), ("NotHumpEqual", "\x0224F\x00338"), ("NotLeftTriangle", "\x022EA"), ("NotLeftTriangleBar", "\x029CF\x00338"), ("NotLeftTriangleEqual", "\x022EC"), ("NotLess", "\x0226E"), ("NotLessEqual", "\x02270"), ("NotLessGreater", "\x02278"), ("NotLessLess", "\x0226A\x00338") ] {-# NOINLINE reftab10 #-} reftab10 :: [(Text,Text)] reftab10 = [ ("NotLessSlantEqual", "\x02A7D\x00338"), ("NotLessTilde", "\x02274"), ("NotNestedGreaterGreater", "\x02AA2\x00338"), ("NotNestedLessLess", "\x02AA1\x00338"), ("NotPrecedes", "\x02280"), ("NotPrecedesEqual", "\x02AAF\x00338"), ("NotPrecedesSlantEqual", "\x022E0"), ("NotReverseElement", "\x0220C"), ("NotRightTriangle", "\x022EB"), ("NotRightTriangleBar", "\x029D0\x00338"), ("NotRightTriangleEqual", "\x022ED"), ("NotSquareSubset", "\x0228F\x00338"), ("NotSquareSubsetEqual", "\x022E2"), ("NotSquareSuperset", "\x02290\x00338"), ("NotSquareSupersetEqual", "\x022E3"), ("NotSubset", "\x02282\x020D2"), ("NotSubsetEqual", "\x02288"), ("NotSucceeds", "\x02281"), ("NotSucceedsEqual", "\x02AB0\x00338"), ("NotSucceedsSlantEqual", "\x022E1"), ("NotSucceedsTilde", "\x0227F\x00338"), ("NotSuperset", "\x02283\x020D2"), ("NotSupersetEqual", "\x02289"), ("NotTilde", "\x02241"), ("NotTildeEqual", "\x02244"), ("NotTildeFullEqual", "\x02247"), ("NotTildeTilde", "\x02249"), ("NotVerticalBar", "\x02224"), ("Nscr", "\x1D4A9"), ("Ntilde", "\x000D1"), ("Nu", "\x0039D"), ("OElig", "\x00152"), ("Oacute", "\x000D3"), ("Ocirc", "\x000D4"), ("Ocy", "\x0041E"), ("Odblac", "\x00150"), ("Ofr", "\x1D512") ] {-# NOINLINE reftab11 #-} reftab11 :: [(Text,Text)] reftab11 = [ ("Ograve", "\x000D2"), ("Omacr", "\x0014C"), ("Omega", "\x003A9"), ("Omicron", "\x0039F"), ("Oopf", "\x1D546"), ("OpenCurlyDoubleQuote", "\x0201C"), ("OpenCurlyQuote", "\x02018"), ("Or", "\x02A54"), ("Oscr", "\x1D4AA"), ("Oslash", "\x000D8"), ("Otilde", "\x000D5"), ("Otimes", "\x02A37"), ("Ouml", "\x000D6"), ("OverBar", "\x0203E"), ("OverBrace", "\x023DE"), ("OverBracket", "\x023B4"), ("OverParenthesis", "\x023DC"), ("PartialD", "\x02202"), ("Pcy", "\x0041F"), ("Pfr", "\x1D513"), ("Phi", "\x003A6"), ("Pi", "\x003A0"), ("PlusMinus", "\x000B1"), ("Poincareplane", "\x0210C"), ("Popf", "\x02119"), ("Pr", "\x02ABB"), ("Precedes", "\x0227A"), ("PrecedesEqual", "\x02AAF"), ("PrecedesSlantEqual", "\x0227C"), ("PrecedesTilde", "\x0227E"), ("Prime", "\x02033"), ("Product", "\x0220F"), ("Proportion", "\x02237"), ("Proportional", "\x0221D"), ("Pscr", "\x1D4AB"), ("Psi", "\x003A8"), ("QUOT", "\x00022") ] {-# NOINLINE reftab12 #-} reftab12 :: [(Text,Text)] reftab12 = [ ("Qfr", "\x1D514"), ("Qopf", "\x0211A"), ("Qscr", "\x1D4AC"), ("RBarr", "\x02910"), ("REG", "\x000AE"), ("Racute", "\x00154"), ("Rang", "\x027EB"), ("Rarr", "\x021A0"), ("Rarrtl", "\x02916"), ("Rcaron", "\x00158"), ("Rcedil", "\x00156"), ("Rcy", "\x00420"), ("Re", "\x0211C"), ("ReverseElement", "\x0220B"), ("ReverseEquilibrium", "\x021CB"), ("ReverseUpEquilibrium", "\x0296F"), ("Rfr", "\x0211C"), ("Rho", "\x003A1"), ("RightAngleBracket", "\x027E9"), ("RightArrow", "\x02192"), ("RightArrowBar", "\x021E5"), ("RightArrowLeftArrow", "\x021C4"), ("RightCeiling", "\x02309"), ("RightDoubleBracket", "\x027E7"), ("RightDownTeeVector", "\x0295D"), ("RightDownVector", "\x021C2"), ("RightDownVectorBar", "\x02955"), ("RightFloor", "\x0230B"), ("RightTee", "\x022A2"), ("RightTeeArrow", "\x021A6"), ("RightTeeVector", "\x0295B"), ("RightTriangle", "\x022B3"), ("RightTriangleBar", "\x029D0"), ("RightTriangleEqual", "\x022B5"), ("RightUpDownVector", "\x0294F"), ("RightUpTeeVector", "\x0295C"), ("RightUpVector", "\x021BE") ] {-# NOINLINE reftab13 #-} reftab13 :: [(Text,Text)] reftab13 = [ ("RightUpVectorBar", "\x02954"), ("RightVector", "\x021C0"), ("RightVectorBar", "\x02953"), ("Rightarrow", "\x021D2"), ("Ropf", "\x0211D"), ("RoundImplies", "\x02970"), ("Rrightarrow", "\x021DB"), ("Rscr", "\x0211B"), ("Rsh", "\x021B1"), ("RuleDelayed", "\x029F4"), ("SHCHcy", "\x00429"), ("SHcy", "\x00428"), ("SOFTcy", "\x0042C"), ("Sacute", "\x0015A"), ("Sc", "\x02ABC"), ("Scaron", "\x00160"), ("Scedil", "\x0015E"), ("Scirc", "\x0015C"), ("Scy", "\x00421"), ("Sfr", "\x1D516"), ("ShortDownArrow", "\x02193"), ("ShortLeftArrow", "\x02190"), ("ShortRightArrow", "\x02192"), ("ShortUpArrow", "\x02191"), ("Sigma", "\x003A3"), ("SmallCircle", "\x02218"), ("Sopf", "\x1D54A"), ("Sqrt", "\x0221A"), ("Square", "\x025A1"), ("SquareIntersection", "\x02293"), ("SquareSubset", "\x0228F"), ("SquareSubsetEqual", "\x02291"), ("SquareSuperset", "\x02290"), ("SquareSupersetEqual", "\x02292"), ("SquareUnion", "\x02294"), ("Sscr", "\x1D4AE"), ("Star", "\x022C6") ] {-# NOINLINE reftab14 #-} reftab14 :: [(Text,Text)] reftab14 = [ ("Sub", "\x022D0"), ("Subset", "\x022D0"), ("SubsetEqual", "\x02286"), ("Succeeds", "\x0227B"), ("SucceedsEqual", "\x02AB0"), ("SucceedsSlantEqual", "\x0227D"), ("SucceedsTilde", "\x0227F"), ("SuchThat", "\x0220B"), ("Sum", "\x02211"), ("Sup", "\x022D1"), ("Superset", "\x02283"), ("SupersetEqual", "\x02287"), ("Supset", "\x022D1"), ("THORN", "\x000DE"), ("TRADE", "\x02122"), ("TSHcy", "\x0040B"), ("TScy", "\x00426"), ("Tab", "\x00009"), ("Tau", "\x003A4"), ("Tcaron", "\x00164"), ("Tcedil", "\x00162"), ("Tcy", "\x00422"), ("Tfr", "\x1D517"), ("Therefore", "\x02234"), ("Theta", "\x00398"), ("ThickSpace", "\x0205F\x0200A"), ("ThinSpace", "\x02009"), ("Tilde", "\x0223C"), ("TildeEqual", "\x02243"), ("TildeFullEqual", "\x02245"), ("TildeTilde", "\x02248"), ("Topf", "\x1D54B"), ("TripleDot", "\x020DB"), ("Tscr", "\x1D4AF"), ("Tstrok", "\x00166"), ("Uacute", "\x000DA"), ("Uarr", "\x0219F") ] {-# NOINLINE reftab15 #-} reftab15 :: [(Text,Text)] reftab15 = [ ("Uarrocir", "\x02949"), ("Ubrcy", "\x0040E"), ("Ubreve", "\x0016C"), ("Ucirc", "\x000DB"), ("Ucy", "\x00423"), ("Udblac", "\x00170"), ("Ufr", "\x1D518"), ("Ugrave", "\x000D9"), ("Umacr", "\x0016A"), ("UnderBar", "\x0005F"), ("UnderBrace", "\x023DF"), ("UnderBracket", "\x023B5"), ("UnderParenthesis", "\x023DD"), ("Union", "\x022C3"), ("UnionPlus", "\x0228E"), ("Uogon", "\x00172"), ("Uopf", "\x1D54C"), ("UpArrow", "\x02191"), ("UpArrowBar", "\x02912"), ("UpArrowDownArrow", "\x021C5"), ("UpDownArrow", "\x02195"), ("UpEquilibrium", "\x0296E"), ("UpTee", "\x022A5"), ("UpTeeArrow", "\x021A5"), ("Uparrow", "\x021D1"), ("Updownarrow", "\x021D5"), ("UpperLeftArrow", "\x02196"), ("UpperRightArrow", "\x02197"), ("Upsi", "\x003D2"), ("Upsilon", "\x003A5"), ("Uring", "\x0016E"), ("Uscr", "\x1D4B0"), ("Utilde", "\x00168"), ("Uuml", "\x000DC"), ("VDash", "\x022AB"), ("Vbar", "\x02AEB"), ("Vcy", "\x00412") ] {-# NOINLINE reftab16 #-} reftab16 :: [(Text,Text)] reftab16 = [ ("Vdash", "\x022A9"), ("Vdashl", "\x02AE6"), ("Vee", "\x022C1"), ("Verbar", "\x02016"), ("Vert", "\x02016"), ("VerticalBar", "\x02223"), ("VerticalLine", "\x0007C"), ("VerticalSeparator", "\x02758"), ("VerticalTilde", "\x02240"), ("VeryThinSpace", "\x0200A"), ("Vfr", "\x1D519"), ("Vopf", "\x1D54D"), ("Vscr", "\x1D4B1"), ("Vvdash", "\x022AA"), ("Wcirc", "\x00174"), ("Wedge", "\x022C0"), ("Wfr", "\x1D51A"), ("Wopf", "\x1D54E"), ("Wscr", "\x1D4B2"), ("Xfr", "\x1D51B"), ("Xi", "\x0039E"), ("Xopf", "\x1D54F"), ("Xscr", "\x1D4B3"), ("YAcy", "\x0042F"), ("YIcy", "\x00407"), ("YUcy", "\x0042E"), ("Yacute", "\x000DD"), ("Ycirc", "\x00176"), ("Ycy", "\x0042B"), ("Yfr", "\x1D51C"), ("Yopf", "\x1D550"), ("Yscr", "\x1D4B4"), ("Yuml", "\x00178"), ("ZHcy", "\x00416"), ("Zacute", "\x00179"), ("Zcaron", "\x0017D"), ("Zcy", "\x00417") ] {-# NOINLINE reftab17 #-} reftab17 :: [(Text,Text)] reftab17 = [ ("Zdot", "\x0017B"), ("ZeroWidthSpace", "\x0200B"), ("Zeta", "\x00396"), ("Zfr", "\x02128"), ("Zopf", "\x02124"), ("Zscr", "\x1D4B5"), ("aacute", "\x000E1"), ("abreve", "\x00103"), ("ac", "\x0223E"), ("acE", "\x0223E\x00333"), ("acd", "\x0223F"), ("acirc", "\x000E2"), ("acute", "\x000B4"), ("acy", "\x00430"), ("aelig", "\x000E6"), ("af", "\x02061"), ("afr", "\x1D51E"), ("agrave", "\x000E0"), ("alefsym", "\x02135"), ("aleph", "\x02135"), ("alpha", "\x003B1"), ("amacr", "\x00101"), ("amalg", "\x02A3F"), ("amp", "\x00026"), ("and", "\x02227"), ("andand", "\x02A55"), ("andd", "\x02A5C"), ("andslope", "\x02A58"), ("andv", "\x02A5A"), ("ang", "\x02220"), ("ange", "\x029A4"), ("angle", "\x02220"), ("angmsd", "\x02221"), ("angmsdaa", "\x029A8"), ("angmsdab", "\x029A9"), ("angmsdac", "\x029AA"), ("angmsdad", "\x029AB") ] {-# NOINLINE reftab18 #-} reftab18 :: [(Text,Text)] reftab18 = [ ("angmsdae", "\x029AC"), ("angmsdaf", "\x029AD"), ("angmsdag", "\x029AE"), ("angmsdah", "\x029AF"), ("angrt", "\x0221F"), ("angrtvb", "\x022BE"), ("angrtvbd", "\x0299D"), ("angsph", "\x02222"), ("angst", "\x000C5"), ("angzarr", "\x0237C"), ("aogon", "\x00105"), ("aopf", "\x1D552"), ("ap", "\x02248"), ("apE", "\x02A70"), ("apacir", "\x02A6F"), ("ape", "\x0224A"), ("apid", "\x0224B"), ("apos", "\x00027"), ("approx", "\x02248"), ("approxeq", "\x0224A"), ("aring", "\x000E5"), ("ascr", "\x1D4B6"), ("ast", "\x0002A"), ("asymp", "\x02248"), ("asympeq", "\x0224D"), ("atilde", "\x000E3"), ("auml", "\x000E4"), ("awconint", "\x02233"), ("awint", "\x02A11"), ("bNot", "\x02AED"), ("backcong", "\x0224C"), ("backepsilon", "\x003F6"), ("backprime", "\x02035"), ("backsim", "\x0223D"), ("backsimeq", "\x022CD"), ("barvee", "\x022BD"), ("barwed", "\x02305") ] {-# NOINLINE reftab19 #-} reftab19 :: [(Text,Text)] reftab19 = [ ("barwedge", "\x02305"), ("bbrk", "\x023B5"), ("bbrktbrk", "\x023B6"), ("bcong", "\x0224C"), ("bcy", "\x00431"), ("bdquo", "\x0201E"), ("becaus", "\x02235"), ("because", "\x02235"), ("bemptyv", "\x029B0"), ("bepsi", "\x003F6"), ("bernou", "\x0212C"), ("beta", "\x003B2"), ("beth", "\x02136"), ("between", "\x0226C"), ("bfr", "\x1D51F"), ("bigcap", "\x022C2"), ("bigcirc", "\x025EF"), ("bigcup", "\x022C3"), ("bigodot", "\x02A00"), ("bigoplus", "\x02A01"), ("bigotimes", "\x02A02"), ("bigsqcup", "\x02A06"), ("bigstar", "\x02605"), ("bigtriangledown", "\x025BD"), ("bigtriangleup", "\x025B3"), ("biguplus", "\x02A04"), ("bigvee", "\x022C1"), ("bigwedge", "\x022C0"), ("bkarow", "\x0290D"), ("blacklozenge", "\x029EB"), ("blacksquare", "\x025AA"), ("blacktriangle", "\x025B4"), ("blacktriangledown", "\x025BE"), ("blacktriangleleft", "\x025C2"), ("blacktriangleright", "\x025B8"), ("blank", "\x02423"), ("blk12", "\x02592") ] {-# NOINLINE reftab20 #-} reftab20 :: [(Text,Text)] reftab20 = [ ("blk14", "\x02591"), ("blk34", "\x02593"), ("block", "\x02588"), ("bne", "\x0003D\x020E5"), ("bnequiv", "\x02261\x020E5"), ("bnot", "\x02310"), ("bopf", "\x1D553"), ("bot", "\x022A5"), ("bottom", "\x022A5"), ("bowtie", "\x022C8"), ("boxDL", "\x02557"), ("boxDR", "\x02554"), ("boxDl", "\x02556"), ("boxDr", "\x02553"), ("boxH", "\x02550"), ("boxHD", "\x02566"), ("boxHU", "\x02569"), ("boxHd", "\x02564"), ("boxHu", "\x02567"), ("boxUL", "\x0255D"), ("boxUR", "\x0255A"), ("boxUl", "\x0255C"), ("boxUr", "\x02559"), ("boxV", "\x02551"), ("boxVH", "\x0256C"), ("boxVL", "\x02563"), ("boxVR", "\x02560"), ("boxVh", "\x0256B"), ("boxVl", "\x02562"), ("boxVr", "\x0255F"), ("boxbox", "\x029C9"), ("boxdL", "\x02555"), ("boxdR", "\x02552"), ("boxdl", "\x02510"), ("boxdr", "\x0250C"), ("boxh", "\x02500"), ("boxhD", "\x02565") ] {-# NOINLINE reftab21 #-} reftab21 :: [(Text,Text)] reftab21 = [ ("boxhU", "\x02568"), ("boxhd", "\x0252C"), ("boxhu", "\x02534"), ("boxminus", "\x0229F"), ("boxplus", "\x0229E"), ("boxtimes", "\x022A0"), ("boxuL", "\x0255B"), ("boxuR", "\x02558"), ("boxul", "\x02518"), ("boxur", "\x02514"), ("boxv", "\x02502"), ("boxvH", "\x0256A"), ("boxvL", "\x02561"), ("boxvR", "\x0255E"), ("boxvh", "\x0253C"), ("boxvl", "\x02524"), ("boxvr", "\x0251C"), ("bprime", "\x02035"), ("breve", "\x002D8"), ("brvbar", "\x000A6"), ("bscr", "\x1D4B7"), ("bsemi", "\x0204F"), ("bsim", "\x0223D"), ("bsime", "\x022CD"), ("bsol", "\x0005C"), ("bsolb", "\x029C5"), ("bsolhsub", "\x027C8"), ("bull", "\x02022"), ("bullet", "\x02022"), ("bump", "\x0224E"), ("bumpE", "\x02AAE"), ("bumpe", "\x0224F"), ("bumpeq", "\x0224F"), ("cacute", "\x00107"), ("cap", "\x02229"), ("capand", "\x02A44"), ("capbrcup", "\x02A49") ] {-# NOINLINE reftab22 #-} reftab22 :: [(Text,Text)] reftab22 = [ ("capcap", "\x02A4B"), ("capcup", "\x02A47"), ("capdot", "\x02A40"), ("caps", "\x02229\x0FE00"), ("caret", "\x02041"), ("caron", "\x002C7"), ("ccaps", "\x02A4D"), ("ccaron", "\x0010D"), ("ccedil", "\x000E7"), ("ccirc", "\x00109"), ("ccups", "\x02A4C"), ("ccupssm", "\x02A50"), ("cdot", "\x0010B"), ("cedil", "\x000B8"), ("cemptyv", "\x029B2"), ("cent", "\x000A2"), ("centerdot", "\x000B7"), ("cfr", "\x1D520"), ("chcy", "\x00447"), ("check", "\x02713"), ("checkmark", "\x02713"), ("chi", "\x003C7"), ("cir", "\x025CB"), ("cirE", "\x029C3"), ("circ", "\x002C6"), ("circeq", "\x02257"), ("circlearrowleft", "\x021BA"), ("circlearrowright", "\x021BB"), ("circledR", "\x000AE"), ("circledS", "\x024C8"), ("circledast", "\x0229B"), ("circledcirc", "\x0229A"), ("circleddash", "\x0229D"), ("cire", "\x02257"), ("cirfnint", "\x02A10"), ("cirmid", "\x02AEF"), ("cirscir", "\x029C2") ] {-# NOINLINE reftab23 #-} reftab23 :: [(Text,Text)] reftab23 = [ ("clubs", "\x02663"), ("clubsuit", "\x02663"), ("colon", "\x0003A"), ("colone", "\x02254"), ("coloneq", "\x02254"), ("comma", "\x0002C"), ("commat", "\x00040"), ("comp", "\x02201"), ("compfn", "\x02218"), ("complement", "\x02201"), ("complexes", "\x02102"), ("cong", "\x02245"), ("congdot", "\x02A6D"), ("conint", "\x0222E"), ("copf", "\x1D554"), ("coprod", "\x02210"), ("copy", "\x000A9"), ("copysr", "\x02117"), ("crarr", "\x021B5"), ("cross", "\x02717"), ("cscr", "\x1D4B8"), ("csub", "\x02ACF"), ("csube", "\x02AD1"), ("csup", "\x02AD0"), ("csupe", "\x02AD2"), ("ctdot", "\x022EF"), ("cudarrl", "\x02938"), ("cudarrr", "\x02935"), ("cuepr", "\x022DE"), ("cuesc", "\x022DF"), ("cularr", "\x021B6"), ("cularrp", "\x0293D"), ("cup", "\x0222A"), ("cupbrcap", "\x02A48"), ("cupcap", "\x02A46"), ("cupcup", "\x02A4A"), ("cupdot", "\x0228D") ] {-# NOINLINE reftab24 #-} reftab24 :: [(Text,Text)] reftab24 = [ ("cupor", "\x02A45"), ("cups", "\x0222A\x0FE00"), ("curarr", "\x021B7"), ("curarrm", "\x0293C"), ("curlyeqprec", "\x022DE"), ("curlyeqsucc", "\x022DF"), ("curlyvee", "\x022CE"), ("curlywedge", "\x022CF"), ("curren", "\x000A4"), ("curvearrowleft", "\x021B6"), ("curvearrowright", "\x021B7"), ("cuvee", "\x022CE"), ("cuwed", "\x022CF"), ("cwconint", "\x02232"), ("cwint", "\x02231"), ("cylcty", "\x0232D"), ("dArr", "\x021D3"), ("dHar", "\x02965"), ("dagger", "\x02020"), ("daleth", "\x02138"), ("darr", "\x02193"), ("dash", "\x02010"), ("dashv", "\x022A3"), ("dbkarow", "\x0290F"), ("dblac", "\x002DD"), ("dcaron", "\x0010F"), ("dcy", "\x00434"), ("dd", "\x02146"), ("ddagger", "\x02021"), ("ddarr", "\x021CA"), ("ddotseq", "\x02A77"), ("deg", "\x000B0"), ("delta", "\x003B4"), ("demptyv", "\x029B1"), ("dfisht", "\x0297F"), ("dfr", "\x1D521"), ("dharl", "\x021C3") ] {-# NOINLINE reftab25 #-} reftab25 :: [(Text,Text)] reftab25 = [ ("dharr", "\x021C2"), ("diam", "\x022C4"), ("diamond", "\x022C4"), ("diamondsuit", "\x02666"), ("diams", "\x02666"), ("die", "\x000A8"), ("digamma", "\x003DD"), ("disin", "\x022F2"), ("div", "\x000F7"), ("divide", "\x000F7"), ("divideontimes", "\x022C7"), ("divonx", "\x022C7"), ("djcy", "\x00452"), ("dlcorn", "\x0231E"), ("dlcrop", "\x0230D"), ("dollar", "\x00024"), ("dopf", "\x1D555"), ("dot", "\x002D9"), ("doteq", "\x02250"), ("doteqdot", "\x02251"), ("dotminus", "\x02238"), ("dotplus", "\x02214"), ("dotsquare", "\x022A1"), ("doublebarwedge", "\x02306"), ("downarrow", "\x02193"), ("downdownarrows", "\x021CA"), ("downharpoonleft", "\x021C3"), ("downharpoonright", "\x021C2"), ("drbkarow", "\x02910"), ("drcorn", "\x0231F"), ("drcrop", "\x0230C"), ("dscr", "\x1D4B9"), ("dscy", "\x00455"), ("dsol", "\x029F6"), ("dstrok", "\x00111"), ("dtdot", "\x022F1"), ("dtri", "\x025BF") ] {-# NOINLINE reftab26 #-} reftab26 :: [(Text,Text)] reftab26 = [ ("dtrif", "\x025BE"), ("duarr", "\x021F5"), ("duhar", "\x0296F"), ("dwangle", "\x029A6"), ("dzcy", "\x0045F"), ("dzigrarr", "\x027FF"), ("eDDot", "\x02A77"), ("eDot", "\x02251"), ("eacute", "\x000E9"), ("easter", "\x02A6E"), ("ecaron", "\x0011B"), ("ecir", "\x02256"), ("ecirc", "\x000EA"), ("ecolon", "\x02255"), ("ecy", "\x0044D"), ("edot", "\x00117"), ("ee", "\x02147"), ("efDot", "\x02252"), ("efr", "\x1D522"), ("eg", "\x02A9A"), ("egrave", "\x000E8"), ("egs", "\x02A96"), ("egsdot", "\x02A98"), ("el", "\x02A99"), ("elinters", "\x023E7"), ("ell", "\x02113"), ("els", "\x02A95"), ("elsdot", "\x02A97"), ("emacr", "\x00113"), ("empty", "\x02205"), ("emptyset", "\x02205"), ("emptyv", "\x02205"), ("emsp", "\x02003"), ("emsp13", "\x02004"), ("emsp14", "\x02005"), ("eng", "\x0014B"), ("ensp", "\x02002") ] {-# NOINLINE reftab27 #-} reftab27 :: [(Text,Text)] reftab27 = [ ("eogon", "\x00119"), ("eopf", "\x1D556"), ("epar", "\x022D5"), ("eparsl", "\x029E3"), ("eplus", "\x02A71"), ("epsi", "\x003B5"), ("epsilon", "\x003B5"), ("epsiv", "\x003F5"), ("eqcirc", "\x02256"), ("eqcolon", "\x02255"), ("eqsim", "\x02242"), ("eqslantgtr", "\x02A96"), ("eqslantless", "\x02A95"), ("equals", "\x0003D"), ("equest", "\x0225F"), ("equiv", "\x02261"), ("equivDD", "\x02A78"), ("eqvparsl", "\x029E5"), ("erDot", "\x02253"), ("erarr", "\x02971"), ("escr", "\x0212F"), ("esdot", "\x02250"), ("esim", "\x02242"), ("eta", "\x003B7"), ("eth", "\x000F0"), ("euml", "\x000EB"), ("euro", "\x020AC"), ("excl", "\x00021"), ("exist", "\x02203"), ("expectation", "\x02130"), ("exponentiale", "\x02147"), ("fallingdotseq", "\x02252"), ("fcy", "\x00444"), ("female", "\x02640"), ("ffilig", "\x0FB03"), ("fflig", "\x0FB00"), ("ffllig", "\x0FB04") ] {-# NOINLINE reftab28 #-} reftab28 :: [(Text,Text)] reftab28 = [ ("ffr", "\x1D523"), ("filig", "\x0FB01"), ("fjlig", "\x00066\x0006A"), ("flat", "\x0266D"), ("fllig", "\x0FB02"), ("fltns", "\x025B1"), ("fnof", "\x00192"), ("fopf", "\x1D557"), ("forall", "\x02200"), ("fork", "\x022D4"), ("forkv", "\x02AD9"), ("fpartint", "\x02A0D"), ("frac12", "\x000BD"), ("frac13", "\x02153"), ("frac14", "\x000BC"), ("frac15", "\x02155"), ("frac16", "\x02159"), ("frac18", "\x0215B"), ("frac23", "\x02154"), ("frac25", "\x02156"), ("frac34", "\x000BE"), ("frac35", "\x02157"), ("frac38", "\x0215C"), ("frac45", "\x02158"), ("frac56", "\x0215A"), ("frac58", "\x0215D"), ("frac78", "\x0215E"), ("frasl", "\x02044"), ("frown", "\x02322"), ("fscr", "\x1D4BB"), ("gE", "\x02267"), ("gEl", "\x02A8C"), ("gacute", "\x001F5"), ("gamma", "\x003B3"), ("gammad", "\x003DD"), ("gap", "\x02A86"), ("gbreve", "\x0011F") ] {-# NOINLINE reftab29 #-} reftab29 :: [(Text,Text)] reftab29 = [ ("gcirc", "\x0011D"), ("gcy", "\x00433"), ("gdot", "\x00121"), ("ge", "\x02265"), ("gel", "\x022DB"), ("geq", "\x02265"), ("geqq", "\x02267"), ("geqslant", "\x02A7E"), ("ges", "\x02A7E"), ("gescc", "\x02AA9"), ("gesdot", "\x02A80"), ("gesdoto", "\x02A82"), ("gesdotol", "\x02A84"), ("gesl", "\x022DB\x0FE00"), ("gesles", "\x02A94"), ("gfr", "\x1D524"), ("gg", "\x0226B"), ("ggg", "\x022D9"), ("gimel", "\x02137"), ("gjcy", "\x00453"), ("gl", "\x02277"), ("glE", "\x02A92"), ("gla", "\x02AA5"), ("glj", "\x02AA4"), ("gnE", "\x02269"), ("gnap", "\x02A8A"), ("gnapprox", "\x02A8A"), ("gne", "\x02A88"), ("gneq", "\x02A88"), ("gneqq", "\x02269"), ("gnsim", "\x022E7"), ("gopf", "\x1D558"), ("grave", "\x00060"), ("gscr", "\x0210A"), ("gsim", "\x02273"), ("gsime", "\x02A8E"), ("gsiml", "\x02A90") ] {-# NOINLINE reftab30 #-} reftab30 :: [(Text,Text)] reftab30 = [ ("gt", "\x0003E"), ("gtcc", "\x02AA7"), ("gtcir", "\x02A7A"), ("gtdot", "\x022D7"), ("gtlPar", "\x02995"), ("gtquest", "\x02A7C"), ("gtrapprox", "\x02A86"), ("gtrarr", "\x02978"), ("gtrdot", "\x022D7"), ("gtreqless", "\x022DB"), ("gtreqqless", "\x02A8C"), ("gtrless", "\x02277"), ("gtrsim", "\x02273"), ("gvertneqq", "\x02269\x0FE00"), ("gvnE", "\x02269\x0FE00"), ("hArr", "\x021D4"), ("hairsp", "\x0200A"), ("half", "\x000BD"), ("hamilt", "\x0210B"), ("hardcy", "\x0044A"), ("harr", "\x02194"), ("harrcir", "\x02948"), ("harrw", "\x021AD"), ("hbar", "\x0210F"), ("hcirc", "\x00125"), ("hearts", "\x02665"), ("heartsuit", "\x02665"), ("hellip", "\x02026"), ("hercon", "\x022B9"), ("hfr", "\x1D525"), ("hksearow", "\x02925"), ("hkswarow", "\x02926"), ("hoarr", "\x021FF"), ("homtht", "\x0223B"), ("hookleftarrow", "\x021A9"), ("hookrightarrow", "\x021AA"), ("hopf", "\x1D559") ] {-# NOINLINE reftab31 #-} reftab31 :: [(Text,Text)] reftab31 = [ ("horbar", "\x02015"), ("hscr", "\x1D4BD"), ("hslash", "\x0210F"), ("hstrok", "\x00127"), ("hybull", "\x02043"), ("hyphen", "\x02010"), ("iacute", "\x000ED"), ("ic", "\x02063"), ("icirc", "\x000EE"), ("icy", "\x00438"), ("iecy", "\x00435"), ("iexcl", "\x000A1"), ("iff", "\x021D4"), ("ifr", "\x1D526"), ("igrave", "\x000EC"), ("ii", "\x02148"), ("iiiint", "\x02A0C"), ("iiint", "\x0222D"), ("iinfin", "\x029DC"), ("iiota", "\x02129"), ("ijlig", "\x00133"), ("imacr", "\x0012B"), ("image", "\x02111"), ("imagline", "\x02110"), ("imagpart", "\x02111"), ("imath", "\x00131"), ("imof", "\x022B7"), ("imped", "\x001B5"), ("in", "\x02208"), ("incare", "\x02105"), ("infin", "\x0221E"), ("infintie", "\x029DD"), ("inodot", "\x00131"), ("int", "\x0222B"), ("intcal", "\x022BA"), ("integers", "\x02124"), ("intercal", "\x022BA") ] {-# NOINLINE reftab32 #-} reftab32 :: [(Text,Text)] reftab32 = [ ("intlarhk", "\x02A17"), ("intprod", "\x02A3C"), ("iocy", "\x00451"), ("iogon", "\x0012F"), ("iopf", "\x1D55A"), ("iota", "\x003B9"), ("iprod", "\x02A3C"), ("iquest", "\x000BF"), ("iscr", "\x1D4BE"), ("isin", "\x02208"), ("isinE", "\x022F9"), ("isindot", "\x022F5"), ("isins", "\x022F4"), ("isinsv", "\x022F3"), ("isinv", "\x02208"), ("it", "\x02062"), ("itilde", "\x00129"), ("iukcy", "\x00456"), ("iuml", "\x000EF"), ("jcirc", "\x00135"), ("jcy", "\x00439"), ("jfr", "\x1D527"), ("jmath", "\x00237"), ("jopf", "\x1D55B"), ("jscr", "\x1D4BF"), ("jsercy", "\x00458"), ("jukcy", "\x00454"), ("kappa", "\x003BA"), ("kappav", "\x003F0"), ("kcedil", "\x00137"), ("kcy", "\x0043A"), ("kfr", "\x1D528"), ("kgreen", "\x00138"), ("khcy", "\x00445"), ("kjcy", "\x0045C"), ("kopf", "\x1D55C"), ("kscr", "\x1D4C0") ] {-# NOINLINE reftab33 #-} reftab33 :: [(Text,Text)] reftab33 = [ ("lAarr", "\x021DA"), ("lArr", "\x021D0"), ("lAtail", "\x0291B"), ("lBarr", "\x0290E"), ("lE", "\x02266"), ("lEg", "\x02A8B"), ("lHar", "\x02962"), ("lacute", "\x0013A"), ("laemptyv", "\x029B4"), ("lagran", "\x02112"), ("lambda", "\x003BB"), ("lang", "\x027E8"), ("langd", "\x02991"), ("langle", "\x027E8"), ("lap", "\x02A85"), ("laquo", "\x000AB"), ("larr", "\x02190"), ("larrb", "\x021E4"), ("larrbfs", "\x0291F"), ("larrfs", "\x0291D"), ("larrhk", "\x021A9"), ("larrlp", "\x021AB"), ("larrpl", "\x02939"), ("larrsim", "\x02973"), ("larrtl", "\x021A2"), ("lat", "\x02AAB"), ("latail", "\x02919"), ("late", "\x02AAD"), ("lates", "\x02AAD\x0FE00"), ("lbarr", "\x0290C"), ("lbbrk", "\x02772"), ("lbrace", "\x0007B"), ("lbrack", "\x0005B"), ("lbrke", "\x0298B"), ("lbrksld", "\x0298F"), ("lbrkslu", "\x0298D"), ("lcaron", "\x0013E") ] {-# NOINLINE reftab34 #-} reftab34 :: [(Text,Text)] reftab34 = [ ("lcedil", "\x0013C"), ("lceil", "\x02308"), ("lcub", "\x0007B"), ("lcy", "\x0043B"), ("ldca", "\x02936"), ("ldquo", "\x0201C"), ("ldquor", "\x0201E"), ("ldrdhar", "\x02967"), ("ldrushar", "\x0294B"), ("ldsh", "\x021B2"), ("le", "\x02264"), ("leftarrow", "\x02190"), ("leftarrowtail", "\x021A2"), ("leftharpoondown", "\x021BD"), ("leftharpoonup", "\x021BC"), ("leftleftarrows", "\x021C7"), ("leftrightarrow", "\x02194"), ("leftrightarrows", "\x021C6"), ("leftrightharpoons", "\x021CB"), ("leftrightsquigarrow", "\x021AD"), ("leftthreetimes", "\x022CB"), ("leg", "\x022DA"), ("leq", "\x02264"), ("leqq", "\x02266"), ("leqslant", "\x02A7D"), ("les", "\x02A7D"), ("lescc", "\x02AA8"), ("lesdot", "\x02A7F"), ("lesdoto", "\x02A81"), ("lesdotor", "\x02A83"), ("lesg", "\x022DA\x0FE00"), ("lesges", "\x02A93"), ("lessapprox", "\x02A85"), ("lessdot", "\x022D6"), ("lesseqgtr", "\x022DA"), ("lesseqqgtr", "\x02A8B"), ("lessgtr", "\x02276") ] {-# NOINLINE reftab35 #-} reftab35 :: [(Text,Text)] reftab35 = [ ("lesssim", "\x02272"), ("lfisht", "\x0297C"), ("lfloor", "\x0230A"), ("lfr", "\x1D529"), ("lg", "\x02276"), ("lgE", "\x02A91"), ("lhard", "\x021BD"), ("lharu", "\x021BC"), ("lharul", "\x0296A"), ("lhblk", "\x02584"), ("ljcy", "\x00459"), ("ll", "\x0226A"), ("llarr", "\x021C7"), ("llcorner", "\x0231E"), ("llhard", "\x0296B"), ("lltri", "\x025FA"), ("lmidot", "\x00140"), ("lmoust", "\x023B0"), ("lmoustache", "\x023B0"), ("lnE", "\x02268"), ("lnap", "\x02A89"), ("lnapprox", "\x02A89"), ("lne", "\x02A87"), ("lneq", "\x02A87"), ("lneqq", "\x02268"), ("lnsim", "\x022E6"), ("loang", "\x027EC"), ("loarr", "\x021FD"), ("lobrk", "\x027E6"), ("longleftarrow", "\x027F5"), ("longleftrightarrow", "\x027F7"), ("longmapsto", "\x027FC"), ("longrightarrow", "\x027F6"), ("looparrowleft", "\x021AB"), ("looparrowright", "\x021AC"), ("lopar", "\x02985"), ("lopf", "\x1D55D") ] {-# NOINLINE reftab36 #-} reftab36 :: [(Text,Text)] reftab36 = [ ("loplus", "\x02A2D"), ("lotimes", "\x02A34"), ("lowast", "\x02217"), ("lowbar", "\x0005F"), ("loz", "\x025CA"), ("lozenge", "\x025CA"), ("lozf", "\x029EB"), ("lpar", "\x00028"), ("lparlt", "\x02993"), ("lrarr", "\x021C6"), ("lrcorner", "\x0231F"), ("lrhar", "\x021CB"), ("lrhard", "\x0296D"), ("lrm", "\x0200E"), ("lrtri", "\x022BF"), ("lsaquo", "\x02039"), ("lscr", "\x1D4C1"), ("lsh", "\x021B0"), ("lsim", "\x02272"), ("lsime", "\x02A8D"), ("lsimg", "\x02A8F"), ("lsqb", "\x0005B"), ("lsquo", "\x02018"), ("lsquor", "\x0201A"), ("lstrok", "\x00142"), ("lt", "\x0003C"), ("ltcc", "\x02AA6"), ("ltcir", "\x02A79"), ("ltdot", "\x022D6"), ("lthree", "\x022CB"), ("ltimes", "\x022C9"), ("ltlarr", "\x02976"), ("ltquest", "\x02A7B"), ("ltrPar", "\x02996"), ("ltri", "\x025C3"), ("ltrie", "\x022B4"), ("ltrif", "\x025C2") ] {-# NOINLINE reftab37 #-} reftab37 :: [(Text,Text)] reftab37 = [ ("lurdshar", "\x0294A"), ("luruhar", "\x02966"), ("lvertneqq", "\x02268\x0FE00"), ("lvnE", "\x02268\x0FE00"), ("mDDot", "\x0223A"), ("macr", "\x000AF"), ("male", "\x02642"), ("malt", "\x02720"), ("maltese", "\x02720"), ("map", "\x021A6"), ("mapsto", "\x021A6"), ("mapstodown", "\x021A7"), ("mapstoleft", "\x021A4"), ("mapstoup", "\x021A5"), ("marker", "\x025AE"), ("mcomma", "\x02A29"), ("mcy", "\x0043C"), ("mdash", "\x02014"), ("measuredangle", "\x02221"), ("mfr", "\x1D52A"), ("mho", "\x02127"), ("micro", "\x000B5"), ("mid", "\x02223"), ("midast", "\x0002A"), ("midcir", "\x02AF0"), ("middot", "\x000B7"), ("minus", "\x02212"), ("minusb", "\x0229F"), ("minusd", "\x02238"), ("minusdu", "\x02A2A"), ("mlcp", "\x02ADB"), ("mldr", "\x02026"), ("mnplus", "\x02213"), ("models", "\x022A7"), ("mopf", "\x1D55E"), ("mp", "\x02213"), ("mscr", "\x1D4C2") ] {-# NOINLINE reftab38 #-} reftab38 :: [(Text,Text)] reftab38 = [ ("mstpos", "\x0223E"), ("mu", "\x003BC"), ("multimap", "\x022B8"), ("mumap", "\x022B8"), ("nGg", "\x022D9\x00338"), ("nGt", "\x0226B\x020D2"), ("nGtv", "\x0226B\x00338"), ("nLeftarrow", "\x021CD"), ("nLeftrightarrow", "\x021CE"), ("nLl", "\x022D8\x00338"), ("nLt", "\x0226A\x020D2"), ("nLtv", "\x0226A\x00338"), ("nRightarrow", "\x021CF"), ("nVDash", "\x022AF"), ("nVdash", "\x022AE"), ("nabla", "\x02207"), ("nacute", "\x00144"), ("nang", "\x02220\x020D2"), ("nap", "\x02249"), ("napE", "\x02A70\x00338"), ("napid", "\x0224B\x00338"), ("napos", "\x00149"), ("napprox", "\x02249"), ("natur", "\x0266E"), ("natural", "\x0266E"), ("naturals", "\x02115"), ("nbsp", "\x000A0"), ("nbump", "\x0224E\x00338"), ("nbumpe", "\x0224F\x00338"), ("ncap", "\x02A43"), ("ncaron", "\x00148"), ("ncedil", "\x00146"), ("ncong", "\x02247"), ("ncongdot", "\x02A6D\x00338"), ("ncup", "\x02A42"), ("ncy", "\x0043D"), ("ndash", "\x02013") ] {-# NOINLINE reftab39 #-} reftab39 :: [(Text,Text)] reftab39 = [ ("ne", "\x02260"), ("neArr", "\x021D7"), ("nearhk", "\x02924"), ("nearr", "\x02197"), ("nearrow", "\x02197"), ("nedot", "\x02250\x00338"), ("nequiv", "\x02262"), ("nesear", "\x02928"), ("nesim", "\x02242\x00338"), ("nexist", "\x02204"), ("nexists", "\x02204"), ("nfr", "\x1D52B"), ("ngE", "\x02267\x00338"), ("nge", "\x02271"), ("ngeq", "\x02271"), ("ngeqq", "\x02267\x00338"), ("ngeqslant", "\x02A7E\x00338"), ("nges", "\x02A7E\x00338"), ("ngsim", "\x02275"), ("ngt", "\x0226F"), ("ngtr", "\x0226F"), ("nhArr", "\x021CE"), ("nharr", "\x021AE"), ("nhpar", "\x02AF2"), ("ni", "\x0220B"), ("nis", "\x022FC"), ("nisd", "\x022FA"), ("niv", "\x0220B"), ("njcy", "\x0045A"), ("nlArr", "\x021CD"), ("nlE", "\x02266\x00338"), ("nlarr", "\x0219A"), ("nldr", "\x02025"), ("nle", "\x02270"), ("nleftarrow", "\x0219A"), ("nleftrightarrow", "\x021AE"), ("nleq", "\x02270") ] {-# NOINLINE reftab40 #-} reftab40 :: [(Text,Text)] reftab40 = [ ("nleqq", "\x02266\x00338"), ("nleqslant", "\x02A7D\x00338"), ("nles", "\x02A7D\x00338"), ("nless", "\x0226E"), ("nlsim", "\x02274"), ("nlt", "\x0226E"), ("nltri", "\x022EA"), ("nltrie", "\x022EC"), ("nmid", "\x02224"), ("nopf", "\x1D55F"), ("not", "\x000AC"), ("notin", "\x02209"), ("notinE", "\x022F9\x00338"), ("notindot", "\x022F5\x00338"), ("notinva", "\x02209"), ("notinvb", "\x022F7"), ("notinvc", "\x022F6"), ("notni", "\x0220C"), ("notniva", "\x0220C"), ("notnivb", "\x022FE"), ("notnivc", "\x022FD"), ("npar", "\x02226"), ("nparallel", "\x02226"), ("nparsl", "\x02AFD\x020E5"), ("npart", "\x02202\x00338"), ("npolint", "\x02A14"), ("npr", "\x02280"), ("nprcue", "\x022E0"), ("npre", "\x02AAF\x00338"), ("nprec", "\x02280"), ("npreceq", "\x02AAF\x00338"), ("nrArr", "\x021CF"), ("nrarr", "\x0219B"), ("nrarrc", "\x02933\x00338"), ("nrarrw", "\x0219D\x00338"), ("nrightarrow", "\x0219B"), ("nrtri", "\x022EB") ] {-# NOINLINE reftab41 #-} reftab41 :: [(Text,Text)] reftab41 = [ ("nrtrie", "\x022ED"), ("nsc", "\x02281"), ("nsccue", "\x022E1"), ("nsce", "\x02AB0\x00338"), ("nscr", "\x1D4C3"), ("nshortmid", "\x02224"), ("nshortparallel", "\x02226"), ("nsim", "\x02241"), ("nsime", "\x02244"), ("nsimeq", "\x02244"), ("nsmid", "\x02224"), ("nspar", "\x02226"), ("nsqsube", "\x022E2"), ("nsqsupe", "\x022E3"), ("nsub", "\x02284"), ("nsubE", "\x02AC5\x00338"), ("nsube", "\x02288"), ("nsubset", "\x02282\x020D2"), ("nsubseteq", "\x02288"), ("nsubseteqq", "\x02AC5\x00338"), ("nsucc", "\x02281"), ("nsucceq", "\x02AB0\x00338"), ("nsup", "\x02285"), ("nsupE", "\x02AC6\x00338"), ("nsupe", "\x02289"), ("nsupset", "\x02283\x020D2"), ("nsupseteq", "\x02289"), ("nsupseteqq", "\x02AC6\x00338"), ("ntgl", "\x02279"), ("ntilde", "\x000F1"), ("ntlg", "\x02278"), ("ntriangleleft", "\x022EA"), ("ntrianglelefteq", "\x022EC"), ("ntriangleright", "\x022EB"), ("ntrianglerighteq", "\x022ED"), ("nu", "\x003BD"), ("num", "\x00023") ] {-# NOINLINE reftab42 #-} reftab42 :: [(Text,Text)] reftab42 = [ ("numero", "\x02116"), ("numsp", "\x02007"), ("nvDash", "\x022AD"), ("nvHarr", "\x02904"), ("nvap", "\x0224D\x020D2"), ("nvdash", "\x022AC"), ("nvge", "\x02265\x020D2"), ("nvgt", "\x0003E\x020D2"), ("nvinfin", "\x029DE"), ("nvlArr", "\x02902"), ("nvle", "\x02264\x020D2"), ("nvlt", "\x0003C\x020D2"), ("nvltrie", "\x022B4\x020D2"), ("nvrArr", "\x02903"), ("nvrtrie", "\x022B5\x020D2"), ("nvsim", "\x0223C\x020D2"), ("nwArr", "\x021D6"), ("nwarhk", "\x02923"), ("nwarr", "\x02196"), ("nwarrow", "\x02196"), ("nwnear", "\x02927"), ("oS", "\x024C8"), ("oacute", "\x000F3"), ("oast", "\x0229B"), ("ocir", "\x0229A"), ("ocirc", "\x000F4"), ("ocy", "\x0043E"), ("odash", "\x0229D"), ("odblac", "\x00151"), ("odiv", "\x02A38"), ("odot", "\x02299"), ("odsold", "\x029BC"), ("oelig", "\x00153"), ("ofcir", "\x029BF"), ("ofr", "\x1D52C"), ("ogon", "\x002DB"), ("ograve", "\x000F2") ] {-# NOINLINE reftab43 #-} reftab43 :: [(Text,Text)] reftab43 = [ ("ogt", "\x029C1"), ("ohbar", "\x029B5"), ("ohm", "\x003A9"), ("oint", "\x0222E"), ("olarr", "\x021BA"), ("olcir", "\x029BE"), ("olcross", "\x029BB"), ("oline", "\x0203E"), ("olt", "\x029C0"), ("omacr", "\x0014D"), ("omega", "\x003C9"), ("omicron", "\x003BF"), ("omid", "\x029B6"), ("ominus", "\x02296"), ("oopf", "\x1D560"), ("opar", "\x029B7"), ("operp", "\x029B9"), ("oplus", "\x02295"), ("or", "\x02228"), ("orarr", "\x021BB"), ("ord", "\x02A5D"), ("order", "\x02134"), ("orderof", "\x02134"), ("ordf", "\x000AA"), ("ordm", "\x000BA"), ("origof", "\x022B6"), ("oror", "\x02A56"), ("orslope", "\x02A57"), ("orv", "\x02A5B"), ("oscr", "\x02134"), ("oslash", "\x000F8"), ("osol", "\x02298"), ("otilde", "\x000F5"), ("otimes", "\x02297"), ("otimesas", "\x02A36"), ("ouml", "\x000F6"), ("ovbar", "\x0233D") ] {-# NOINLINE reftab44 #-} reftab44 :: [(Text,Text)] reftab44 = [ ("par", "\x02225"), ("para", "\x000B6"), ("parallel", "\x02225"), ("parsim", "\x02AF3"), ("parsl", "\x02AFD"), ("part", "\x02202"), ("pcy", "\x0043F"), ("percnt", "\x00025"), ("period", "\x0002E"), ("permil", "\x02030"), ("perp", "\x022A5"), ("pertenk", "\x02031"), ("pfr", "\x1D52D"), ("phi", "\x003C6"), ("phiv", "\x003D5"), ("phmmat", "\x02133"), ("phone", "\x0260E"), ("pi", "\x003C0"), ("pitchfork", "\x022D4"), ("piv", "\x003D6"), ("planck", "\x0210F"), ("planckh", "\x0210E"), ("plankv", "\x0210F"), ("plus", "\x0002B"), ("plusacir", "\x02A23"), ("plusb", "\x0229E"), ("pluscir", "\x02A22"), ("plusdo", "\x02214"), ("plusdu", "\x02A25"), ("pluse", "\x02A72"), ("plusmn", "\x000B1"), ("plussim", "\x02A26"), ("plustwo", "\x02A27"), ("pm", "\x000B1"), ("pointint", "\x02A15"), ("popf", "\x1D561"), ("pound", "\x000A3") ] {-# NOINLINE reftab45 #-} reftab45 :: [(Text,Text)] reftab45 = [ ("pr", "\x0227A"), ("prE", "\x02AB3"), ("prap", "\x02AB7"), ("prcue", "\x0227C"), ("pre", "\x02AAF"), ("prec", "\x0227A"), ("precapprox", "\x02AB7"), ("preccurlyeq", "\x0227C"), ("preceq", "\x02AAF"), ("precnapprox", "\x02AB9"), ("precneqq", "\x02AB5"), ("precnsim", "\x022E8"), ("precsim", "\x0227E"), ("prime", "\x02032"), ("primes", "\x02119"), ("prnE", "\x02AB5"), ("prnap", "\x02AB9"), ("prnsim", "\x022E8"), ("prod", "\x0220F"), ("profalar", "\x0232E"), ("profline", "\x02312"), ("profsurf", "\x02313"), ("prop", "\x0221D"), ("propto", "\x0221D"), ("prsim", "\x0227E"), ("prurel", "\x022B0"), ("pscr", "\x1D4C5"), ("psi", "\x003C8"), ("puncsp", "\x02008"), ("qfr", "\x1D52E"), ("qint", "\x02A0C"), ("qopf", "\x1D562"), ("qprime", "\x02057"), ("qscr", "\x1D4C6"), ("quaternions", "\x0210D"), ("quatint", "\x02A16"), ("quest", "\x0003F") ] {-# NOINLINE reftab46 #-} reftab46 :: [(Text,Text)] reftab46 = [ ("questeq", "\x0225F"), ("quot", "\x00022"), ("rAarr", "\x021DB"), ("rArr", "\x021D2"), ("rAtail", "\x0291C"), ("rBarr", "\x0290F"), ("rHar", "\x02964"), ("race", "\x0223D\x00331"), ("racute", "\x00155"), ("radic", "\x0221A"), ("raemptyv", "\x029B3"), ("rang", "\x027E9"), ("rangd", "\x02992"), ("range", "\x029A5"), ("rangle", "\x027E9"), ("raquo", "\x000BB"), ("rarr", "\x02192"), ("rarrap", "\x02975"), ("rarrb", "\x021E5"), ("rarrbfs", "\x02920"), ("rarrc", "\x02933"), ("rarrfs", "\x0291E"), ("rarrhk", "\x021AA"), ("rarrlp", "\x021AC"), ("rarrpl", "\x02945"), ("rarrsim", "\x02974"), ("rarrtl", "\x021A3"), ("rarrw", "\x0219D"), ("ratail", "\x0291A"), ("ratio", "\x02236"), ("rationals", "\x0211A"), ("rbarr", "\x0290D"), ("rbbrk", "\x02773"), ("rbrace", "\x0007D"), ("rbrack", "\x0005D"), ("rbrke", "\x0298C"), ("rbrksld", "\x0298E") ] {-# NOINLINE reftab47 #-} reftab47 :: [(Text,Text)] reftab47 = [ ("rbrkslu", "\x02990"), ("rcaron", "\x00159"), ("rcedil", "\x00157"), ("rceil", "\x02309"), ("rcub", "\x0007D"), ("rcy", "\x00440"), ("rdca", "\x02937"), ("rdldhar", "\x02969"), ("rdquo", "\x0201D"), ("rdquor", "\x0201D"), ("rdsh", "\x021B3"), ("real", "\x0211C"), ("realine", "\x0211B"), ("realpart", "\x0211C"), ("reals", "\x0211D"), ("rect", "\x025AD"), ("reg", "\x000AE"), ("rfisht", "\x0297D"), ("rfloor", "\x0230B"), ("rfr", "\x1D52F"), ("rhard", "\x021C1"), ("rharu", "\x021C0"), ("rharul", "\x0296C"), ("rho", "\x003C1"), ("rhov", "\x003F1"), ("rightarrow", "\x02192"), ("rightarrowtail", "\x021A3"), ("rightharpoondown", "\x021C1"), ("rightharpoonup", "\x021C0"), ("rightleftarrows", "\x021C4"), ("rightleftharpoons", "\x021CC"), ("rightrightarrows", "\x021C9"), ("rightsquigarrow", "\x0219D"), ("rightthreetimes", "\x022CC"), ("ring", "\x002DA"), ("risingdotseq", "\x02253"), ("rlarr", "\x021C4") ] {-# NOINLINE reftab48 #-} reftab48 :: [(Text,Text)] reftab48 = [ ("rlhar", "\x021CC"), ("rlm", "\x0200F"), ("rmoust", "\x023B1"), ("rmoustache", "\x023B1"), ("rnmid", "\x02AEE"), ("roang", "\x027ED"), ("roarr", "\x021FE"), ("robrk", "\x027E7"), ("ropar", "\x02986"), ("ropf", "\x1D563"), ("roplus", "\x02A2E"), ("rotimes", "\x02A35"), ("rpar", "\x00029"), ("rpargt", "\x02994"), ("rppolint", "\x02A12"), ("rrarr", "\x021C9"), ("rsaquo", "\x0203A"), ("rscr", "\x1D4C7"), ("rsh", "\x021B1"), ("rsqb", "\x0005D"), ("rsquo", "\x02019"), ("rsquor", "\x02019"), ("rthree", "\x022CC"), ("rtimes", "\x022CA"), ("rtri", "\x025B9"), ("rtrie", "\x022B5"), ("rtrif", "\x025B8"), ("rtriltri", "\x029CE"), ("ruluhar", "\x02968"), ("rx", "\x0211E"), ("sacute", "\x0015B"), ("sbquo", "\x0201A"), ("sc", "\x0227B"), ("scE", "\x02AB4"), ("scap", "\x02AB8"), ("scaron", "\x00161"), ("sccue", "\x0227D") ] {-# NOINLINE reftab49 #-} reftab49 :: [(Text,Text)] reftab49 = [ ("sce", "\x02AB0"), ("scedil", "\x0015F"), ("scirc", "\x0015D"), ("scnE", "\x02AB6"), ("scnap", "\x02ABA"), ("scnsim", "\x022E9"), ("scpolint", "\x02A13"), ("scsim", "\x0227F"), ("scy", "\x00441"), ("sdot", "\x022C5"), ("sdotb", "\x022A1"), ("sdote", "\x02A66"), ("seArr", "\x021D8"), ("searhk", "\x02925"), ("searr", "\x02198"), ("searrow", "\x02198"), ("sect", "\x000A7"), ("semi", "\x0003B"), ("seswar", "\x02929"), ("setminus", "\x02216"), ("setmn", "\x02216"), ("sext", "\x02736"), ("sfr", "\x1D530"), ("sfrown", "\x02322"), ("sharp", "\x0266F"), ("shchcy", "\x00449"), ("shcy", "\x00448"), ("shortmid", "\x02223"), ("shortparallel", "\x02225"), ("shy", "\x000AD"), ("sigma", "\x003C3"), ("sigmaf", "\x003C2"), ("sigmav", "\x003C2"), ("sim", "\x0223C"), ("simdot", "\x02A6A"), ("sime", "\x02243"), ("simeq", "\x02243") ] {-# NOINLINE reftab50 #-} reftab50 :: [(Text,Text)] reftab50 = [ ("simg", "\x02A9E"), ("simgE", "\x02AA0"), ("siml", "\x02A9D"), ("simlE", "\x02A9F"), ("simne", "\x02246"), ("simplus", "\x02A24"), ("simrarr", "\x02972"), ("slarr", "\x02190"), ("smallsetminus", "\x02216"), ("smashp", "\x02A33"), ("smeparsl", "\x029E4"), ("smid", "\x02223"), ("smile", "\x02323"), ("smt", "\x02AAA"), ("smte", "\x02AAC"), ("smtes", "\x02AAC\x0FE00"), ("softcy", "\x0044C"), ("sol", "\x0002F"), ("solb", "\x029C4"), ("solbar", "\x0233F"), ("sopf", "\x1D564"), ("spades", "\x02660"), ("spadesuit", "\x02660"), ("spar", "\x02225"), ("sqcap", "\x02293"), ("sqcaps", "\x02293\x0FE00"), ("sqcup", "\x02294"), ("sqcups", "\x02294\x0FE00"), ("sqsub", "\x0228F"), ("sqsube", "\x02291"), ("sqsubset", "\x0228F"), ("sqsubseteq", "\x02291"), ("sqsup", "\x02290"), ("sqsupe", "\x02292"), ("sqsupset", "\x02290"), ("sqsupseteq", "\x02292"), ("squ", "\x025A1") ] {-# NOINLINE reftab51 #-} reftab51 :: [(Text,Text)] reftab51 = [ ("square", "\x025A1"), ("squarf", "\x025AA"), ("squf", "\x025AA"), ("srarr", "\x02192"), ("sscr", "\x1D4C8"), ("ssetmn", "\x02216"), ("ssmile", "\x02323"), ("sstarf", "\x022C6"), ("star", "\x02606"), ("starf", "\x02605"), ("straightepsilon", "\x003F5"), ("straightphi", "\x003D5"), ("strns", "\x000AF"), ("sub", "\x02282"), ("subE", "\x02AC5"), ("subdot", "\x02ABD"), ("sube", "\x02286"), ("subedot", "\x02AC3"), ("submult", "\x02AC1"), ("subnE", "\x02ACB"), ("subne", "\x0228A"), ("subplus", "\x02ABF"), ("subrarr", "\x02979"), ("subset", "\x02282"), ("subseteq", "\x02286"), ("subseteqq", "\x02AC5"), ("subsetneq", "\x0228A"), ("subsetneqq", "\x02ACB"), ("subsim", "\x02AC7"), ("subsub", "\x02AD5"), ("subsup", "\x02AD3"), ("succ", "\x0227B"), ("succapprox", "\x02AB8"), ("succcurlyeq", "\x0227D"), ("succeq", "\x02AB0"), ("succnapprox", "\x02ABA"), ("succneqq", "\x02AB6") ] {-# NOINLINE reftab52 #-} reftab52 :: [(Text,Text)] reftab52 = [ ("succnsim", "\x022E9"), ("succsim", "\x0227F"), ("sum", "\x02211"), ("sung", "\x0266A"), ("sup", "\x02283"), ("sup1", "\x000B9"), ("sup2", "\x000B2"), ("sup3", "\x000B3"), ("supE", "\x02AC6"), ("supdot", "\x02ABE"), ("supdsub", "\x02AD8"), ("supe", "\x02287"), ("supedot", "\x02AC4"), ("suphsol", "\x027C9"), ("suphsub", "\x02AD7"), ("suplarr", "\x0297B"), ("supmult", "\x02AC2"), ("supnE", "\x02ACC"), ("supne", "\x0228B"), ("supplus", "\x02AC0"), ("supset", "\x02283"), ("supseteq", "\x02287"), ("supseteqq", "\x02AC6"), ("supsetneq", "\x0228B"), ("supsetneqq", "\x02ACC"), ("supsim", "\x02AC8"), ("supsub", "\x02AD4"), ("supsup", "\x02AD6"), ("swArr", "\x021D9"), ("swarhk", "\x02926"), ("swarr", "\x02199"), ("swarrow", "\x02199"), ("swnwar", "\x0292A"), ("szlig", "\x000DF"), ("target", "\x02316"), ("tau", "\x003C4"), ("tbrk", "\x023B4") ] {-# NOINLINE reftab53 #-} reftab53 :: [(Text,Text)] reftab53 = [ ("tcaron", "\x00165"), ("tcedil", "\x00163"), ("tcy", "\x00442"), ("tdot", "\x020DB"), ("telrec", "\x02315"), ("tfr", "\x1D531"), ("there4", "\x02234"), ("therefore", "\x02234"), ("theta", "\x003B8"), ("thetasym", "\x003D1"), ("thetav", "\x003D1"), ("thickapprox", "\x02248"), ("thicksim", "\x0223C"), ("thinsp", "\x02009"), ("thkap", "\x02248"), ("thksim", "\x0223C"), ("thorn", "\x000FE"), ("tilde", "\x002DC"), ("times", "\x000D7"), ("timesb", "\x022A0"), ("timesbar", "\x02A31"), ("timesd", "\x02A30"), ("tint", "\x0222D"), ("toea", "\x02928"), ("top", "\x022A4"), ("topbot", "\x02336"), ("topcir", "\x02AF1"), ("topf", "\x1D565"), ("topfork", "\x02ADA"), ("tosa", "\x02929"), ("tprime", "\x02034"), ("trade", "\x02122"), ("triangle", "\x025B5"), ("triangledown", "\x025BF"), ("triangleleft", "\x025C3"), ("trianglelefteq", "\x022B4"), ("triangleq", "\x0225C") ] {-# NOINLINE reftab54 #-} reftab54 :: [(Text,Text)] reftab54 = [ ("triangleright", "\x025B9"), ("trianglerighteq", "\x022B5"), ("tridot", "\x025EC"), ("trie", "\x0225C"), ("triminus", "\x02A3A"), ("triplus", "\x02A39"), ("trisb", "\x029CD"), ("tritime", "\x02A3B"), ("trpezium", "\x023E2"), ("tscr", "\x1D4C9"), ("tscy", "\x00446"), ("tshcy", "\x0045B"), ("tstrok", "\x00167"), ("twixt", "\x0226C"), ("twoheadleftarrow", "\x0219E"), ("twoheadrightarrow", "\x021A0"), ("uArr", "\x021D1"), ("uHar", "\x02963"), ("uacute", "\x000FA"), ("uarr", "\x02191"), ("ubrcy", "\x0045E"), ("ubreve", "\x0016D"), ("ucirc", "\x000FB"), ("ucy", "\x00443"), ("udarr", "\x021C5"), ("udblac", "\x00171"), ("udhar", "\x0296E"), ("ufisht", "\x0297E"), ("ufr", "\x1D532"), ("ugrave", "\x000F9"), ("uharl", "\x021BF"), ("uharr", "\x021BE"), ("uhblk", "\x02580"), ("ulcorn", "\x0231C"), ("ulcorner", "\x0231C"), ("ulcrop", "\x0230F"), ("ultri", "\x025F8") ] {-# NOINLINE reftab55 #-} reftab55 :: [(Text,Text)] reftab55 = [ ("umacr", "\x0016B"), ("uml", "\x000A8"), ("uogon", "\x00173"), ("uopf", "\x1D566"), ("uparrow", "\x02191"), ("updownarrow", "\x02195"), ("upharpoonleft", "\x021BF"), ("upharpoonright", "\x021BE"), ("uplus", "\x0228E"), ("upsi", "\x003C5"), ("upsih", "\x003D2"), ("upsilon", "\x003C5"), ("upuparrows", "\x021C8"), ("urcorn", "\x0231D"), ("urcorner", "\x0231D"), ("urcrop", "\x0230E"), ("uring", "\x0016F"), ("urtri", "\x025F9"), ("uscr", "\x1D4CA"), ("utdot", "\x022F0"), ("utilde", "\x00169"), ("utri", "\x025B5"), ("utrif", "\x025B4"), ("uuarr", "\x021C8"), ("uuml", "\x000FC"), ("uwangle", "\x029A7"), ("vArr", "\x021D5"), ("vBar", "\x02AE8"), ("vBarv", "\x02AE9"), ("vDash", "\x022A8"), ("vangrt", "\x0299C"), ("varepsilon", "\x003F5"), ("varkappa", "\x003F0"), ("varnothing", "\x02205"), ("varphi", "\x003D5"), ("varpi", "\x003D6"), ("varpropto", "\x0221D") ] {-# NOINLINE reftab56 #-} reftab56 :: [(Text,Text)] reftab56 = [ ("varr", "\x02195"), ("varrho", "\x003F1"), ("varsigma", "\x003C2"), ("varsubsetneq", "\x0228A\x0FE00"), ("varsubsetneqq", "\x02ACB\x0FE00"), ("varsupsetneq", "\x0228B\x0FE00"), ("varsupsetneqq", "\x02ACC\x0FE00"), ("vartheta", "\x003D1"), ("vartriangleleft", "\x022B2"), ("vartriangleright", "\x022B3"), ("vcy", "\x00432"), ("vdash", "\x022A2"), ("vee", "\x02228"), ("veebar", "\x022BB"), ("veeeq", "\x0225A"), ("vellip", "\x022EE"), ("verbar", "\x0007C"), ("vert", "\x0007C"), ("vfr", "\x1D533"), ("vltri", "\x022B2"), ("vnsub", "\x02282\x020D2"), ("vnsup", "\x02283\x020D2"), ("vopf", "\x1D567"), ("vprop", "\x0221D"), ("vrtri", "\x022B3"), ("vscr", "\x1D4CB"), ("vsubnE", "\x02ACB\x0FE00"), ("vsubne", "\x0228A\x0FE00"), ("vsupnE", "\x02ACC\x0FE00"), ("vsupne", "\x0228B\x0FE00"), ("vzigzag", "\x0299A"), ("wcirc", "\x00175"), ("wedbar", "\x02A5F"), ("wedge", "\x02227"), ("wedgeq", "\x02259"), ("weierp", "\x02118"), ("wfr", "\x1D534") ] {-# NOINLINE reftab57 #-} reftab57 :: [(Text,Text)] reftab57 = [ ("wopf", "\x1D568"), ("wp", "\x02118"), ("wr", "\x02240"), ("wreath", "\x02240"), ("wscr", "\x1D4CC"), ("xcap", "\x022C2"), ("xcirc", "\x025EF"), ("xcup", "\x022C3"), ("xdtri", "\x025BD"), ("xfr", "\x1D535"), ("xhArr", "\x027FA"), ("xharr", "\x027F7"), ("xi", "\x003BE"), ("xlArr", "\x027F8"), ("xlarr", "\x027F5"), ("xmap", "\x027FC"), ("xnis", "\x022FB"), ("xodot", "\x02A00"), ("xopf", "\x1D569"), ("xoplus", "\x02A01"), ("xotime", "\x02A02"), ("xrArr", "\x027F9"), ("xrarr", "\x027F6"), ("xscr", "\x1D4CD"), ("xsqcup", "\x02A06"), ("xuplus", "\x02A04"), ("xutri", "\x025B3"), ("xvee", "\x022C1"), ("xwedge", "\x022C0"), ("yacute", "\x000FD"), ("yacy", "\x0044F"), ("ycirc", "\x00177"), ("ycy", "\x0044B"), ("yen", "\x000A5"), ("yfr", "\x1D536"), ("yicy", "\x00457"), ("yopf", "\x1D56A") ] {-# NOINLINE reftab58 #-} reftab58 :: [(Text,Text)] reftab58 = [ ("yscr", "\x1D4CE"), ("yucy", "\x0044E"), ("yuml", "\x000FF"), ("zacute", "\x0017A"), ("zcaron", "\x0017E"), ("zcy", "\x00437"), ("zdot", "\x0017C"), ("zeetrf", "\x02128"), ("zeta", "\x003B6"), ("zfr", "\x1D537"), ("zhcy", "\x00436"), ("zigrarr", "\x021DD"), ("zopf", "\x1D56B"), ("zscr", "\x1D4CF"), ("zwj", "\x0200D"), ("zwnj", "\x0200C") ] xmlhtml-0.2.3.4/src/Text/XmlHtml/HTML/Render.hs0000644000000000000000000001312212446622357017162 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} module Text.XmlHtml.HTML.Render where import Blaze.ByteString.Builder import Control.Applicative import Data.Maybe import Data.Monoid import qualified Text.Parsec as P import Text.XmlHtml.Common import Text.XmlHtml.TextParser import Text.XmlHtml.HTML.Meta import qualified Text.XmlHtml.HTML.Parse as P import Text.XmlHtml.XML.Render (docTypeDecl, entity) import Data.Text (Text) import qualified Data.Text as T import qualified Data.HashSet as S ------------------------------------------------------------------------------ -- | And, the rendering code. render :: Encoding -> Maybe DocType -> [Node] -> Builder render e dt ns = byteOrder `mappend` docTypeDecl e dt `mappend` nodes where byteOrder | isUTF16 e = fromText e "\xFEFF" -- byte order mark | otherwise = mempty nodes | null ns = mempty | otherwise = firstNode e (head ns) `mappend` (mconcat $ map (node e) (tail ns)) ------------------------------------------------------------------------------ -- | Function for rendering HTML nodes without the overhead of creating a -- Document structure. renderHtmlFragment :: Encoding -> [Node] -> Builder renderHtmlFragment _ [] = mempty renderHtmlFragment e (n:ns) = firstNode e n `mappend` (mconcat $ map (node e) ns) ------------------------------------------------------------------------------ -- | HTML allows & so long as it is not "ambiguous" (i.e., looks like an -- entity). So we have a special case for that. escaped :: [Char] -> Encoding -> Text -> Builder escaped _ _ "" = mempty escaped bad e t = let (p,s) = T.break (`elem` bad) t r = T.uncons s in fromText e p `mappend` case r of Nothing -> mempty Just ('&',ss) | isLeft (parseText ambigAmp "" s) -> fromText e "&" `mappend` escaped bad e ss Just (c,ss) -> entity e c `mappend` escaped bad e ss where isLeft = either (const True) (const False) ambigAmp = P.char '&' *> (P.finishCharRef *> return () <|> P.finishEntityRef *> return ()) ------------------------------------------------------------------------------ node :: Encoding -> Node -> Builder node e (TextNode t) = escaped "<>&" e t node e (Comment t) | "--" `T.isInfixOf` t = error "Invalid comment" | "-" `T.isSuffixOf` t = error "Invalid comment" | otherwise = fromText e "" node e (Element t a c) = let tbase = T.toLower $ snd $ T.breakOnEnd ":" t in element e t tbase a c ------------------------------------------------------------------------------ -- | Process the first node differently to encode leading whitespace. This -- lets us be sure that @parseHTML@ is a left inverse to @render@. firstNode :: Encoding -> Node -> Builder firstNode e (Comment t) = node e (Comment t) firstNode e (Element t a c) = node e (Element t a c) firstNode _ (TextNode "") = mempty firstNode e (TextNode t) = let (c,t') = fromJust $ T.uncons t in escaped "<>& \t\r\n" e (T.singleton c) `mappend` node e (TextNode t') ------------------------------------------------------------------------------ -- XXX: Should do something to avoid concatting large CDATA sections before -- writing them to the output. element :: Encoding -> Text -> Text -> [(Text, Text)] -> [Node] -> Builder element e t tb a c | tb `S.member` voidTags && null c = fromText e "<" `mappend` fromText e t `mappend` (mconcat $ map (attribute e) a) `mappend` fromText e " />" | tb `S.member` voidTags = error $ T.unpack t ++ " must be empty" | isRawText tb a, all isTextNode c, let s = T.concat (map nodeText c), not ("" `mappend` fromText e s `mappend` fromText e "" | isRawText tb a, [ TextNode _ ] <- c = error $ T.unpack t ++ " cannot contain text looking like its end tag" | isRawText tb a = error $ T.unpack t ++ " cannot contain child elements or comments" | otherwise = fromText e "<" `mappend` fromText e t `mappend` (mconcat $ map (attribute e) a) `mappend` fromText e ">" `mappend` (mconcat $ map (node e) c) `mappend` fromText e "" ------------------------------------------------------------------------------ attribute :: Encoding -> (Text, Text) -> Builder attribute e (n,v) | v == "" = fromText e " " `mappend` fromText e n | not ("\'" `T.isInfixOf` v) = fromText e " " `mappend` fromText e n `mappend` fromText e "=\'" `mappend` escaped "&" e v `mappend` fromText e "\'" | otherwise = fromText e " " `mappend` fromText e n `mappend` fromText e "=\"" `mappend` escaped "&\"" e v `mappend` fromText e "\"" xmlhtml-0.2.3.4/src/Text/Blaze/0000755000000000000000000000000012446622357014314 5ustar0000000000000000xmlhtml-0.2.3.4/src/Text/Blaze/Renderer/0000755000000000000000000000000012446622357016062 5ustar0000000000000000xmlhtml-0.2.3.4/src/Text/Blaze/Renderer/XmlHtml.hs0000644000000000000000000000632612446622357020012 0ustar0000000000000000-- | Renderer that supports rendering to xmlhtml forests. This is a port of -- the Hexpat renderer. -- -- Warning: because this renderer doesn't directly create the output, but -- rather an XML tree representation, it is impossible to render pre-escaped -- text. -- module Text.Blaze.Renderer.XmlHtml (renderHtml, renderHtmlNodes) where import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.Encoding as T import Text.Blaze.Html import Text.Blaze.Internal import Text.XmlHtml -- | Render a 'ChoiceString' to Text. This is only meant to be used for -- shorter strings, since it is inefficient for large strings. -- fromChoiceStringText :: ChoiceString -> Text fromChoiceStringText (Static s) = getText s fromChoiceStringText (String s) = T.pack s fromChoiceStringText (Text s) = s fromChoiceStringText (ByteString s) = T.decodeUtf8 s fromChoiceStringText (PreEscaped s) = fromChoiceStringText s fromChoiceStringText (External s) = fromChoiceStringText s fromChoiceStringText (AppendChoiceString x y) = fromChoiceStringText x `T.append` fromChoiceStringText y fromChoiceStringText EmptyChoiceString = T.empty {-# INLINE fromChoiceStringText #-} -- | Render a 'ChoiceString' to an appending list of nodes -- fromChoiceString :: ChoiceString -> [Node] -> [Node] fromChoiceString s@(Static _) = (TextNode (fromChoiceStringText s) :) fromChoiceString s@(String _) = (TextNode (fromChoiceStringText s) :) fromChoiceString s@(Text _) = (TextNode (fromChoiceStringText s) :) fromChoiceString s@(ByteString _) = (TextNode (fromChoiceStringText s) :) fromChoiceString (PreEscaped s) = fromChoiceString s fromChoiceString (External s) = fromChoiceString s fromChoiceString (AppendChoiceString x y) = fromChoiceString x . fromChoiceString y fromChoiceString EmptyChoiceString = id {-# INLINE fromChoiceString #-} -- | Render some 'Html' to an appending list of nodes -- renderNodes :: Html -> [Node] -> [Node] renderNodes = go [] where go :: [(Text, Text)] -> MarkupM a -> [Node] -> [Node] go attrs (Parent tag _ _ content) = (Element (getText tag) attrs (go [] content []) :) go attrs (CustomParent tag content) = (Element (fromChoiceStringText tag) attrs (go [] content []) :) go attrs (Leaf tag _ _) = (Element (getText tag) attrs [] :) go attrs (CustomLeaf tag _) = (Element (fromChoiceStringText tag) attrs [] :) go attrs (AddAttribute key _ value content) = go ((getText key, fromChoiceStringText value) : attrs) content go attrs (AddCustomAttribute key value content) = go ((fromChoiceStringText key, fromChoiceStringText value) : attrs) content go _ (Content content) = fromChoiceString content go attrs (Append h1 h2) = go attrs h1 . go attrs h2 go _ Empty = id {-# NOINLINE go #-} {-# INLINE renderNodes #-} -- | Render HTML to an xmlhtml 'Document' -- renderHtml :: Html -> Document renderHtml html = HtmlDocument UTF8 Nothing (renderNodes html []) {-# INLINE renderHtml #-} -- | Render HTML to a list of xmlhtml nodes -- renderHtmlNodes :: Html -> [Node] renderHtmlNodes = flip renderNodes [] xmlhtml-0.2.3.4/test/0000755000000000000000000000000012446622357012523 5ustar0000000000000000xmlhtml-0.2.3.4/test/runTestsAndCoverage.sh0000755000000000000000000000137612446622357017017 0ustar0000000000000000#!/bin/sh set -e if [ -z "$DEBUG" ]; then export DEBUG="testsuite" fi SUITE=./dist/build/testsuite/testsuite export LC_ALL=C export LANG=C rm -f testsuite.tix if [ ! -f $SUITE ]; then cat </dev/null 2>&1 rm -f testsuite.tix cat <= 1.6 Executable testsuite hs-source-dirs: ../src suite main-is: TestSuite.hs build-depends: HUnit == 1.2.*, directory >= 1.0 && <1.3, QuickCheck >= 2.3.0.2, base == 4.*, blaze-builder >= 0.2 && <0.4, blaze-html >= 0.5 && <0.8, blaze-markup >= 0.5 && <0.7, bytestring >= 0.9 && <0.11, containers >= 0.3 && <0.6, parsec >= 3.1.2 && <3.2, test-framework >= 0.8.0.3 && <0.9, test-framework-hunit >= 0.3 && <0.4, test-framework-quickcheck2 >= 0.3 && <0.4, text >= 0.11 && <1.2, unordered-containers >= 0.1.4 && <0.3 ghc-options: -Wall -fhpc -fwarn-tabs -funbox-strict-fields -threaded -fno-warn-unused-do-bind xmlhtml-0.2.3.4/test/resources/0000755000000000000000000000000012446622357014535 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/0000755000000000000000000000000012446622357015304 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/ibm_oasis_readme.txt0000644000000000000000000000347112446622357021334 0ustar00000000000000001. Introduction This test suite is contributed by the testing team in the IBM Java Technology Center and used for the conformance test on the XML parsers based on XML 1.0 Specification. 2. Test Suite Structure This XML conformance test suite consists of 149 valid tests, 51 invalid tests, and 746 not-well-formed tests. The configure files "ibm_oasis_valid.xml", "ibm_oasis_invalid.xml", and "ibm_oasis_not-wf.xml" are located in a directory called "ibm". All test cases are in the directory tree starting from "ibm" as shown below: ibm _______________________|_______________________ | | | valid invalid not-wf _______|______ ______|_______ ______|_______ | | | | | | | | | P01 P02 ...... P89 P28 P29 ...... P76 P01 P02 ...... P89 __|__ | | out ibm01v01.xml ...... | ibm01v01.xml 3. File Naming Style The naming for a XML test cases follows the general form ibmXXYZZ.xml where XX is the number of XML production to be tested, Y is the character which indicates the test type (v: valid, i: invalid, n: not-wf), ZZ is the test case order number for the same XML production. For instance, ibm85n98.xml means that it is an IBM not-well-formed test case number 98 for testing XML production 85. 4. Test Coverage The XML test cases are designed based on the test patterns created according to the syntax rules and the WFC/VC constraints specified in each XML 1.0 production. xmlhtml-0.2.3.4/test/resources/ibm/ibm_oasis_valid.xml0000644000000000000000000012163012446622357021155 0ustar0000000000000000 Tests with a xml document consisting of prolog followed by element then Misc Tests Char with 3 characters - 2 boundaries plus 1 in the middle - for each range plus #x20 #x9 #xD #xA Tests all 4 legal white space characters - #x20 #x9 #xD #xA Empty EntityValue is legal Tests a normal EnitityValue Tests EnitityValue referencing a Parameter Entity Tests EnitityValue referencing a General Entity Tests EnitityValue with combination of GE, PE and text, the GE used is declared in the student.dtd Tests empty AttValue with double quotes as the delimiters Tests empty AttValue with single quotes as the delimiters Test AttValue with double quotes as the delimiters and single quote inside Test AttValue with single quotes as the delimiters and double quote inside Test AttValue with a GE reference and double quotes as the delimiters Test AttValue with a GE reference and single quotes as the delimiters testing AttValue with mixed references and text content in double quotes testing AttValue with mixed references and text content in single quotes Tests empty systemliteral using the double quotes Tests empty systemliteral using the single quotes Tests regular systemliteral using the single quotes Tests regular systemliteral using the double quotes Tests empty systemliteral using the double quotes Tests empty systemliteral using the single quotes Tests regular systemliteral using the double quotes Tests regular systemliteral using the single quotes Testing PubidChar with all legal PubidChar in a PubidLiteral Testing CharData with empty string Testing CharData with white space character Testing CharData with a general text string Tests empty comment Tests comment with regular text Tests comment with one dash inside Tests comment with more comprehensive content Tests PI definition with only PItarget name and nothing else Tests PI definition with only PItarget name and a white space Tests PI definition with PItarget name and text that contains question mark and right angle Tests PITarget name Tests CDSect with CDStart CData CDEnd Tests CDStart Tests CDATA with empty string Tests CDATA with regular content Tests CDEnd Tests prolog with XMLDecl and doctypedecl Tests prolog with doctypedecl Tests prolog with Misc doctypedecl Tests prolog with doctypedecl Misc Tests prolog with XMLDecl Misc doctypedecl Tests prolog with XMLDecl doctypedecl Misc Tests prolog with XMLDecl Misc doctypedecl Misc Tests XMLDecl with VersionInfo only Tests XMLDecl with VersionInfo EncodingDecl Tests XMLDecl with VersionInfo SDDecl Tests XMLDecl with VerstionInfo and a trailing whitespace char Tests XMLDecl with VersionInfo EncodingDecl SDDecl Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace Tests VersionInfo with single quote Tests VersionInfo with double quote Tests EQ with = Tests EQ with = and spaces on both sides Tests EQ with = and space in front of it Tests EQ with = and space after it Tests VersionNum 1.0 Tests Misc with comment Tests Misc with PI Tests Misc with white spaces Tests doctypedecl with internal DTD only Tests doctypedecl with external subset and combinations of different markup declarations and PEReferences Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl, NotationDecl, PI and comment Tests WFC: PE in internal subset as a positive test Tests extSubset with extSubsetDecl only in the dtd file Tests extSubset with TextDecl and extSubsetDecl in the dtd file Tests extSubsetDecl with combinations of markupdecls, conditionalSects, PEReferences and white spaces Tests VC: Standalone Document Declaration with absent attribute that has default value and standalone is no Tests VC: Standalone Document Declaration with external entity reference and standalone is no Tests VC: Standalone Document Declaration with attribute values that need to be normalized and standalone is no Tests VC: Standalone Document Declaration with whitespace in mixed content and standalone is no Tests LanguageID with Langcode - Subcode Duplicate Test as ibm33v01.xml Tests ISO639Code Tests IanaCode Tests UserCode Tests SubCode Tests element with EmptyElemTag and STag content Etag, also tests the VC: Element Valid with elements that have children, Mixed and ANY contents Tests STag with possible combinations of its fields, also tests WFC: Unique Att Spec. Tests Attribute with Name Eq AttValue and VC: Attribute Value Type Tests ETag with possible combinations of its fields Tests content with all possible constructs: element, CharData, Reference, CDSect, Comment Tests EmptyElemTag with possible combinations of its fields Tests both P45 elementDecl and P46 contentspec with possible combinations of their constructs Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50 Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested with parenthesized groups in external subsets Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested with parenthesized groups in external subsets Tests Mixed with possible combinations of its fields amd VC: No Duplicate Types Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested with parenthesized groups in external subsets Tests all AttlistDecl and AttDef Patterns in P52 and P53 Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60. Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in P55,P56,P57. Tests AttTypes with StringType in P55. Tests StringType for P55. The "CDATA" occurs in the StringType for the attribute "att" for the element "a". Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY", "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the attribute "attr". Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl. Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl. Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears only once in the document. Tests TokenizedType for P56 VC: One ID per element type. The element "a" or "b" has only one ID attribute. Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the value assigned to an ID attribute "UniqueName". Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches the values assigned to the ID attribute "UniqueName" and "Uname". Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY attribute "sun" matches the name of an unparsed entity declared. Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute "thistoken" matches the Nmtoken production. Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS attribute "thistoken" matches the Nmtoken production. Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b) with the element "a". the Tests NotationType for P58. It shows different patterns fro the NOTATION attribute "attr". Tests NotationType for P58: Notation Attributes. The value "base64" of the NOTATION attribute "attr" matches one of the notation names declared. Tests Enumeration in the EnumeratedType for P59. It shows different patterns for the Enumeration attribute "attr". Tests Enumeration for P59 VC: Enumeration. The value "one" of the Enumeration attribute "attr" matches one of the element names declared. Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED", "#IMPLIED", and default for the attribute "chapter". Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and "two" the value of the #REQUIRED attribute "chapter" is given. Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the #FIXED attribute "chapter" is exactly the same as the default value. Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value specified for the attribute "attr" meets the lexical constraints of the declared attribute type. Tests conditionalSect for P61. It takes the option "invludeSect" in the file ibm61v01.dtd. Tests conditionalSect for P61. It takes the option "ignoreSect" in the file ibm61v02.dtd. Tests includeSect for P62. The white space is not included before the key word "INCLUDE" in the beginning sequence. Tests includeSect for P62. The white space is not included after the key word "INCLUDE" in the beginning sequence. Tests includeSect for P62. The white space is included after the key word "INCLUDE" in the beginning sequence. Tests includeSect for P62. The white space is included before the key word "INCLUDE" in the beginning sequence. Tests includeSect for P62. The extSubsetDecl is not included. Tests ignoreSect for P63. The white space is not included before the key word "IGNORE" in the beginning sequence. Tests ignoreSect for P63. The white space is not included after the key word "IGNORE" in the beginning sequence. Tests ignoreSect for P63. The white space is included after the key word "IGNORE" in the beginning sequence. Tests ignoreSect for P63. The ignireSectContents is included. Tests ignoreSect for P63. The white space is included before and after the key word "IGNORE" in the beginning sequence. Tests ignoreSectContents for P64. One "ignore" field is included. Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents" fields are included. Tests ignoreSectContents for P64. Four "ignore" and three "ignoreSectContents" fields are included. Tests Ignore for P65. An empty string occurs in the Ignore filed. Tests Ignore for P65. An string not including the brackets occurs in each of the Ignore filed. Tests all legal CharRef's. Tests Reference could be EntityRef or CharRef. Tests P68 VC:Entity Declared with Entities in External Subset , standalone is no Tests P68 VC:Entity Declared with Entities in External Parameter Entities , standalone is no Tests P68 VC:Entity Declared with Parameter Entities in External Subset , standalone is no Tests P68 VC:Entity Declared with Parameter Entities in External Parameter Entities, standalone is no Tests all legal GEDecls and PEDecls constructs derived from P70-76 Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80 Tests extPE Tests NotationDecl in P82 and PublicID in P83 This test case covers 149 legal character ranges plus 51 single legal characters for BaseChar in P85 using a PI target Name This test case covers 2 legal character ranges plus 1 single legal characters for IdeoGraphic in P86 using a PI target Name This test case covers 65 legal character ranges plus 30 single legal characters for CombiningChar in P87 using a PI target Name This test case covers 15 legal character ranges for Digit in P88 using a PI target Name This test case covers 3 legal character ranges plus 8 single legal characters for Extender in P89 using a PI target Name xmlhtml-0.2.3.4/test/resources/ibm/ibm_oasis_not-wf.xml0000644000000000000000000060400512446622357021272 0ustar0000000000000000 Tests a document with no element. A well-formed document should have at lease one elements. Tests a document with wrong ordering of its prolog and element. The element occurs before the xml declaration and the DTD. Tests a document with wrong combination of misc and element. One PI occurs between two elements. Tests a comment which contains an illegal Char: #x00 Tests a comment which contains an illegal Char: #x01 Tests a comment which contains an illegal Char: #x02 Tests a comment which contains an illegal Char: #x03 Tests a comment which contains an illegal Char: #x04 Tests a comment which contains an illegal Char: #x05 Tests a comment which contains an illegal Char: #x06 Tests a comment which contains an illegal Char: #x07 Tests a comment which contains an illegal Char: #x08 Tests a comment which contains an illegal Char: #x0B Tests a comment which contains an illegal Char: #x0C Tests a comment which contains an illegal Char: #x0E Tests a comment which contains an illegal Char: #x0F Tests a comment which contains an illegal Char: #x10 Tests a comment which contains an illegal Char: #x11 Tests a comment which contains an illegal Char: #x12 Tests a comment which contains an illegal Char: #x13 Tests a comment which contains an illegal Char: #x14 Tests a comment which contains an illegal Char: #x15 Tests a comment which contains an illegal Char: #x16 Tests a comment which contains an illegal Char: #x17 Tests a comment which contains an illegal Char: #x18 Tests a comment which contains an illegal Char: #x19 Tests a comment which contains an illegal Char: #x1A Tests a comment which contains an illegal Char: #x1B Tests a comment which contains an illegal Char: #x1C Tests a comment which contains an illegal Char: #x1D Tests a comment which contains an illegal Char: #x1E Tests a comment which contains an illegal Char: #x1F Tests a comment which contains an illegal Char: #xD800 Tests a comment which contains an illegal Char: #xDFFF Tests a comment which contains an illegal Char: #xFFFE Tests a comment which contains an illegal Char: #xFFFF Tests an end tag which contains an illegal space character #x3000 which follows the element name "book". Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x21 Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x28 Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x29 Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x2B Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x2C Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x2F Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x3B Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x3C Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x3D Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x3F Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x5B Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x5C Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x5D Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x5E Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x60 Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x7B Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x7C Tests an element name which contains an illegal ASCII NameChar. "IllegalNameChar" is followed by #x7D Tests an element name which has an illegal first character. An illegal first character "." is followed by "A_name-starts_with.". Tests an element name which has an illegal first character. An illegal first character "-" is followed by "A_name-starts_with-". Tests an element name which has an illegal first character. An illegal first character "5" is followed by "A_name-starts_with_digit". Tests an internal general entity with an invalid value. The entity "Fullname" contains "%". Tests an internal general entity with an invalid value. The entity "Fullname" contains the ampersand character. Tests an internal general entity with an invalid value. The entity "Fullname" contains the double quote character in the middle. Tests an internal general entity with an invalid value. The closing bracket (double quote) is missing with the value of the entity "FullName". Tests an attribute with an invalid value. The value of the attribute "first" contains the character "less than". Tests an attribute with an invalid value. The value of the attribute "first" contains the character ampersand. Tests an attribute with an invalid value. The value of the attribute "first" contains the double quote character in the middle. Tests an attribute with an invalid value. The closing bracket (double quote) is missing with The value of the attribute "first". Tests an attribute with an invalid value. The value of the attribute "first" contains the character "less than". Tests an attribute with an invalid value. The value of the attribute "first" contains the character ampersand. Tests an attribute with an invalid value. The value of the attribute "first" contains the double quote character in the middle. Tests an attribute with an invalid value. The closing bracket (single quote) is missing with the value of the attribute "first". Tests SystemLiteral. The systemLiteral for the element "student" has a double quote character in the middle. Tests SystemLiteral. The systemLiteral for the element "student" has a single quote character in the middle. Tests SystemLiteral. The closing bracket (double quote) is missing with the systemLiteral for the element "student". Tests SystemLiteral. The closing bracket (single quote) is missing with the systemLiteral for the element "student". Tests PubidLiteral. The closing bracket (double quote) is missing with the value of the PubidLiteral for the entity "info". Tests PubidLiteral. The value of the PubidLiteral for the entity "info" has a single quote character in the middle.. Tests PubidLiteral. The closing bracket (single quote) is missing with the value of the PubidLiteral for the entity "info". Tests PubidChar. The pubidChar of the PubidLiteral for the entity "info" contains the character "{". Tests PubidChar. The pubidChar of the PubidLiteral for the entity "info" contains the character "~". Tests PubidChar. The pubidChar of the PubidLiteral for the entity "info" contains the character double quote in the middle. Tests CharData. The content of the element "student" contains the character "[[>". Tests CharData. The content of the element "student" contains the character "less than". Tests CharData. The content of the element "student" contains the character ampersand. Tests comment. The text of the second comment contains the character "-". Tests comment. The second comment has a wrong closing sequence "-(greater than)". Tests comment. The second comment has a wrong beginning sequence "(less than)!-". Tests comment. The closing sequence is missing with the second comment. Tests PI. The content of the PI includes the sequence "(less than)?". Tests PI. The PITarget is missing in the PI. Tests PI. The PI has a wrong closing sequence ">". Tests PI. The closing sequence is missing in the PI. Tests PITarget. The PITarget contains the string "XML". Tests PITarget. The PITarget contains the string "xML". Tests PITarget. The PITarget contains the string "xml". Tests PITarget. The PITarget contains the string "xmL". Tests CDSect. The CDStart is missing in the CDSect in the content of element "student". Tests CDSect. The CDEnd is missing in the CDSect in the content of element "student". Tests CDStart. The CDStart contains a lower case string "cdata". Tests CDStart. The CDStart contains an extra character "[". Tests CDStart. The CDStart contains a wrong character "?". Tests CDATA with an illegal sequence. The CDATA contains the string "[[>". Tests CDEnd. One "]" is missing in the CDEnd. Tests CDEnd. An extra "]" is placed in the CDEnd. Tests CDEnd. A wrong character ")" is placed in the CDEnd. Tests prolog with wrong field ordering. The XMLDecl occurs after the DTD. Tests prolog with wrong field ordering. The Misc (comment) occurs before the XMLDecl. Tests prolog with wrong field ordering. The XMLDecl occurs after the DTD and a comment. The other comment occurs before the DTD. Tests XMLDecl with a required field missing. The Versioninfo is missing in the XMLDecl. Tests XMLDecl with wrong field ordering. The VersionInfo occurs after the EncodingDecl. Tests XMLDecl with wrong field ordering. The VersionInfo occurs after the SDDecl and the SDDecl occurs after the VersionInfo. Tests XMLDecl with wrong key word. An upper case string "XML" is used as the key word in the XMLDecl. Tests XMLDecl with a wrong closing sequence ">". Tests XMLDecl with a wrong opening sequence "(less than)!". Tests VersionInfo with a required field missing. The VersionNum is missing in the VersionInfo in the XMLDecl. Tests VersionInfo with a required field missing. The white space is missing between the key word "xml" and the VersionInfo in the XMLDecl. Tests VersionInfo with a required field missing. The "=" (equal sign) is missing between the key word "version" and the VersionNum. Tests VersionInfo with wrong field ordering. The VersionNum occurs before "=" and "version". Tests VersionInfo with wrong field ordering. The "=" occurs after "version" and the VersionNum. Tests VersionInfo with the wrong key word "Version". Tests VersionInfo with the wrong key word "versioN". Tests VersionInfo with mismatched quotes around the VersionNum. version = '1.0" is used as the VersionInfo. Tests VersionInfo with mismatched quotes around the VersionNum. The closing bracket for the VersionNum is missing. Tests eq with a wrong key word "==". Tests eq with a wrong key word "eq". Tests VersionNum with an illegal character "#". Tests type of Misc. An element declaration is used as a type of Misc After the element "animal". Tests doctypedecl with a required field missing. The Name "animal" is missing in the doctypedecl. Tests doctypedecl with wrong field ordering. The Name "animal" occurs after the markup declarations inside the "[]". Tests doctypedecl with wrong field ordering. The Name "animal" occurs after the markup declarations inside the "[]". Tests doctypedecl with general entity reference.The "(ampersand)generalE" occurs in the DTD. Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE" occurs on line 2. Tests doctypedecl with mismatched brackets. The closing bracket "]" of the DTD is missing. Tests doctypedecl with wrong bracket. The opening bracket "}" occurs in the DTD. Tests doctypedecl with wrong opening sequence. The opening sequence "(less than)?DOCTYPE" occurs in the DTD. Tests markupdecl with an illegal markup declaration. A XMLDecl occurs inside the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside an elementdecl in the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside an ATTlistDecl in the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside an EntityDecl in the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment in the DTD. Tests WFC "PEs in Internal Subset". A PE reference occurs inside a NotationDecl in the DTD. Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd", the TextDecl occurs after the extSubsetDecl (the element declaration). Tests extSubsetDecl with an illegal field. A general entity reference occurs in file "ibm31n01.dtd". Tests SDDecl with a required field missing. The leading white space is missing with the SDDecl in the XMLDecl. Tests SDDecl with a required field missing. The "=" sign is missing in the SDDecl in the XMLDecl. Tests SDDecl with wrong key word. The word "Standalone" occurs in the SDDecl in the XMLDecl. Tests SDDecl with wrong key word. The word "Yes" occurs in the SDDecl in the XMLDecl. Tests SDDecl with wrong key word. The word "YES" occurs in the SDDecl in the XMLDecl. Tests SDDecl with wrong key word. The word "No" occurs in the SDDecl in the XMLDecl. Tests SDDecl with wrong key word. The word "NO" occurs in the SDDecl in the XMLDecl. Tests SDDecl with wrong field ordering. The "=" sign occurs after the key word "yes" in the SDDecl in the XMLDecl. Tests element with a required field missing. The ETag is missing for the element "root". Tests element with a required field missing. The STag is missing for the element "root". Tests element with required fields missing. Both the content and the ETag are missing in the element "root". Tests element with required fields missing. Both the content and the STag are missing in the element "root". Tests element with wrong field ordering. The STag and the ETag are swapped in the element "root". Tests element with wrong field ordering. The content occurs after the ETag of the element "root". Tests STag with a required field missing. The Name "root" is in the STag of the element "root". Tests STag with a required field missing. The white space between the Name "root" and the attribute "attr1" is missing in the STag of the element "root". Tests STag with wrong field ordering. The Name "root" occurs after the attribute "attr1" in the STag of the element "root". Tests STag with a wrong opening sequence. The string "(less than)!" is used as the opening sequence for the STag of the element "root". Tests STag with duplicate attribute names. The attribute name "attr1" occurs twice in the STag of the element "root". Tests Attribute with a required field missing. The attribute name is missing in the Attribute in the STag of the element "root". Tests Attribute with a required field missing. The "=" is missing between the attribute name and the attribute value in the Attribute in the STag of the element "root". Tests Attribute with a required field missing. The AttValue is missing in the Attribute in the STag of the element "root". Tests Attribute with a required field missing. The Name and the "=" are missing in the Attribute in the STag of the element "root". Tests Attribute with a required field missing. The "=" and the AttValue are missing in the Attribute in the STag of the element "root". Tests Attribute with a required field missing. The Name and the AttValue are missing in the Attribute in the STag of the element "root". Tests Attribute with wrong field ordering. The "=" occurs after the Name and the AttValue in the Attribute in the STag of the element "root". Tests Attribute with wrong field ordering. The Name and the AttValue are swapped in the Attribute in the STag of the element "root". Tests Attribute with wrong field ordering. The "=" occurs before the Name and the AttValue in the Attribute in the STag of the element "root". Tests Attribute against WFC "no external entity references". A direct references to the external entity "aExternal" is contained in the value of the attribute "attr1". Tests Attribute against WFC "no external entity references". A indirect references to the external entity "aExternal" is contained in the value of the attribute "attr1". Tests Attribute against WFC "no external entity references". A direct references to the external unparsed entity "aImage" is contained in the value of the attribute "attr1". Tests Attribute against WFC "No (less that) character in Attribute Values". The character "less than" is contained in the value of the attribute "attr1". Tests Attribute against WFC "No (less than) in Attribute Values". The character "less than" is contained in the value of the attribute "attr1" through indirect internal entity reference. Tests ETag with a required field missing. The Name is missing in the ETag of the element "root". Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as a beginning sequence of the ETag of the element "root". Tests ETag with a wrong beginning sequence. The string "less than" is used as a beginning sequence of the ETag of the element "root". Tests ETag with a wrong structure. An white space occurs between The beginning sequence and the Name of the ETag of the element "root". Tests ETag with a wrong structure. The ETag of the element "root" contains an Attribute (attr1="any"). Tests element content with a wrong option. A NotationDecl is used as the content of the element "root". Tests element content with a wrong option. A elementdecl is used as the content of the element "root". Tests element content with a wrong option. An elementdecl is used as the content of the element "root". Tests element content with a wrong option. An AttlistDecl is used as the content of the element "root". Tests EmptyElemTag with a required field missing. The Name "root" is missing in the EmptyElemTag. Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 = "any") occurs before the name of the element "root" in the EmptyElemTag. Tests EmptyElemTag with wrong closing sequence. The string "\>" is used as the closing sequence in the EmptyElemtag of the element "root". Tests EmptyElemTag which against the WFC "Unique Att Spec". The attribute name "attr1" occurs twice in the EmptyElemTag of the element "root". Tests elementdecl with a required field missing. The Name is missing in the second elementdecl in the DTD. Tests elementdecl with a required field missing. The white space is missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD. Tests elementdecl with a required field missing. The contentspec is missing in the second elementdecl in the DTD. Tests elementdecl with a required field missing. The contentspec and the white space is missing in the second elementdecl in the DTD. Tests elementdecl with a required field missing. The Name, the white space, and the contentspec are missing in the second elementdecl in the DTD. Tests elementdecl with wrong field ordering. The Name occurs after the contentspec in the second elementdecl in the DTD. Tests elementdecl with wrong beginning sequence. The string "(less than)ELEMENT" is used as the beginning sequence in the second elementdecl in the DTD. Tests elementdecl with wrong key word. The string "Element" is used as the key word in the second elementdecl in the DTD. Tests elementdecl with wrong key word. The string "element" is used as the key word in the second elementdecl in the DTD. Tests contentspec with wrong key word. the string "empty" is used as the key word in the contentspec of the second elementdecl in the DTD. Tests contentspec with wrong key word. the string "Empty" is used as the key word in the contentspec of the second elementdecl in the DTD. Tests contentspec with wrong key word. the string "Any" is used as the key word in the contentspec of the second elementdecl in the DTD. Tests contentspec with wrong key word. the string "any" is used as the key word in the contentspec of the second elementdecl in the DTD. Tests contentspec with a wrong option. The string "#CDATA" is used as the contentspec in the second elementdecl in the DTD. Tests children with a required field missing. The "+" is used as the choice or seq field in the second elementdecl in the DTD. Tests children with a required field missing. The "*" is used as the choice or seq field in the second elementdecl in the DTD. Tests children with a required field missing. The "?" is used as the choice or seq field in the second elementdecl in the DTD. Tests children with wrong field ordering. The "*" occurs before the seq field (a,a) in the second elementdecl in the DTD. Tests children with wrong field ordering. The "+" occurs before the choice field (a|a) in the second elementdecl in the DTD. Tests children with wrong key word. The "^" occurs after the seq field in the second elementdecl in the DTD. Tests cp with a required fields missing. The field Name|choice|seq is missing in the second cp in the choice field in the third elementdecl in the DTD. Tests cp with a required fields missing. The field Name|choice|seq is missing in the cp in the third elementdecl in the DTD. Tests cp with a required fields missing. The field Name|choice|seq is missing in the first cp in the choice field in the third elementdecl in the DTD. Tests cp with wrong field ordering. The "+" occurs before the seq (a,a) in the first cp in the choice field in the third elementdecl in the DTD. Tests cp with wrong field ordering. The "*" occurs before the choice (a|b) in the first cp in the seq field in the third elementdecl in the DTD. Tests cp with wrong field ordering. The "?" occurs before the Name "a" in the second cp in the seq field in the third elementdecl in the DTD. Tests cp with wrong key word. The "^" occurs after the Name "a" in the first cp in the choice field in the third elementdecl in the DTD. Tests choice with a required field missing. The two cps are missing in the choice field in the third elementdecl in the DTD. Tests choice with a required field missing. The third cp is missing in the choice field in the fourth elementdecl in the DTD. Tests choice with a wrong separator. The "!" is used as the separator in the choice field in the fourth elementdecl in the DTD. Tests choice with a required field missing. The separator "|" is missing in the choice field (a b)+ in the fourth elementdecl in the DTD. Tests choice with an extra separator. An extra "|" occurs between a and b in the choice field in the fourth elementdecl in the DTD. Tests choice with a required field missing. The closing bracket ")" is missing in the choice field (a |b * in the fourth elementdecl in the DTD. Tests seq with a required field missing. The two cps are missing in the seq field in the fourth elementdecl in the DTD. Tests seq with a required field missing. The third cp is missing in the seq field in the fourth elementdecl in the DTD. Tests seq with a wrong separator. The "|" is used as the separator between a and b in the seq field in the fourth elementdecl in the DTD. Tests seq with a wrong separator. The "." is used as the separator between a and b in the seq field in the fourth elementdecl in the DTD. Tests seq with an extra separator. An extra "," occurs between (a|b) and a in the seq field in the fourth elementdecl in the DTD. Tests seq with a required field missing. The separator between (a|b) and (b|a) is missing in the seq field in the fourth elementdecl in the DTD. Tests seq with wrong closing bracket. The "]" is used as the closing bracket in the seq field in the fourth elementdecl in the DTD. Tests Mixed with a wrong key word. The string "#pcdata" is used as the key word in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with wrong field ordering. The field #PCDATA does not occur as the first component in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with a separator missing. The separator "|" is missing in between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with a wrong key word. The string "#CDATA" is used as the key word in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with a required field missing. The "*" is missing after the ")" in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with wrong closing bracket. The "]" is used as the closing bracket in the Mixed field in the fourth elementdecl in the DTD. Tests Mixed with a required field missing. The closing bracket ")" is missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD. Tests AttlistDecl with a required field missing. The Name is missing in the AttlistDecl in the DTD. Tests AttlistDecl with a required field missing. The white space is missing between the beginning sequence and the name in the AttlistDecl in the DTD. Tests AttlistDecl with wrong field ordering. The Name "a" occurs after the first AttDef in the AttlistDecl in the DTD. Tests AttlistDecl with wrong key word. The string "Attlist" is used as the key word in the beginning sequence in the AttlistDecl in the DTD. Tests AttlistDecl with a required field missing. The closing bracket "greater than" is missing in the AttlistDecl in the DTD. Tests AttlistDecl with wrong beginning sequence. The string "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The DefaultDecl is missing in the AttDef for the name "attr1" in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The white space is missing between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The AttType is missing for "attr1" in the AttDef in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The white space is missing between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The Name is missing in the AttDef in the AttlistDecl in the DTD. Tests AttDef with a required field missing. The white space before the name "attr2" is missing in the AttDef in the AttlistDecl in the DTD. Tests AttDef with wrong field ordering. The Name "attr1" occurs after the AttType in the AttDef in the AttlistDecl in the DTD. Tests AttDef with wrong field ordering. The Name "attr1" occurs after the AttType and "default" occurs before the AttType in the AttDef in the AttlistDecl in the DTD. Tests AttType with a wrong option. The string "BOGUSATTR" is used as the AttType in the AttlistDecl in the DTD. Tests AttType with a wrong option. The string "PCDATA" is used as the AttType in the AttlistDecl in the DTD. Tests StringType with a wrong key word. The lower case string "cdata" is used as the StringType in the AttType in the AttlistDecl in the DTD. Tests StringType with a wrong key word. The string "#CDATA" is used as the StringType in the AttType in the AttlistDecl in the DTD. Tests StringType with a wrong key word. The string "CData" is used as the StringType in the AttType in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "id" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "Idref" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "Idrefs" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "EntitY" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "nmTOKEN" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "NMtokens" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests TokenizedType with wrong key word. The "#ID" is used in the TokenizedType in the AttDef in the AttlistDecl in the DTD. Tests EnumeratedType with an illegal option. The "NMTOKEN (a|b)" is used in the EnumeratedType in the AttlistDecl in the DTD. Tests NotationType with wrong key word. The lower case "notation" is used as the key word in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with a required field missing. The beginning bracket "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with a required field missing. The Name is missing in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with a required field missing. The closing bracket is missing in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with wrong field ordering. The key word "NOTATION" occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with wrong separator. The "," is used as a separator between "this" and "that" in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with a required field missing. The white space is missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests NotationType with extra wrong characters. The double quote character occurs after "(" and before ")" in the NotationType in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with required fields missing. The Nmtokens and "|"s are missing in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with a required field missing. The closing bracket ")" is missing in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with wrong separator. The "," is used as the separator in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with illegal presence. The double quotes occur around the Enumeration value in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with a required field missing. The white space is missing between in the AttDef in the AttlistDecl in the DTD. Tests Enumeration with a required field missing. The beginning bracket "(" is missing in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with wrong key word. The string "#required" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with wrong key word. The string "Implied" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with wrong key word. The string "!IMPLIED" is used as the key word in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with a required field missing. There is no attribute value specified after the key word "#FIXED" in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with a required field missing. The white space is missing between the key word "#FIXED" and the attribute value in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with wrong field ordering. The key word "#FIXED" occurs after the attribute value "introduction" in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl against WFC of P60. The text replacement of the entity "avalue" contains the "less than" character in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests DefaultDecl with more than one key word. The "#REQUIRED" and the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef in the AttlistDecl in the DTD. Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is used as part of an option which is wrong in the coditionalSect. Tests includeSect with wrong key word. The string "include" is used as a key word in the beginning sequence in the includeSect in the file ibm62n01.dtd. Tests includeSect with wrong beginning sequence. An extra "[" occurs in the beginning sequence in the includeSect in the file ibm62n02.dtd. Tests includeSect with wrong beginning sequence. A wrong character "?" occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd. Tests includeSect with a required field missing. The key word "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd. Tests includeSect with a required field missing. The "]" is missing after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd. Tests includeSect with wrong field ordering. The two external subset declarations occur before the key word "INCLUDE" in the includeSect in the file ibm62n06.dtd. Tests includeSect with a required field missing. The closing sequence "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd. Tests includeSect with a required field missing. One "]" is missing in the closing sequence in the includeSect in the file ibm62n08.dtd. Tests ignoreSect with wrong key word. The string "ignore" is used as a key word in the beginning sequence in the ignoreSect in the file ibm63n01.dtd. Tests ignoreSect with wrong beginning sequence. An extra "[" occurs in the beginning sequence in the ignoreSect in the file ibm63n02.dtd. Tests ignoreSect with wrong beginning sequence. A wrong character "?" occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd. Tests ignoreSect with a required field missing. The key word "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd. Tests ignoreSect with a required field missing. The "]" is missing after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd. Tests includeSect with wrong field ordering. The two external subset declarations occur before the key word "IGNORE" in the ignoreSect in the file ibm63n06.dtd. Tests ignoreSect with a required field missing. The closing sequence "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd. Tests ignoreSectContents with wrong beginning sequence. The "?" occurs in beginning sequence the ignoreSectContents in the file ibm64n01.dtd. Tests ignoreSectContents with a required field missing.The closing sequence is missing in the ignoreSectContents in the file ibm64n02.dtd. Tests ignoreSectContents with a required field missing.The beginning sequence is missing in the ignoreSectContents in the file ibm64n03.dtd. Tests Ignore with illegal string included. The string "]](greater than)" is contained before "this" in the Ignore in the ignoreSectContents in the file ibm65n01.dtd Tests Ignore with illegal string included. The string "(less than)![" is contained before "this" in the Ignore in the ignoreSectContents in the file ibm65n02.dtd Tests CharRef with an illegal character referred to. The "#002f" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with the semicolon character missing. The semicolon character is missing at the end of the CharRef in the attribute value in the STag of element "root". Tests CharRef with an illegal character referred to. The "49" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with an illegal character referred to. The "#5~0" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#x002g" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with an illegal character referred to. The "#x006G" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#0=2f" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with an illegal character referred to. The "#56.0" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#x00/2f" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with an illegal character referred to. The "#51)" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#00 2f" is used as the referred character in the CharRef in the EntityDecl in the DTD. Tests CharRef with an illegal character referred to. The "#x0000" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#x001f" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#xfffe" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests CharRef with an illegal character referred to. The "#xffff" is used as the referred character in the attribute value in the EmptyElemTag of the element "root". Tests EntityRef with a required field missing. The Name is missing in the EntityRef in the content of the element "root". Tests EntityRef with a required field missing. The semicolon is missing in the EntityRef in the attribute value in the element "root". Tests EntityRef with an extra white space. A white space occurs after the ampersand in the EntityRef in the content of the element "root". Tests EntityRef which is against P68 WFC: Entity Declared. The name "aAa" in the EntityRef in the AttValue in the STage of the element "root" does not match the Name of any declared entity in the DTD. Tests EntityRef which is against P68 WFC: Entity Declared. The entity with the name "aaa" in the EntityRef in the AttValue in the STag of the element "root" is not declared. Tests EntityRef which is against P68 WFC: Entity Declared. The entity with the name "aaa" in the EntityRef in the AttValue in the STag of the element "root" is externally declared, but standalone is "yes". Tests EntityRef which is against P68 WFC: Entity Declared. The entity with the name "aaa" in the EntityRef in the AttValue in the STag of the element "root" is referred before declared. Tests EntityRef which is against P68 WFC: Parsed Entity. The EntityRef in the AttValue in the STag of the element "root" contains the name "aImage" of an unparsed entity. Tests EntityRef which is against P68 WFC: No Recursion. The recursive entity reference occurs with the entity declarations for "aaa" and "bbb" in the DTD. Tests EntityRef which is against P68 WFC: No Recursion. The indirect recursive entity reference occurs with the entity declarations for "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD. Tests PEReference with a required field missing. The Name "paaa" is missing in the PEReference in the DTD. Tests PEReference with a required field missing. The semicolon is missing in the PEReference "%paaa" in the DTD. Tests PEReference with an extra white space. There is an extra white space occurs before ";" in the PEReference in the DTD. Tests PEReference with an extra white space. There is an extra white space occurs after "%" in the PEReference in the DTD. Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared still apply. Tests PEReference which is against P69 WFC: Entity Declared. The PE with the name "paaa" is referred before declared in the DTD. Tests PEReference which is against P69 WFC: No Recursion. The recursive PE reference occurs with the entity declarations for "paaa" and "bbb" in the DTD. Tests PEReference which is against P69 WFC: No Recursion. The indirect recursive PE reference occurs with the entity declarations for "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD. Tests Tests EntityDecl with a required field missing. The white space is missing between the beginning sequence and the Name "aaa" in the EntityDecl in the DTD. Tests EntityDecl with a required field missing. The white space is missing between the Name "aaa" and the EntityDef "aString" in the EntityDecl in the DTD. Tests EntityDecl with a required field missing. The EntityDef is missing in the EntityDecl with the Name "aaa" in the DTD. Tests EntityDecl with a required field missing. The Name is missing in the EntityDecl with the EntityDef "aString" in the DTD. Tests EntityDecl with wrong ordering. The Name "aaa" occurs after the EntityDef in the EntityDecl in the DTD. Tests EntityDecl with wrong key word. The string "entity" is used as the key word in the beginning sequence in the EntityDecl in the DTD. Tests EntityDecl with a required field missing. The closing bracket (greater than) is missing in the EntityDecl in the DTD. Tests EntityDecl with a required field missing. The exclamation mark is missing in the beginning sequence in the EntityDecl in the DTD. Tests PEdecl with a required field missing. The white space is missing between the beginning sequence and the "%" in the PEDecl in the DTD. Tests PEdecl with a required field missing. The Name is missing in the PEDecl in the DTD. Tests PEdecl with a required field missing. The white space is missing between the Name and the PEDef in the PEDecl in the DTD. Tests PEdecl with a required field missing. The PEDef is missing after the Name "paaa" in the PEDecl in the DTD. Tests PEdecl with wrong field ordering. The Name "paaa" occurs after the PEDef in the PEDecl in the DTD. Tests PEdecl with wrong field ordering. The "%" and the Name "paaa" occurs after the PEDef in the PEDecl in the DTD. Tests PEdecl with wrong key word. The string "entity" is used as the key word in the beginning sequence in the PEDecl in the DTD. Tests PEdecl with a required field missing. The closing bracket (greater than) is missing in the PEDecl in the DTD. Tests PEdecl with wrong closing sequence. The string "!(greater than)" is used as the closing sequence in the PEDecl in the DTD. Tests EntityDef with wrong field ordering. The NDataDecl "NDATA JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl. Tests EntityDef with a required field missing. The ExternalID is missing before the NDataDecl in the EntityDef in the EntityDecl. Tests PEDef with extra fields. The NDataDecl occurs after the ExternalID in the PEDef in the PEDecl in the DTD. Tests ExternalID with wrong key word. The string "system" is used as the key word in the ExternalID in the EntityDef in the EntityDecl. Tests ExternalID with wrong key word. The string "public" is used as the key word in the ExternalID in the doctypedecl. Tests ExternalID with wrong key word. The string "Public" is used as the key word in the ExternalID in the doctypedecl. Tests ExternalID with wrong field ordering. The key word "PUBLIC" occurs after the PublicLiteral and the SystemLiteral in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The white space between "SYSTEM" and the Systemliteral is missing in the ExternalID in the EntityDef in the EntityDecl in the DTD. Tests ExternalID with a required field missing. The Systemliteral is missing after "SYSTEM" in the ExternalID in the EntityDef in the EntityDecl in the DTD. Tests ExternalID with a required field missing. The white space between the PublicLiteral and the Systemliteral is missing in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The key word "PUBLIC" is missing in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The white space between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The PublicLiteral is missing in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The PublicLiteral is missing in the ExternalID in the doctypedecl. Tests ExternalID with a required field missing. The SystemLiteral is missing in the ExternalID in the doctypedecl. Tests ExternalID with wrong field ordering. The key word "PUBLIC" occurs after the PublicLiteral in the ExternalID in the doctypedecl. Tests NDataDecl with wrong key word. The string "ndata" is used as the key word in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with wrong key word. The string "NData" is used as the key word in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with a required field missing. The leading white space is missing in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with a required field missing. The key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with a required field missing. The Name after the key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with a required field missing. The white space between "NDATA" and the Name is missing in the NDataDecl in the EntityDef in the GEDecl. Tests NDataDecl with wrong field ordering. The key word "NDATA" occurs after the Name in the NDataDecl in the EntityDef in the GEDecl. Tests TextDecl with wrong field ordering. The VersionInfo occurs after the EncodingDecl in the TextDecl in the file "ibm77n01.ent". Tests TextDecl with wrong key word. The string "XML" is used in the beginning sequence in the TextDecl in the file "ibm77n02.ent". Tests TextDecl with wrong closing sequence. The character "greater than" is used as the closing sequence in the TextDecl in the file "ibm77n03.ent". Tests TextDecl with a required field missing. The closing sequence is missing in the TextDecl in the file "ibm77n04.ent". Tests extParsedEnt with wrong field ordering. The TextDecl occurs after the content in the file ibm78n01.ent. Tests extParsedEnt with extra field. A blank line occurs before the TextDecl in the file ibm78n02.ent. Tests extPE with wrong field ordering. The TextDecl occurs after the extSubsetDecl (the white space and the comment) in the file ibm79n01.ent. Tests extPE with extra field. A blank line occurs before the TextDecl in the file ibm78n02.ent. Tests EncodingDecl with a required field missing. The leading white space is missing in the EncodingDecl in the XMLDecl. Tests EncodingDecl with a required field missing. The "=" sign is missing in the EncodingDecl in the XMLDecl. Tests EncodingDecl with a required field missing. The double quoted EncName are missing in the EncodingDecl in the XMLDecl. Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl. Tests EncodingDecl with wrong field ordering. The "encoding" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl. Tests EncodingDecl with wrong key word. The string "Encoding" is used as the key word in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "_" is used as the first character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "-" is used as the first character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "." is used as the first character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with illegal characters. The "8-" is used as the initial characters in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "~" is used as one character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "#" is used as one character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The ":" is used as one character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The "/" is used as one character in the EncName in the EncodingDecl in the XMLDecl. Tests EncName with an illegal character. The ";" is used as one character in the EncName in the EncodingDecl in the XMLDecl. Tests NotationDecl with a required field missing. The white space after the beginning sequence of the NotationDecl is missing in the DTD. Tests NotationDecl with a required field missing. The Name in the NotationDecl is missing in the DTD. Tests NotationDecl with a required field missing. The externalID or the PublicID is missing in the NotationDecl in the DTD. Tests NotationDecl with wrong field ordering. The Name occurs after the "SYSTEM" and the externalID in the NotationDecl in the DTD. Tests NotationDecl with wrong key word. The string "notation" is used as a key word in the NotationDecl in the DTD. Tests NotationDecl with a required field missing. The closing bracket (the greater than character) is missing in the NotationDecl. Tests NotationDecl with wrong beginning sequence. The "!" is missing in the beginning sequence in the NotationDecl in the DTD. Tests NotationDecl with wrong closing sequence. The extra "!" occurs in the closing sequence in the NotationDecl in the DTD. Tests PublicID with wrong key word. The string "public" is used as the key word in the PublicID in the NotationDcl in the DTD. Tests PublicID with wrong key word. The string "Public" is used as the key word in the PublicID in the NotationDcl in the DTD. Tests PublicID with a required field missing. The key word "PUBLIC" is missing in the PublicID in the NotationDcl in the DTD. Tests PublicID with a required field missing. The white space between the "PUBLIC" and the PubidLiteral is missing in the PublicID in the NotationDcl in the DTD. Tests PublicID with a required field missing. The PubidLiteral is missing in the PublicID in the NotationDcl in the DTD. Tests PublicID with wrong field ordering. The key word "PUBLIC" occurs after the PubidLiteral in the PublicID in the NotationDcl. Tests BaseChar with an illegal character. The character #x00D7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x00F7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0132 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0133 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x013F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0140 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0149 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x017F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01c4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01CC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0BB6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0BBA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C0D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C11 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C29 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C34 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C5F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C62 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C8D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0C91 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01F1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0CA9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0CB4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0CBA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0CDF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0CE2 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0D0D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0D11 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0D29 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0D3A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0D62 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01F3 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E2F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E31 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E34 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E46 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E83 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E85 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E89 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E8B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E8E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0E98 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01F6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EA0 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EA4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EA6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EA8 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EAC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EAF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EB1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EB4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EBE occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0EC5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01F9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0F48 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0F6A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x10C6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x10F7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1011 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1104 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1108 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x110A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x110D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x113B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x01F9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x113F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1141 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x114D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x114f occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1151 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1156 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x115A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1162 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1164 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1166 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0230 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x116B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x116F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1174 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x119F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11AC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11B6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11B9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11BB occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11C3 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11F1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x02AF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x11FA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1E9C occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1EFA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F16 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F1E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F46 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F4F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F58 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F5A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F5C occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x02CF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1F5E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #xF17E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FB5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FBD occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FBF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FC5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FCD occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FD5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FDC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FED occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0387 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FF5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x1FFD occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x2127 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x212F occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x2183 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x3095 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x30FB occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x312D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #xD7A4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x038B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03A2 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03CF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03D7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03DD occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03E1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x03F4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x040D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0450 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x045D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0482 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04C5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04C6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04C9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04EC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04ED occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04F6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x04FA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0557 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0558 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0587 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x05EB occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x05F3 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0620 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x063B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x064B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06B8 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06BF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06CF occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06D4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06D6 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x06E7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x093A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x093E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0962 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x098D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0991 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0992 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09A9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09B1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09B5 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09BA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09DE occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09E2 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x09F2 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A0B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A11 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A29 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A31 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A34 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A37 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A3A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A5B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A70 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A75 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0ABC occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0A92 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0AA9 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0AB1 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0AB4 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0ABA occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B04 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B0D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B11 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B29 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B31 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B34 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B3A occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B3E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B5E occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B62 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B8B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B91 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B98 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B9B occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0B9D occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0BA0 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0BA7 occurs as the first character of the PITarget in the PI in the DTD. Tests BaseChar with an illegal character. The character #x0BAB occurs as the first character of the PITarget in the PI in the DTD. Tests Ideographic with an illegal character. The character #x4CFF occurs as the first character in the PITarget in the PI in the DTD. Tests Ideographic with an illegal character. The character #x9FA6 occurs as the first character in the PITarget in the PI in the DTD. Tests Ideographic with an illegal character. The character #x3008 occurs as the first character in the PITarget in the PI in the DTD. Tests Ideographic with an illegal character. The character #x302A occurs as the first character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x02FF occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0346 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0362 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0487 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x05A2 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x05BA occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x05BE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x05C0 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x05C3 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0653 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x06B8 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x06B9 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x06E9 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x06EE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0904 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x093B occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x094E occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0955 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0964 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0984 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x09C5 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x09C9 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x09CE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x09D8 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x09E4 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A03 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A3D occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A46 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A49 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A4E occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A80 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0A84 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0ABB occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0AC6 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0ACA occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0ACE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B04 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B3B occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B44 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B4A occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B4E occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B58 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0B84 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0BC3 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0BC9 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0BD6 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C0D occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C45 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C49 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C54 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C81 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0C84 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0CC5 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0CC9 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0CD4 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0CD7 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0D04 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0D45 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0D49 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0D4E occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0D58 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0E3F occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0E3B occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0E4F occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0EBA occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0EBE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0ECE occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F1A occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F36 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F38 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F3B occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F3A occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F70 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F85 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F8C occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F96 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0F98 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0FB0 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0FB8 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x0FBA occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x20DD occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x20E2 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x3030 occurs as the second character in the PITarget in the PI in the DTD. Tests CombiningChar with an illegal character. The character #x309B occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0029 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x003B occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x066A occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x06FA occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0970 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x09F2 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0AF0 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0B70 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0C65 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0CE5 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0CF0 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0D70 occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0E5A occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0EDA occurs as the second character in the PITarget in the PI in the DTD. Tests Digit with an illegal character. The character #x0F2A occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x00B6 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x00B8 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x02D2 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x03FE occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x065F occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x0EC7 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x3006 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x3030 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x3036 occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x309C occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x309F occurs as the second character in the PITarget in the PI in the DTD. Tests Extender with an illegal character. The character #x30FF occurs as the second character in the PITarget in the PI in the DTD. xmlhtml-0.2.3.4/test/resources/ibm/ibm_oasis_invalid.xml0000644000000000000000000004631412446622357021511 0ustar0000000000000000 The test violates VC:Root Element Type in P28. The Name in the document type declaration does not match the element type of the root element. This test violates VC: Proper Declaration/PE Nesting in P29. The last character of a markup declaration is not contained in the same parameter-entity text replacement. This test violates VC: Standalone Document Declaration in P32. The standalone document declaration has the value yes, BUT there is an external markup declaration of attributes with default values, and the associated element appears in the document with specified values for those attributes. This test violates VC: Standalone Document Declaration in P32. The standalone document declaration has the value yes, BUT there is an external markup declaration of an entity (other than amp, lt, gt, apos, quot), and references to this entity appear in the document. This test violates VC: Standalone Document Declaration in P32. The standalone document declaration has the value yes, BUT there is an external markup declaration of attributes with values that will change if normalized. This test violates VC: Standalone Document Declaration in P32. The standalone document declaration has the value yes, BUT there is an external markup declaration of element with element content, and white space occurs directly within the mixed content. This test violates VC: Element Valid in P39. Element a is declared empty in DTD, but has content in the document. This test violates VC: Element Valid in P39. root is declared only having element children in DTD, but have text content in the document. This test violates VC: Element Valid in P39. Illegal elements are inserted in b's content of Mixed type. This test violates VC: Element Valid in P39. Element c has undeclared element as its content of ANY type This test violates VC: Attribute Value Type in P41. attr1 for Element b is not declared. This test violates VC: Attribute Value Type in P41. attr3 for Element b is given a value that does not match the declaration in the DTD. This test violates VC: Unique Element Type Declaration. Element not_unique has been declared 3 time in the DTD. Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a choice content model are in different PE replace Texts. Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a seq content model are in different PE replace Texts. Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a Mixed content model are in different PE replace Texts. Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed content model of Element e. Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID attribute "UniqueName" is "@999" which does not meet the Name production. Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes "attr" and "UniqueName" have the same value "Ac999" for the element "b" and the element "tokenizer". Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName". Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The constant string "BOGUS" occurs in the DefaultDecl for the ID attribute "UniqueName". Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The element "a" has two ID attributes "first" and "second". Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF attribute "reference" is "@456" which does not meet the Name production. Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF attribute "reference" is "BC456" which does not match the value assigned to any ID attributes. Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the IDREFS attribute "reference" is "AC456 #567" which does not meet the Names production. Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the IDREFS attribute "reference" is "EF456 DE355" which does not match the values assigned to two ID attributes. Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of the ENTITY attribute "sun" is "ima ge" which does not meet the Name production. Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of the ENTITY attribute "sun" is "notimage" which does not match the name of any unparsed entity declared. Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed entity instead of an unparsed entity declared. Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names production. Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the ENTITIES attribute "sun" is "image3 image4" which does not match the names of two unparsed entities declared. Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names of two parsed entities instead of two unparsed entities declared. Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken production. Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the Nmtokens production. Tests invalid NotationType which is against P58 VC: Notation Attributes. The attribute "content-encoding" with value "raw" is not a value from the list "(base64|uuencode)". Tests invalid NotationType which is against P58 VC: Notation Attributes. The attribute "content-encoding" with value "raw" is a value from the list "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation. Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the attribute is "ONE" which matches neither "one" nor "two" as declared in the Enumeration in the AttDef in the AttlistDecl. Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The attribute "chapter" for the element "two" is declared as #REQUIRED in the DefaultDecl in the AttlistDecl, but the value of this attribute is not given. Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The attribute "chapter" for the element "one" is declared as #FIXED with the given value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a instance of this attribute is assigned to "JavaBeans". Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The declared default value "c" is not legal for the type (a|b) in the AttDef in the AttlistDecl. Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The declared default value "@#$" is not legal for the type NMTOKEN the AttDef in the AttlistDecl. Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with the name "ge2" is referred in the file ibm68i01.dtd", but not declared. Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with the name "ge1" is referred before declared in the file ibm68i01.dtd". Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with the name "ge2" is referred in the file ibm68i03.ent", but not declared. Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with the name "ge1" is referred before declared in the file ibm68i04.ent". Tests invalid PEReference which is against P69 VC: Entity Declared. The Name "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of any declared PE. Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with the name "pe1" is referred before declared in the file ibm69i02.dtd Tests invalid PEReference which is against P69 VC: Entity Declared. The Name "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of any declared PE. Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with the name "pe2" is referred before declared in the file ibm69i04.ent. Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the Name of any declared notation. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/0000755000000000000000000000000012446622357016516 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P19/0000755000000000000000000000000012446622357017067 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P19/ibm19n01.xml0000644000000000000000000000026712446622357021056 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P19/ibm19n02.xml0000644000000000000000000000027612446622357021057 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P19/ibm19n03.xml0000644000000000000000000000026712446622357021060 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/0000755000000000000000000000000012446622357017056 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/ibm01n03.xml0000644000000000000000000000033112446622357021026 0ustar0000000000000000 ]> Wrong combination! Wrong combination! xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/ibm01n03.xml.correct0000644000000000000000000000007112446622357022467 0ustar0000000000000000We don't enforce single root node, so this should pass. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/ibm01n01.xml.correct0000644000000000000000000000007112446622357022465 0ustar0000000000000000We don't enforce single root node, so this should pass. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/ibm01n02.xml0000644000000000000000000000017012446622357021026 0ustar0000000000000000Wrong ordering between prolog and element! ]>xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P01/ibm01n01.xml0000644000000000000000000000014012446622357021022 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P31/0000755000000000000000000000000012446622357017061 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P31/ibm31n01.xml0000644000000000000000000000014612446622357021036 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P31/ibm31n01.xml.correct0000644000000000000000000000004612446622357022475 0ustar0000000000000000Correct because we don't parse DTDs. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P31/ibm31n01.dtd0000644000000000000000000000024712446622357021013 0ustar0000000000000000 &generalE; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/0000755000000000000000000000000012446622357017071 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n12.xml0000644000000000000000000000022412446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n06.xml.html.correct0000644000000000000000000000007612446622357023470 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n04.xml0000644000000000000000000000020412446622357021054 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n09.xml0000644000000000000000000000022112446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n14.xml0000644000000000000000000000021312446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n03.xml0000644000000000000000000000021412446622357021054 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n08.xml.html.correct0000644000000000000000000000007612446622357023472 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n06.xml0000644000000000000000000000020612446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n10.xml0000644000000000000000000000020512446622357021052 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n11.xml.correct0000644000000000000000000000007112446622357022514 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n07.xml.correct0000644000000000000000000000007112446622357022521 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n13.xml0000644000000000000000000000021212446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n03.xml.correct0000644000000000000000000000007112446622357022515 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n10.xml.html.correct0000644000000000000000000000007612446622357023463 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n04.xml.html.correct0000644000000000000000000000007612446622357023466 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n02.xml0000644000000000000000000000020712446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n01.xml.correct0000644000000000000000000000007112446622357022513 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n05.xml0000644000000000000000000000022012446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n08.xml0000644000000000000000000000020512446622357021061 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n05.xml.correct0000644000000000000000000000007112446622357022517 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n02.xml.html.correct0000644000000000000000000000007612446622357023464 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n07.xml0000644000000000000000000000022012446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n09.xml.correct0000644000000000000000000000007112446622357022523 0ustar0000000000000000Correct because we don't parse the internal DTD subset. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n01.xml0000644000000000000000000000021712446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n15.xml0000644000000000000000000000021212446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P66/ibm66n11.xml0000644000000000000000000000022112446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/0000755000000000000000000000000012446622357017063 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/ibm42n04.xml0000644000000000000000000000025212446622357021043 0ustar0000000000000000 ]> Extra white space before Name in ETag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/ibm42n02.xml0000644000000000000000000000024312446622357021041 0ustar0000000000000000 ]> Wrong begining sequence in ETag <\root> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/ibm42n03.xml0000644000000000000000000000024212446622357021041 0ustar0000000000000000 ]> Wrong begining sequence in ETag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/ibm42n05.xml0000644000000000000000000000022612446622357021045 0ustar0000000000000000 ]> Attribute in ETag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P42/ibm42n01.xml0000644000000000000000000000022312446622357021036 0ustar0000000000000000 ]> missing Name in ETag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/0000755000000000000000000000000012446622357017057 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n26.xml0000644000000000000000000000013312446622357021035 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n23.xml0000644000000000000000000000013312446622357021032 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n33.xml0000644000000000000000000000013712446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n24.xml0000644000000000000000000000013312446622357021033 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n21.xml0000644000000000000000000000013312446622357021030 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n29.xml0000644000000000000000000000013312446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n27.xml0000644000000000000000000000013312446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n15.xml0000644000000000000000000000013312446622357021033 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n18.xml0000644000000000000000000000013312446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n30.xml0000644000000000000000000000013712446622357021034 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n28.xml0000644000000000000000000000013312446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n10.xml0000644000000000000000000000013312446622357021026 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n17.xml0000644000000000000000000000013312446622357021035 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n02.xml0000644000000000000000000000013312446622357021027 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n04.xml0000644000000000000000000000013312446622357021031 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n14.xml0000644000000000000000000000013312446622357021032 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n16.xml0000644000000000000000000000013312446622357021034 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n13.xml0000644000000000000000000000013312446622357021031 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n12.xml0000644000000000000000000000013312446622357021030 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n06.xml0000644000000000000000000000013312446622357021033 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n25.xml0000644000000000000000000000013312446622357021034 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n05.xml0000644000000000000000000000013312446622357021032 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n32.xml0000644000000000000000000000013712446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n03.xml0000644000000000000000000000013312446622357021030 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n08.xml0000644000000000000000000000013312446622357021035 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n09.xml0000644000000000000000000000013312446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n22.xml0000644000000000000000000000013312446622357021031 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n01.xml0000644000000000000000000000013312446622357021026 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n11.xml0000644000000000000000000000013312446622357021027 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n07.xml0000644000000000000000000000013312446622357021034 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n19.xml0000644000000000000000000000013312446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n31.xml0000644000000000000000000000013712446622357021035 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P02/ibm02n20.xml0000644000000000000000000000013312446622357021027 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P44/0000755000000000000000000000000012446622357017065 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P44/ibm44n03.xml0000644000000000000000000000034012446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P44/ibm44n02.xml0000644000000000000000000000034712446622357021052 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P44/ibm44n04.xml0000644000000000000000000000035012446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P44/ibm44n01.xml0000644000000000000000000000031212446622357021041 0ustar0000000000000000 ]> < /> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P27/0000755000000000000000000000000012446622357017066 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P27/ibm27n01.xml0000644000000000000000000000023312446622357021045 0ustar0000000000000000 ]> Wrong type of Misc following this element! xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P25/0000755000000000000000000000000012446622357017064 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P25/ibm25n02.xml0000644000000000000000000000016312446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P25/ibm25n01.xml0000644000000000000000000000016112446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/0000755000000000000000000000000012446622357017062 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n04.xml0000644000000000000000000000030312446622357021036 0ustar0000000000000000 ]> missing name and Eq in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n02.xml0000644000000000000000000000027712446622357021046 0ustar0000000000000000 ]> missing Eq in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n05.xml.html.correct0000644000000000000000000000003712446622357023446 0ustar0000000000000000HTML allows empty attributes. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n08.xml0000644000000000000000000000030412446622357021043 0ustar0000000000000000 ]> wrong ordering in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n09.xml0000644000000000000000000000030412446622357021044 0ustar0000000000000000 ]> wrong ordering in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n10.ent0000644000000000000000000000003212446622357021020 0ustar0000000000000000 anyxmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n07.xml0000644000000000000000000000030412446622357021042 0ustar0000000000000000 ]> wrong ordering in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n10.xml0000644000000000000000000000041612446622357021040 0ustar0000000000000000 ]> direct reference to external entinity in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n06.xml0000644000000000000000000000030612446622357021043 0ustar0000000000000000 ]> missing Name and AttValue in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n05.xml0000644000000000000000000000030712446622357021043 0ustar0000000000000000 ]> missing Eq and AttValue in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n01.xml0000644000000000000000000000027512446622357021043 0ustar0000000000000000 ]> missing name in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n03.xml0000644000000000000000000000030212446622357021034 0ustar0000000000000000 ]> missing AttValue in Attribute xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P41/ibm41n.ent0000644000000000000000000000003212446622357020657 0ustar0000000000000000 anyxmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/0000755000000000000000000000000012446622357017065 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n06.xml0000644000000000000000000000030112446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n02.xml0000644000000000000000000000026512446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n01.xml0000644000000000000000000000027512446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n03.xml0000644000000000000000000000026412446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n05.xml0000644000000000000000000000027112446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P80/ibm80n04.xml0000644000000000000000000000027112446622357021050 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P18/0000755000000000000000000000000012446622357017066 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P18/ibm18n02.xml0000644000000000000000000000031512446622357021047 0ustar0000000000000000 ]> My Name is SnowMan. text xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P18/ibm18n01.xml0000644000000000000000000000031712446622357021050 0ustar0000000000000000 ]> My Name is SnowMan. This is text]]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/0000755000000000000000000000000012446622357017066 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n08.xml0000644000000000000000000000026612446622357021062 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n06.xml0000644000000000000000000000026612446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n07.xml0000644000000000000000000000026512446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n04.xml0000644000000000000000000000027612446622357021057 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n03.xml0000644000000000000000000000027612446622357021056 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n01.xml0000644000000000000000000000030012446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n02.xml0000644000000000000000000000027612446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n09.xml0000644000000000000000000000026612446622357021063 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P81/ibm81n05.xml0000644000000000000000000000026612446622357021057 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/0000755000000000000000000000000012446622357017056 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/ibm10n07.xml0000644000000000000000000000053312446622357021036 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/ibm10n02.xml.html.correct0000644000000000000000000000005712446622357023435 0ustar0000000000000000Valid in HTML due to relaxes attribute values xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/ibm10n08.xml0000644000000000000000000000056412446622357021043 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/ibm10n06.xml0000644000000000000000000000053312446622357021035 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P10/ibm10n01.xml.html.correct0000644000000000000000000000005712446622357023434 0ustar0000000000000000Valid in HTML due to relaxes attribute values xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/0000755000000000000000000000000012446622357017061 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n18.xml0000644000000000000000000000013712446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n10.xml0000644000000000000000000000013712446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n07.xml0000644000000000000000000000013712446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n08.xml0000644000000000000000000000013712446622357021045 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n17.xml0000644000000000000000000000013712446622357021045 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n15.xml0000644000000000000000000000013712446622357021043 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n02.xml0000644000000000000000000000013712446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n05.xml0000644000000000000000000000013712446622357021042 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n04.xml0000644000000000000000000000013712446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n16.xml0000644000000000000000000000013712446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n09.xml0000644000000000000000000000013712446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n13.xml0000644000000000000000000000013712446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n11.xml0000644000000000000000000000013712446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n14.xml0000644000000000000000000000013712446622357021042 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n01.xml0000644000000000000000000000013712446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n12.xml0000644000000000000000000000013712446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n03.xml0000644000000000000000000000013712446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P04/ibm04n06.xml0000644000000000000000000000013712446622357021043 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/0000755000000000000000000000000012446622357017073 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n02.xml.html.correct0000644000000000000000000000007612446622357023470 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n04.xml0000644000000000000000000000025512446622357021066 0ustar0000000000000000 ]> reference doesn't match delaration xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n03.xml.html.correct0000644000000000000000000000007612446622357023471 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n02.xml0000644000000000000000000000023412446622357021061 0ustar0000000000000000 ]> missing semi-colon xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n08.xml0000644000000000000000000000042312446622357021067 0ustar0000000000000000 ]> unparsed entity reference in the wrong place &aImage; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n07.xml.correct0000644000000000000000000000007412446622357022530 0ustar0000000000000000Correct because we don't parse the DOCTYPE internal subset xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n01.xml.html.correct0000644000000000000000000000007612446622357023467 0ustar0000000000000000Relaxes attribute values permit this (as literal & in value) xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n05.xml0000644000000000000000000000017612446622357021071 0ustar0000000000000000 ]> undefined entitiy &aaa; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n03.xml0000644000000000000000000000024312446622357021062 0ustar0000000000000000 ]> extra space after ampsand & aaa; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n06.dtd0000644000000000000000000000005612446622357021042 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n01.xml0000644000000000000000000000022512446622357021060 0ustar0000000000000000 ]> missing entity name &; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n09.xml0000644000000000000000000000030212446622357021064 0ustar0000000000000000 ]> &aaa; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n10.xml0000644000000000000000000000042212446622357021057 0ustar0000000000000000 ]> &aaa; xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n07.xml0000644000000000000000000000031312446622357021064 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P68/ibm68n06.xml0000644000000000000000000000034112446622357021064 0ustar0000000000000000 ]> entity declared externally but standalone is yes xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P21/0000755000000000000000000000000012446622357017060 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P21/ibm21n03.xml0000644000000000000000000000026512446622357021040 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P21/ibm21n02.xml0000644000000000000000000000026612446622357021040 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P21/ibm21n01.xml0000644000000000000000000000027312446622357021035 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/0000755000000000000000000000000012446622357017062 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n06.xml0000644000000000000000000000017612446622357021050 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n05.xml0000644000000000000000000000021212446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n03.xml0000644000000000000000000000021212446622357021034 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n01.xml0000644000000000000000000000020712446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n06.dtd0000644000000000000000000000002712446622357021016 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n08.xml0000644000000000000000000000021312446622357021042 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n07.xml0000644000000000000000000000017612446622357021051 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n02.xml0000644000000000000000000000020612446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P32/ibm32n04.xml0000644000000000000000000000021212446622357021035 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/0000755000000000000000000000000012446622357017061 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/ibm40n02.xml0000644000000000000000000000031012446622357021030 0ustar0000000000000000 ]> missing white space in start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/ibm40n03.xml0000644000000000000000000000030412446622357021034 0ustar0000000000000000 ]> Wrong ordering in start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/ibm40n05.xml0000644000000000000000000000033412446622357021041 0ustar0000000000000000 ]> duplicate attr names in start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/ibm40n01.xml0000644000000000000000000000030312446622357021031 0ustar0000000000000000 ]> missing name in start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P40/ibm40n04.xml0000644000000000000000000000031612446622357021040 0ustar0000000000000000 ]> wrong begining sequence in start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/0000755000000000000000000000000012446622357017071 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n04.xml0000644000000000000000000000027112446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n02.xml.html.correct0000644000000000000000000000010412446622357023454 0ustar0000000000000000Legal HTML because PUBLIC and SYSTEM are case insensitive matches. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n12.xml0000644000000000000000000000023512446622357021057 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n02.xml0000644000000000000000000000030412446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n11.xml0000644000000000000000000000027012446622357021055 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n08.xml0000644000000000000000000000027712446622357021072 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n06.xml.correct0000644000000000000000000000007012446622357022517 0ustar0000000000000000Correct because we don't parse the internal DTD subset xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n09.xml0000644000000000000000000000027312446622357021067 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n05.xml0000644000000000000000000000023612446622357021062 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n06.xml0000644000000000000000000000023512446622357021062 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n05.xml.correct0000644000000000000000000000007012446622357022516 0ustar0000000000000000Correct because we don't parse the internal DTD subset xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n07.xml0000644000000000000000000000027312446622357021065 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n01.xml.correct0000644000000000000000000000007012446622357022512 0ustar0000000000000000Correct because we don't parse the internal DTD subset xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n03.xml0000644000000000000000000000030412446622357021054 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n13.xml0000644000000000000000000000027112446622357021060 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/empty.dtd0000644000000000000000000000002612446622357020722 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n01.xml0000644000000000000000000000025012446622357021052 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n12.xml.correct0000644000000000000000000000007012446622357022514 0ustar0000000000000000Correct because we don't parse the internal DTD subset xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n03.xml.html.correct0000644000000000000000000000010412446622357023455 0ustar0000000000000000Legal HTML because PUBLIC and SYSTEM are case insensitive matches. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P75/ibm75n10.xml0000644000000000000000000000026312446622357021056 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/0000755000000000000000000000000012446622357017062 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/ibm05n05.xml0000644000000000000000000000014212446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/ibm05n02.xml0000644000000000000000000000015312446622357021037 0ustar0000000000000000 ]> <-A_name_starts_With-/> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/ibm05n01.xml0000644000000000000000000000015312446622357021036 0ustar0000000000000000 ]> <.A_name_starts_with./> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/ibm05n03.xml0000644000000000000000000000017212446622357021041 0ustar0000000000000000 ]> <5A_name_starts_with_digit/> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P05/ibm05n04.xml0000644000000000000000000000020012446622357021032 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/0000755000000000000000000000000012446622357017062 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n05.xml0000644000000000000000000000023112446622357021037 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n04.xml0000644000000000000000000000015612446622357021044 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n03.xml0000644000000000000000000000026712446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n06.xml0000644000000000000000000000023212446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n01.xml0000644000000000000000000000020712446622357021036 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P23/ibm23n02.xml0000644000000000000000000000024512446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/0000755000000000000000000000000012446622357017064 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/ibm16n02.xml0000644000000000000000000000026512446622357021047 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/ibm16n04.xml0000644000000000000000000000027612446622357021053 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/ibm16n03.xml0000644000000000000000000000030512446622357021043 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/ibm16n01.xml0000644000000000000000000000032612446622357021044 0ustar0000000000000000 ]> a test ?> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P16/ibm16n01.xml.correct0000644000000000000000000000007512446622357022505 0ustar0000000000000000Accepting multiple root nodes makes this test case correct. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P22/0000755000000000000000000000000012446622357017061 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P22/ibm22n01.xml0000644000000000000000000000021312446622357021031 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P22/ibm22n02.xml0000644000000000000000000000021312446622357021032 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P22/ibm22n03.xml0000644000000000000000000000026412446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/misc/0000755000000000000000000000000012446622357017451 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/misc/simpleltinentval.xml0000644000000000000000000000076212446622357023572 0ustar0000000000000000 ]> <--* this is to test "<" can not be included in the replacement text of an entity that is referenced in AttValue. Anyway, this file should be rejected because the internal GE "gewithlt" is not even well-formed by definition. *--> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/misc/432gewf.xml0000644000000000000000000000073012446622357021354 0ustar0000000000000000 "> ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/misc/ltinentval.xml0000644000000000000000000000056112446622357022355 0ustar0000000000000000 ]> <--* this is to test "<" can not be included in an entity that is referenced in AttValue, even indirectly *--> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P30/0000755000000000000000000000000012446622357017060 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P30/ibm30n01.dtd0000644000000000000000000000020112446622357020777 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P30/ibm30n01.xml0000644000000000000000000000016612446622357021036 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P30/ibm30n01.xml.correct0000644000000000000000000000004612446622357022473 0ustar0000000000000000Correct because we don't parse DTDs. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P11/0000755000000000000000000000000012446622357017057 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P11/ibm11n04.xml0000644000000000000000000000032112446622357021030 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P11/ibm11n02.xml0000644000000000000000000000027212446622357021033 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P11/ibm11n03.xml0000644000000000000000000000032112446622357021027 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P11/ibm11n01.xml0000644000000000000000000000031712446622357021032 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P43/0000755000000000000000000000000012446622357017064 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P43/ibm43n05.xml0000644000000000000000000000031212446622357021043 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P43/ibm43n02.xml0000644000000000000000000000027412446622357021047 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P43/ibm43n01.xml0000644000000000000000000000031412446622357021041 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P43/ibm43n04.xml0000644000000000000000000000032512446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/0000755000000000000000000000000012446622357017062 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/ibm14n02.xml0000644000000000000000000000036712446622357021046 0ustar0000000000000000 ]> My name is Snow xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/ibm14n03.xml0000644000000000000000000000037012446622357021041 0ustar0000000000000000 ]> My name is Snow&Man xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/ibm14n03.xml.html.correct0000644000000000000000000000007512446622357023446 0ustar0000000000000000Valid in HTML due to relaxed rules about ampersands in text xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/ibm14n01.xml0000644000000000000000000000037712446622357021046 0ustar0000000000000000 ]> My name is Snow ]]> Man xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P14/ibm14n01.xml.correct0000644000000000000000000000010412446622357022472 0ustar0000000000000000This is documented as a way our parser is more accepting than XML. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P15/0000755000000000000000000000000012446622357017063 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P15/ibm15n01.xml0000644000000000000000000000026612446622357021045 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P15/ibm15n04.xml0000644000000000000000000000030412446622357021041 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/0000755000000000000000000000000012446622357017063 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n04.xml0000644000000000000000000000017512446622357021047 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n03.xml0000644000000000000000000000016312446622357021043 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n02.xml0000644000000000000000000000016112446622357021040 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n06.xml0000644000000000000000000000015712446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n01.xml0000644000000000000000000000016512446622357021043 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n09.xml0000644000000000000000000000016512446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n07.xml0000644000000000000000000000015712446622357021052 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n08.xml0000644000000000000000000000016612446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P24/ibm24n05.xml0000644000000000000000000000017312446622357021046 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/0000755000000000000000000000000012446622357017067 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n07.xml0000644000000000000000000000022612446622357021057 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n03.xml0000644000000000000000000000033112446622357021050 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n06.xml0000644000000000000000000000023012446622357021051 0ustar0000000000000000 > xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n01.xml0000644000000000000000000000017712446622357021056 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n08.xml0000644000000000000000000000023012446622357021053 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n04.xml0000644000000000000000000000057412446622357021062 0ustar0000000000000000 &generalE; "> %parameterE; ] animal> &generalE xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n05.xml0000644000000000000000000000022712446622357021056 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n02.xml0000644000000000000000000000022612446622357021052 0ustar0000000000000000 ] animal> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n05.xml.html.correct0000644000000000000000000000007612446622357023463 0ustar0000000000000000Correct in HTML because DOCTYPE is a case insensitive match. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P28/ibm28n01.dtd0000644000000000000000000000002712446622357021023 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P12/0000755000000000000000000000000012446622357017060 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P12/ibm12n02.xml0000644000000000000000000000031112446622357021027 0ustar0000000000000000 ]> My Name is &info;. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P12/ibm12n01.xml0000644000000000000000000000036312446622357021035 0ustar0000000000000000 ]> My Name is &info;. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P12/ibm12n03.xml0000644000000000000000000000033612446622357021037 0ustar0000000000000000 ]> My Name is &info;. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/0000755000000000000000000000000012446622357017071 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n06.xml0000644000000000000000000000015412446622357021062 0ustar0000000000000000 ]> content after end tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n02.xml0000644000000000000000000000014212446622357021053 0ustar0000000000000000 ]> missing start tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n01.xml0000644000000000000000000000014112446622357021051 0ustar0000000000000000 ]> missing end tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n04.xml0000644000000000000000000000020112446622357021051 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n03.xml0000644000000000000000000000017212446622357021057 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n06.xml.correct0000644000000000000000000000006312446622357022521 0ustar0000000000000000Multiple root nodes exception makes this correct. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P39/ibm39n05.xml0000644000000000000000000000016212446622357021060 0ustar0000000000000000 ]> switched start and end tags xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P17/0000755000000000000000000000000012446622357017065 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P17/ibm17n03.xml0000644000000000000000000000026612446622357021053 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P17/ibm17n01.xml0000644000000000000000000000027612446622357021052 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P17/ibm17n02.xml0000644000000000000000000000026612446622357021052 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P17/ibm17n04.xml0000644000000000000000000000026612446622357021054 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P03/0000755000000000000000000000000012446622357017060 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P03/ibm03n01.xml0000644000000000000000000000021212446622357021026 0ustar0000000000000000 ]> Illegal space 3000 in the end tag xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P20/0000755000000000000000000000000012446622357017057 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P20/ibm20n01.xml0000644000000000000000000000034212446622357021030 0ustar0000000000000000 ]> This is ]]> a test]]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P26/0000755000000000000000000000000012446622357017065 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/not-wf/P26/ibm26n01.xml0000644000000000000000000000017412446622357021047 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/invalid/0000755000000000000000000000000012446622357016732 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/0000755000000000000000000000000012446622357017277 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/ibm51i03.xml0000644000000000000000000000063112446622357021252 0ustar0000000000000000 ]> Element type a Element type b xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/ibm51i03.dtd0000644000000000000000000000003712446622357021225 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/ibm51i01.dtd0000644000000000000000000000056712446622357021233 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/ibm51i01.xml0000644000000000000000000000034112446622357021246 0ustar0000000000000000 ]> Element type a Element type b xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/out/0000755000000000000000000000000012446622357020106 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/out/ibm51i03.xml0000644000000000000000000000011612446622357022057 0ustar0000000000000000 Element type a Element type b xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/out/ibm51i02.xml0000644000000000000000000000011612446622357022056 0ustar0000000000000000 Element type a Element type b xmlhtml-0.2.3.4/test/resources/ibm/invalid/P51/out/ibm51i01.xml0000644000000000000000000000011612446622357022055 0ustar0000000000000000 Element type a Element type b xmlhtml-0.2.3.4/test/resources/ibm/invalid/P76/0000755000000000000000000000000012446622357017306 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P76/ibm76i01.xml0000644000000000000000000000060312446622357021265 0ustar0000000000000000 '> %pe1; ]> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P76/out/0000755000000000000000000000000012446622357020115 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P76/out/ibm76i01.xml0000644000000000000000000000003012446622357022066 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/0000755000000000000000000000000012446622357017276 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/ibm41i01.xml0000644000000000000000000000047612446622357021255 0ustar0000000000000000 ]> attr1 not declared xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/ibm41i02.xml0000644000000000000000000000055512446622357021254 0ustar0000000000000000 ]> attr3 value not fixed xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/out/0000755000000000000000000000000012446622357020105 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/out/ibm41i01.xml0000644000000000000000000000013312446622357022052 0ustar0000000000000000 attr1 not declared xmlhtml-0.2.3.4/test/resources/ibm/invalid/P41/out/ibm41i02.xml0000644000000000000000000000014512446622357022056 0ustar0000000000000000 attr3 value not fixed xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/0000755000000000000000000000000012446622357017277 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/ibm60i04.xml0000644000000000000000000000053212446622357021253 0ustar0000000000000000 ]> The default value specified for an attribute does not meet the lexical constraints of the declared attribute type. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/ibm60i03.xml0000644000000000000000000000055312446622357021255 0ustar0000000000000000 ]> The default value specified for an attribute does not meet the lexical constraints of the declared attribute type. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/ibm60i02.xml0000644000000000000000000000067312446622357021257 0ustar0000000000000000 ]> Negative Test An attribute has a default value declared with the #FIXED keyword, and an instances of that attribute is given a value which is not the same as the default value in the declaration. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/ibm60i01.xml0000644000000000000000000000073012446622357021250 0ustar0000000000000000 ]> Negative test for Required Attribute. Some occurrence of an element with an attribute of #REQUIRED default declaration does not give the value of those attribute xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/out/0000755000000000000000000000000012446622357020106 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/out/ibm60i04.xml0000644000000000000000000000021612446622357022061 0ustar0000000000000000 The default value specified for an attribute does not meet the lexical constraints of the declared attribute type. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/out/ibm60i03.xml0000644000000000000000000000021612446622357022060 0ustar0000000000000000 The default value specified for an attribute does not meet the lexical constraints of the declared attribute type. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/out/ibm60i02.xml0000644000000000000000000000041512446622357022060 0ustar0000000000000000 Negative Test An attribute has a default value declared with the #FIXED keyword, and an instances of that attribute is given a value which is not the same as the default value in the declaration. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P60/out/ibm60i01.xml0000644000000000000000000000037112446622357022060 0ustar0000000000000000 Negative test for Required Attribute. Some occurrence of an element with an attribute of #REQUIRED default declaration does not give the value of those attribute xmlhtml-0.2.3.4/test/resources/ibm/invalid/P59/0000755000000000000000000000000012446622357017307 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P59/ibm59i01.xml0000644000000000000000000000061212446622357021267 0ustar0000000000000000 ]> This is a Negative test The attribute values of type Enumeration does not match any of the Nmtoken tokens in the declaration. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P59/out/0000755000000000000000000000000012446622357020116 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P59/out/ibm59i01.xml0000644000000000000000000000026412446622357022101 0ustar0000000000000000 This is a Negative test The attribute values of type Enumeration does not match any of the Nmtoken tokens in the declaration. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/0000755000000000000000000000000012446622357017307 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i02.xml0000644000000000000000000000032312446622357021267 0ustar0000000000000000 ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i03.xml0000644000000000000000000000034712446622357021276 0ustar0000000000000000 %pe1; ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i02.dtd0000644000000000000000000000021012446622357021235 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i01.xml0000644000000000000000000000032312446622357021266 0ustar0000000000000000 ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i03.ent0000644000000000000000000000021212446622357021253 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i01.dtd0000644000000000000000000000021512446622357021241 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i04.xml0000644000000000000000000000034712446622357021277 0ustar0000000000000000 %pe1; ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/ibm68i04.ent0000644000000000000000000000021212446622357021254 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/out/0000755000000000000000000000000012446622357020116 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/out/ibm68i02.xml0000644000000000000000000000010112446622357022070 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/out/ibm68i03.xml0000644000000000000000000000004712446622357022102 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/out/ibm68i01.xml0000644000000000000000000000010112446622357022067 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P68/out/ibm68i04.xml0000644000000000000000000000004712446622357022103 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/0000755000000000000000000000000012446622357017306 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/ibm49i01.dtd0000644000000000000000000000036112446622357021241 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/ibm49i02.xml0000644000000000000000000000034212446622357021266 0ustar0000000000000000 ]> content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/ibm49i01.xml0000644000000000000000000000034212446622357021265 0ustar0000000000000000 ]> content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/out/0000755000000000000000000000000012446622357020115 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/out/ibm49i02.xml0000644000000000000000000000000012446622357022064 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P49/out/ibm49i01.xml0000644000000000000000000000011312446622357022070 0ustar0000000000000000 content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/0000755000000000000000000000000012446622357017276 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i02.xml.incorrect0000644000000000000000000000011312446622357023231 0ustar0000000000000000Incorrect because of bad entity ref; we don't parse internal DTD subsets. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i03.xml0000644000000000000000000000064012446622357021250 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i02.xml0000644000000000000000000000065712446622357021257 0ustar0000000000000000 ]> &animal_content; xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i04.dtd0000644000000000000000000000012312446622357021220 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i01.dtd0000644000000000000000000000005512446622357021221 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i04.xml0000644000000000000000000000075512446622357021260 0ustar0000000000000000 ]> This is a yellow tiger xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i03.dtd0000644000000000000000000000005012446622357021216 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i02.dtd0000644000000000000000000000006112446622357021217 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/ibm32i01.xml0000644000000000000000000000066212446622357021252 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/out/0000755000000000000000000000000012446622357020105 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/out/ibm32i03.xml0000644000000000000000000000010112446622357022047 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/out/ibm32i02.xml0000644000000000000000000000004712446622357022057 0ustar0000000000000000This is a yellow tigerxmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/out/ibm32i04.xml0000644000000000000000000000015312446622357022057 0ustar0000000000000000This is a yellow tiger xmlhtml-0.2.3.4/test/resources/ibm/invalid/P32/out/ibm32i01.xml0000644000000000000000000000004012446622357022047 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/0000755000000000000000000000000012446622357017304 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/ibm29i01.dtd0000644000000000000000000000052512446622357021237 0ustar0000000000000000 %make_leopard_element;ANY> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/ibm29i01.xml0000644000000000000000000000115312446622357021262 0ustar0000000000000000 ]> &forcat; This is a white tiger in Mirage!! xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/ibm29i01.xml.incorrect0000644000000000000000000000011312446622357023244 0ustar0000000000000000Incorrect because of bad entity ref; we don't parse internal DTD subsets. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/out/0000755000000000000000000000000012446622357020113 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P29/out/ibm29i01.xml0000644000000000000000000000050612446622357022072 0ustar0000000000000000 ]> This is a small cat This is a white tiger in Mirage!! xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/0000755000000000000000000000000012446622357017306 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/ibm58i02.xml0000644000000000000000000000104312446622357021265 0ustar0000000000000000 ]> The attribute values of type NOTATION does match any of the notation names included in the declaration, but some of notation names in the declaration have not been declared xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/ibm58i01.xml0000644000000000000000000000106012446622357021263 0ustar0000000000000000 ]> The attribute values of type NOTATION does not match any of the notation names included in the declaration.All notation names in the declaration have been declared. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/out/0000755000000000000000000000000012446622357020115 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/out/ibm58i02.xml0000644000000000000000000000052012446622357022073 0ustar0000000000000000 ]> The attribute values of type NOTATION does match any of the notation names included in the declaration, but some of notation names in the declaration have not been declared xmlhtml-0.2.3.4/test/resources/ibm/invalid/P58/out/ibm58i01.xml0000644000000000000000000000054512446622357022101 0ustar0000000000000000 ]> The attribute values of type NOTATION does not match any of the notation names included in the declaration.All notation names in the declaration have been declared. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P45/0000755000000000000000000000000012446622357017302 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P45/ibm45i01.xml0000644000000000000000000000104512446622357021256 0ustar0000000000000000 ]> without white space with a white space xmlhtml-0.2.3.4/test/resources/ibm/invalid/P45/out/0000755000000000000000000000000012446622357020111 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P45/out/ibm45i01.xml0000644000000000000000000000025412446622357022066 0ustar0000000000000000 without white space with a white space xmlhtml-0.2.3.4/test/resources/ibm/invalid/P50/0000755000000000000000000000000012446622357017276 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P50/ibm50i01.xml0000644000000000000000000000034212446622357021245 0ustar0000000000000000 ]> content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P50/ibm50i01.dtd0000644000000000000000000000030212446622357021214 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/invalid/P50/out/0000755000000000000000000000000012446622357020105 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P50/out/ibm50i01.xml0000644000000000000000000000011312446622357022050 0ustar0000000000000000 content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/0000755000000000000000000000000012446622357017310 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i03.ent0000644000000000000000000000031112446622357021255 0ustar0000000000000000 "> %pe3; xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i04.xml0000644000000000000000000000035012446622357021273 0ustar0000000000000000 %pe1; ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i02.xml0000644000000000000000000000032312446622357021271 0ustar0000000000000000 ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i04.ent0000644000000000000000000000031212446622357021257 0ustar0000000000000000 %pe2; "> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i01.xml0000644000000000000000000000032312446622357021270 0ustar0000000000000000 ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i03.xml0000644000000000000000000000034712446622357021300 0ustar0000000000000000 %pe1; ]> pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i02.dtd0000644000000000000000000000030612446622357021245 0ustar0000000000000000 %pe1; "> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/ibm69i01.dtd0000644000000000000000000000031112446622357021240 0ustar0000000000000000 "> %pe2; xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/out/0000755000000000000000000000000012446622357020117 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/out/ibm69i04.xml0000644000000000000000000000004712446622357022105 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/out/ibm69i02.xml0000644000000000000000000000010112446622357022072 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/out/ibm69i01.xml0000644000000000000000000000010112446622357022071 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P69/out/ibm69i03.xml0000644000000000000000000000004712446622357022104 0ustar0000000000000000 pcdata content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P28/0000755000000000000000000000000012446622357017303 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P28/ibm28i01.xml0000644000000000000000000000034712446622357021264 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/invalid/P28/out/0000755000000000000000000000000012446622357020112 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P28/out/ibm28i01.xml0000644000000000000000000000002112446622357022060 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/0000755000000000000000000000000012446622357017305 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/ibm39i02.xml0000644000000000000000000000044312446622357021266 0ustar0000000000000000 ]> root can't have text content content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/ibm39i03.xml0000644000000000000000000000046212446622357021270 0ustar0000000000000000 ]> content of b element could not have 'a' as 'b's content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/ibm39i04.xml0000644000000000000000000000053712446622357021274 0ustar0000000000000000 ]> content of b element not declared in dtd xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/ibm39i01.xml0000644000000000000000000000043312446622357021264 0ustar0000000000000000 ]> should not have content here content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/out/0000755000000000000000000000000012446622357020114 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/out/ibm39i02.xml0000644000000000000000000000016312446622357022074 0ustar0000000000000000 root can't have text content content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/out/ibm39i03.xml0000644000000000000000000000020512446622357022072 0ustar0000000000000000 content of b element could not have 'a' as 'b's content xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/out/ibm39i04.xml0000644000000000000000000000021712446622357022076 0ustar0000000000000000 content of b element not declared in dtd xmlhtml-0.2.3.4/test/resources/ibm/invalid/P39/out/ibm39i01.xml0000644000000000000000000000015012446622357022067 0ustar0000000000000000should not have content here content of b element xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/0000755000000000000000000000000012446622357017304 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i11.xml0000644000000000000000000000063312446622357021265 0ustar0000000000000000 ]> In the attribute decl, values of type ENTITY do not match the Name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i10.xml0000644000000000000000000000126012446622357021261 0ustar0000000000000000 ]> Negative test for validity constraint of IDREFS. In an attribute decl, values of type IDREFS match the name production but IDREFS value do not match the values assigned to one or more ID attributes somewhere in the XML document xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i01.xml0000644000000000000000000000056212446622357021265 0ustar0000000000000000 ]> This is a negative test for validity constraints the value of the attribute with a type ID does not match the Name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i15.xml0000644000000000000000000000110712446622357021266 0ustar0000000000000000 ]> In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value does not match one or more names of entities declared in the DTD. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i17.xml0000644000000000000000000000056412446622357021276 0ustar0000000000000000 ]> In an attribute declaration, values of type NMTOKEN does not match the Nmtoken production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i06.xml0000644000000000000000000000063312446622357021271 0ustar0000000000000000 ]> This is a Negative validity test for ID. There is more than attribute of type ID for the element a xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i14.xml0000644000000000000000000000076612446622357021277 0ustar0000000000000000 ]> In an attribute declaration, values of type ENTITIES do not match the Name production. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i02.xml0000644000000000000000000000071312446622357021264 0ustar0000000000000000 ]> This is a negative test for validity constraints the value of the attribute with a type ID appears more than once in the XML document xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i16.xml0000644000000000000000000000105612446622357021272 0ustar0000000000000000 ]> In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value matches one or more names of parsed entities declared in the DTD. . xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i07.xml0000644000000000000000000000074112446622357021272 0ustar0000000000000000 ]> Negative test for validity constraint of IDREF. In an attribute decl, values of type IDREF does not match the name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i08.xml0000644000000000000000000000110012446622357021261 0ustar0000000000000000 ]> Negative test for validity constraint of IDREF. In an attribute decl, values of type IDREF match the name production and IDREF value does not match the value assigned to any ID attribute somewhere in the XML document. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i13.xml0000644000000000000000000000073612446622357021273 0ustar0000000000000000 ]> In an attribute declaration, values of type ENTITY match the Name production and the ENTITY value matches the name of a parsed entity declared in the DTD. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i05.xml0000644000000000000000000000053612446622357021272 0ustar0000000000000000 ]> This is a Negative validity test for ID Attribute Default. Giving the attibute default as a const string xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i18.xml0000644000000000000000000000060312446622357021271 0ustar0000000000000000 ]> In an attribute declaration, values of type NMTOKENS does not match the Nmtokens production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i03.xml0000644000000000000000000000051112446622357021261 0ustar0000000000000000 ]> This is a Negative validity test for ID Attribute Default. Giving the attribute default as #FIXED xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i09.xml0000644000000000000000000000111112446622357021264 0ustar0000000000000000 ]> Negative test for validity constraint of IDREFS. In an attribute decl, values of type IDREFS does not match the name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/ibm56i12.xml0000644000000000000000000000072512446622357021270 0ustar0000000000000000 ]> In the attribute decl, values of type ENTITY match the Name production but does not match the name of any entity declared in the DTD xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/0000755000000000000000000000000012446622357020113 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i11.xml0000644000000000000000000000021512446622357022070 0ustar0000000000000000 In the attribute decl, values of type ENTITY do not match the Name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i10.xml0000644000000000000000000000056512446622357022077 0ustar0000000000000000 Negative test for validity constraint of IDREFS. In an attribute decl, values of type IDREFS match the name production but IDREFS value do not match the values assigned to one or more ID attributes somewhere in the XML document xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i01.xml0000644000000000000000000000026512446622357022074 0ustar0000000000000000 This is a negative test for validity constraints the value of the attribute with a type ID does not match the Name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i15.xml0000644000000000000000000000036312446622357022100 0ustar0000000000000000 In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value does not match one or more names of entities declared in the DTD. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i17.xml0000644000000000000000000000024212446622357022076 0ustar0000000000000000 In an attribute declaration, values of type NMTOKEN does not match the Nmtoken production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i06.xml0000644000000000000000000000026712446622357022103 0ustar0000000000000000 This is a Negative validity test for ID. There is more than attribute of type ID for the element a xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i14.xml0000644000000000000000000000023612446622357022076 0ustar0000000000000000 In an attribute declaration, values of type ENTITIES do not match the Name production. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i02.xml0000644000000000000000000000032612446622357022073 0ustar0000000000000000 This is a negative test for validity constraints the value of the attribute with a type ID appears more than once in the XML document xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i16.xml0000644000000000000000000000040212446622357022073 0ustar0000000000000000 In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value matches one or more names of parsed entities declared in the DTD. . xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i07.xml0000644000000000000000000000033612446622357022101 0ustar0000000000000000 Negative test for validity constraint of IDREF. In an attribute decl, values of type IDREF does not match the name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i08.xml0000644000000000000000000000050312446622357022076 0ustar0000000000000000 Negative test for validity constraint of IDREF. In an attribute decl, values of type IDREF match the name production and IDREF value does not match the value assigned to any ID attribute somewhere in the XML document. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i13.xml0000644000000000000000000000034512446622357022076 0ustar0000000000000000 In an attribute declaration, values of type ENTITY match the Name production and the ENTITY value matches the name of a parsed entity declared in the DTD. xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i05.xml0000644000000000000000000000024112446622357022072 0ustar0000000000000000 This is a Negative validity test for ID Attribute Default. Giving the attibute default as a const string xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i18.xml0000644000000000000000000000025612446622357022104 0ustar0000000000000000 In an attribute declaration, values of type NMTOKENS does not match the Nmtokens production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i03.xml0000644000000000000000000000023212446622357022070 0ustar0000000000000000 This is a Negative validity test for ID Attribute Default. Giving the attribute default as #FIXED xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i09.xml0000644000000000000000000000041012446622357022074 0ustar0000000000000000 Negative test for validity constraint of IDREFS. In an attribute decl, values of type IDREFS does not match the name production xmlhtml-0.2.3.4/test/resources/ibm/invalid/P56/out/ibm56i12.xml0000644000000000000000000000031212446622357022067 0ustar0000000000000000 In the attribute decl, values of type ENTITY match the Name production but does not match the name of any entity declared in the DTD xmlhtml-0.2.3.4/test/resources/ibm/valid/0000755000000000000000000000000012446622357016403 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P19/0000755000000000000000000000000012446622357016754 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P19/ibm19v01.xml0000644000000000000000000000026412446622357020750 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P19/out/0000755000000000000000000000000012446622357017563 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P19/out/ibm19v01.xml0000644000000000000000000000006612446622357021557 0ustar0000000000000000My Name is SnowMan. This is a test xmlhtml-0.2.3.4/test/resources/ibm/valid/P01/0000755000000000000000000000000012446622357016743 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P01/ibm01v01.xml0000644000000000000000000000107012446622357020722 0ustar0000000000000000 ]> This is a white tiger in Mirage!! xmlhtml-0.2.3.4/test/resources/ibm/valid/P01/out/0000755000000000000000000000000012446622357017552 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P01/out/ibm01v01.xml0000644000000000000000000000035612446622357021537 0ustar0000000000000000 This is a white tiger in Mirage!! xmlhtml-0.2.3.4/test/resources/ibm/valid/P02/0000755000000000000000000000000012446622357016744 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P02/ibm02v01.xml0000644000000000000000000000053312446622357020727 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P02/ibm02v01.xml.incorrect0000644000000000000000000000011512446622357022712 0ustar0000000000000000Incorrect by a plain reading of the spec. Suspect this is an old test case. xmlhtml-0.2.3.4/test/resources/ibm/valid/P02/out/0000755000000000000000000000000012446622357017553 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P02/out/ibm02v01.xml0000644000000000000000000000021512446622357021533 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P18/0000755000000000000000000000000012446622357016753 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P18/ibm18v01.xml0000644000000000000000000000032312446622357020742 0ustar0000000000000000 ]> My Name is SnowMan. text]]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P18/out/0000755000000000000000000000000012446622357017562 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P18/out/ibm18v01.xml0000644000000000000000000000010312446622357021545 0ustar0000000000000000My Name is SnowMan. This is <normal> text xmlhtml-0.2.3.4/test/resources/ibm/valid/P21/0000755000000000000000000000000012446622357016745 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P21/ibm21v01.xml0000644000000000000000000000026512446622357020733 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P21/out/0000755000000000000000000000000012446622357017554 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P21/out/ibm21v01.xml0000644000000000000000000000006612446622357021541 0ustar0000000000000000My Name is SnowMan. This is a test xmlhtml-0.2.3.4/test/resources/ibm/valid/P13/0000755000000000000000000000000012446622357016746 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P13/student.dtd0000644000000000000000000000012012446622357021122 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/valid/P13/ibm13v01.xml0000644000000000000000000000043312446622357020732 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P13/out/0000755000000000000000000000000012446622357017555 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P13/out/ibm13v01.xml0000644000000000000000000000004712446622357021542 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/0000755000000000000000000000000012446622357016747 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v04.xml0000644000000000000000000000011312446622357020732 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v01.xml0000644000000000000000000000011212446622357020726 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v03.xml0000644000000000000000000000013412446622357020734 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v06.xml0000644000000000000000000000015512446622357020742 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v05.xml0000644000000000000000000000015412446622357020740 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/ibm23v02.xml0000644000000000000000000000013412446622357020733 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/0000755000000000000000000000000012446622357017556 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v04.xml0000644000000000000000000000001312446622357021540 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v01.xml0000644000000000000000000000001312446622357021535 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v03.xml0000644000000000000000000000001312446622357021537 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v06.xml0000644000000000000000000000001312446622357021542 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v05.xml0000644000000000000000000000001312446622357021541 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P23/out/ibm23v02.xml0000644000000000000000000000001312446622357021536 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/0000755000000000000000000000000012446622357016751 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/ibm16v01.xml0000644000000000000000000000021712446622357020740 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/ibm16v03.xml0000644000000000000000000000024112446622357020737 0ustar0000000000000000 ]> IN PI ?> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/ibm16v02.xml0000644000000000000000000000021212446622357020734 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/out/0000755000000000000000000000000012446622357017560 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/out/ibm16v01.xml0000644000000000000000000000006612446622357021551 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/out/ibm16v03.xml0000644000000000000000000000011512446622357021546 0ustar0000000000000000 IN PI ?>My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P16/out/ibm16v02.xml0000644000000000000000000000006612446622357021552 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/0000755000000000000000000000000012446622357016746 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v04.xml0000644000000000000000000000011412446622357020731 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v06.xml0000644000000000000000000000017012446622357020735 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v05.xml0000644000000000000000000000017012446622357020734 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v01.xml0000644000000000000000000000013712446622357020733 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v07.xml0000644000000000000000000000022112446622357020733 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v02.xml0000644000000000000000000000006312446622357020732 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/ibm22v03.xml0000644000000000000000000000011412446622357020730 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/0000755000000000000000000000000012446622357017555 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v04.xml0000644000000000000000000000001312446622357021536 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v06.xml0000644000000000000000000000001312446622357021540 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v05.xml0000644000000000000000000000001312446622357021537 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v01.xml0000644000000000000000000000001312446622357021533 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v07.xml0000644000000000000000000000001312446622357021541 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v02.xml0000644000000000000000000000001312446622357021534 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P22/out/ibm22v03.xml0000644000000000000000000000001312446622357021535 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/0000755000000000000000000000000012446622357016744 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/ibm11v02.xml0000644000000000000000000000034112446622357020725 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/ibm11v03.xml0000644000000000000000000000024412446622357020730 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/ibm11v04.xml0000644000000000000000000000025112446622357020727 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/student.dtd0000644000000000000000000000012012446622357021120 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/ibm11v01.xml0000644000000000000000000000036212446622357020727 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/out/0000755000000000000000000000000012446622357017553 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/out/ibm11v02.xml0000644000000000000000000000004712446622357021537 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/out/ibm11v03.xml0000644000000000000000000000004712446622357021540 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/out/ibm11v04.xml0000644000000000000000000000004712446622357021541 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P11/out/ibm11v01.xml0000644000000000000000000000004712446622357021536 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/0000755000000000000000000000000012446622357016747 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/ibm14v02.xml0000644000000000000000000000040412446622357020733 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/ibm14v03.xml0000644000000000000000000000050412446622357020735 0ustar0000000000000000 ]> This is a testxmlhtml-0.2.3.4/test/resources/ibm/valid/P14/ibm14v01.xml0000644000000000000000000000035212446622357020734 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/out/0000755000000000000000000000000012446622357017556 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/out/ibm14v02.xml0000644000000000000000000000006212446622357021542 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/valid/P14/out/ibm14v03.xml0000644000000000000000000000007112446622357021543 0ustar0000000000000000This is a testxmlhtml-0.2.3.4/test/resources/ibm/valid/P14/out/ibm14v01.xml0000644000000000000000000000004012446622357021535 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/0000755000000000000000000000000012446622357016750 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/ibm15v01.xml0000644000000000000000000000024612446622357020740 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/ibm15v02.xml0000644000000000000000000000022212446622357020733 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/ibm15v03.xml0000644000000000000000000000022212446622357020734 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/ibm15v04.xml0000644000000000000000000000025412446622357020742 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/out/0000755000000000000000000000000012446622357017557 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/out/ibm15v01.xml0000644000000000000000000000004712446622357021546 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/out/ibm15v02.xml0000644000000000000000000000004712446622357021547 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/out/ibm15v03.xml0000644000000000000000000000004712446622357021550 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P15/out/ibm15v04.xml0000644000000000000000000000004712446622357021551 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/0000755000000000000000000000000012446622357016745 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/ibm12v02.xml0000644000000000000000000000027112446622357020731 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/ibm12v03.xml0000644000000000000000000000027712446622357020740 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/ibm12v04.xml0000644000000000000000000000030612446622357020732 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/ibm12v01.xml0000644000000000000000000000030712446622357020730 0ustar0000000000000000 My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/student.dtd0000644000000000000000000000012012446622357021121 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/out/0000755000000000000000000000000012446622357017554 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/out/ibm12v02.xml0000644000000000000000000000004712446622357021541 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/out/ibm12v03.xml0000644000000000000000000000004712446622357021542 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/out/ibm12v04.xml0000644000000000000000000000004712446622357021543 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P12/out/ibm12v01.xml0000644000000000000000000000004712446622357021540 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P17/0000755000000000000000000000000012446622357016752 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P17/ibm17v01.xml0000644000000000000000000000023712446622357020744 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P17/out/0000755000000000000000000000000012446622357017561 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P17/out/ibm17v01.xml0000644000000000000000000000010512446622357021545 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P03/0000755000000000000000000000000012446622357016745 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P03/ibm03v01.xml0000644000000000000000000000041512446622357020730 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/ibm/valid/P03/out/0000755000000000000000000000000012446622357017554 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P03/out/ibm03v01.xml0000644000000000000000000000007712446622357021543 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/0000755000000000000000000000000012446622357016744 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/ibm20v02.xml0000644000000000000000000000032112446622357020723 0ustar0000000000000000 ]> My Name is SnowMan. This is a test]]>xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/ibm20v01.xml0000644000000000000000000000026712446622357020733 0ustar0000000000000000 ]> My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/out/0000755000000000000000000000000012446622357017553 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/out/ibm20v02.xml0000644000000000000000000000012412446622357021533 0ustar0000000000000000My Name is SnowMan. <testing>This is a test</testing>xmlhtml-0.2.3.4/test/resources/ibm/valid/P20/out/ibm20v01.xml0000644000000000000000000000004712446622357021536 0ustar0000000000000000My Name is SnowMan. xmlhtml-0.2.3.4/test/resources/oasis/0000755000000000000000000000000012446622357015653 5ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p03fail21.xml0000644000000000000000000000000712446622357017773 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p09pass1.dtd0000644000000000000000000000025412446622357017731 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p05fail5.xml0000644000000000000000000000000612446622357017716 0ustar0000000000000000<·A/>xmlhtml-0.2.3.4/test/resources/oasis/p23fail3.xml0000644000000000000000000000006012446622357017714 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail7.xml0000644000000000000000000000000712446622357017717 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p23pass4.xml0000644000000000000000000000010112446622357017744 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p32fail3.xml0000644000000000000000000000005712446622357017722 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail2.xml0000644000000000000000000000000712446622357017712 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p30pass1.dtd0000644000000000000000000000003212446622357017715 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p24fail2.xml0000644000000000000000000000004112446622357017713 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail9.xml0000644000000000000000000000000712446622357017721 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p08fail1.xml0000644000000000000000000000027312446622357017723 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p23pass3.xml0000644000000000000000000000006012446622357017747 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p24fail1.xml0000644000000000000000000000004112446622357017712 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p16fail3.xml0000644000000000000000000000002712446622357017721 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail19.xml0000644000000000000000000000000712446622357020002 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p05fail4.xml0000644000000000000000000000000612446622357017715 0ustar0000000000000000<Ì€A/>xmlhtml-0.2.3.4/test/resources/oasis/p41fail1.xml0000644000000000000000000000011012446622357017706 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p42pass1.xml0000644000000000000000000000001312446622357017744 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p71pass1.xml0000644000000000000000000000020212446622357017746 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p22pass3.xml0000644000000000000000000000006612446622357017754 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p18fail2.xml0000644000000000000000000000003112446622357017715 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p03fail16.xml0000644000000000000000000000000712446622357017777 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p68fail3.xml.html.correct0000644000000000000000000000003212446622357022327 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p39fail4.xml0000644000000000000000000000002612446622357017726 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p22fail2.xml0000644000000000000000000000011212446622357017710 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p14fail2.xml0000644000000000000000000000001712446622357017715 0ustar0000000000000000& xmlhtml-0.2.3.4/test/resources/oasis/p39fail2.xml0000644000000000000000000000002612446622357017724 0ustar0000000000000000contentxmlhtml-0.2.3.4/test/resources/oasis/p18fail1.xml0000644000000000000000000000003112446622357017714 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p43fail1.xml0000644000000000000000000000021012446622357017711 0ustar0000000000000000 CharData"> ]> xmlhtml-0.2.3.4/test/resources/oasis/p25pass2.xml0000644000000000000000000000005712446622357017756 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail25.xml0000644000000000000000000000003212446622357017774 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p16pass3.xml0000644000000000000000000000002612446622357017753 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p55pass1.xml0000644000000000000000000000012712446622357017756 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p05pass1.xml0000644000000000000000000000010012446622357017740 0ustar0000000000000000 <::._-0/> <_:._-0/> <_/> <:/> xmlhtml-0.2.3.4/test/resources/oasis/p49pass1.xml0000644000000000000000000000030612446622357017760 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p02fail11.xml0000644000000000000000000000003212446622357017767 0ustar0000000000000000ÿþ<doc> </doc>xmlhtml-0.2.3.4/test/resources/oasis/p63pass1.dtd0000644000000000000000000000021112446622357017722 0ustar0000000000000000 ]]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail1.xml0000644000000000000000000000000712446622357017711 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p30pass2.dtd0000644000000000000000000000006012446622357017717 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail29.xml0000644000000000000000000000000712446622357020003 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p39pass2.xml0000644000000000000000000000002212446622357017753 0ustar0000000000000000contentxmlhtml-0.2.3.4/test/resources/oasis/p03fail13.xml0000644000000000000000000000000712446622357017774 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p15fail1.xml0000644000000000000000000000002112446622357017710 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p29pass1.xml0000644000000000000000000000040012446622357017751 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail5.xml0000644000000000000000000000000712446622357017715 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p05fail2.xml0000644000000000000000000000000512446622357017712 0ustar0000000000000000<.A/>xmlhtml-0.2.3.4/test/resources/oasis/p02fail6.xml0000644000000000000000000000003212446622357017713 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p64pass1.dtd0000644000000000000000000000047012446622357017732 0ustar0000000000000000 '. These must be balanced, but it is no section keyword is required: ] ]> ]] > ]]> ]]> xmlhtml-0.2.3.4/test/resources/oasis/p02fail30.xml0000644000000000000000000000003212446622357017770 0ustar0000000000000000ÿþ<doc>þÿ</doc>xmlhtml-0.2.3.4/test/resources/oasis/p03fail15.xml0000644000000000000000000000000712446622357017776 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p40fail4.xml0000644000000000000000000000001412446622357017713 0ustar0000000000000000< doc>xmlhtml-0.2.3.4/test/resources/oasis/p41pass1.xml0000644000000000000000000000002512446622357017746 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p02fail22.xml0000644000000000000000000000003212446622357017771 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p31pass2.dtd0000644000000000000000000000022312446622357017721 0ustar0000000000000000"> ]]> %rootel; ]]>xmlhtml-0.2.3.4/test/resources/oasis/p44pass5.xml0000644000000000000000000000005112446622357017754 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/e2.xml0000644000000000000000000000014212446622357016700 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p68fail1.xml0000644000000000000000000000014712446622357017731 0ustar0000000000000000 ]> &ent xmlhtml-0.2.3.4/test/resources/oasis/p10fail1.xml.html.correct0000644000000000000000000000004612446622357022315 0ustar0000000000000000Allowed by relaxed attribute values. xmlhtml-0.2.3.4/test/resources/oasis/p45pass1.xml0000644000000000000000000000013512446622357017754 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/oasis.xml0000644000000000000000000014716512446622357017531 0ustar0000000000000000 various Misc items where they can occur various satisfactions of the Names production in a NAMES attribute various valid Nmtoken 's in an attribute list declaration. various satisfaction of an NMTOKENS attribute value. valid EntityValue's. Except for entity references, markup is not recognized. valid public IDs. XML decl and doctypedecl just doctypedecl S between decls is not required Empty-element tag must be used for element which are declared EMPTY. Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. Valid doctypedecl with ExternalID as an External Entity declaration. Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. Valid types of markupdecl. Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. external subset can be empty Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections. Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. valid element declarations Valid use of contentspec, element content models, and mixed content within an element type declaration. Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. valid Mixed contentspec's. valid AttlistDecls: No AttDef's are required, and the terminating S is optional, multiple ATTLISTS per element are OK, and multiple declarations of the same attribute are OK. a valid AttDef the three kinds of attribute types StringType = "CDATA" the 7 tokenized attribute types enumerated types are NMTOKEN or NOTATION lists NOTATION enumeration has on or more items NMTOKEN enumerations haveon or more items the four types of default values valid conditional sections are INCLUDE and IGNORE valid INCLUDE sections -- options S before and after keyword, sections can nest valid IGNORE sections IGNOREd sections ignore everything except section delimiters Valid entity references. Also ensures that a charref to '&' isn't interpreted as an entity reference open delimiter Valid PEReferences. An EntityDecl is either a GEDecl or a PEDecl Valid GEDecls Valid PEDecls EntityDef is either Entity value or an external id, with an optional NDataDecl valid NDataDecls no prolog Misc items after the document all valid S characters names with all valid ASCII characters, and one from each other class in NameChar various valid Name constructions Requires at least one name. at least one Nmtoken is required. an invalid Nmtoken character. valid attribute values valid CharData valid comments File is well-formed, but not valid. An XML document is valid if it has an associated document type declaration and if the document complies with the constraints expressed in it. Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. valid CDSect's. Note that a CDStart in a CDSect is not recognized as such prolog can be empty XML declaration only XML decl and Misc Test shows a valid XML declaration along with version info. Test shows a valid XML declaration along with encoding declaration. Test shows a valid XML declaration along with Standalone Document Declaration. Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. Test shows a prolog that has the VersionInfo delimited by double quotes. Test shows a prolog that has the VersionInfo delimited by single quotes. Test shows whitespace is allowed in prolog before version info. Test shows whitespace is allowed in prolog on both sides of equal sign. Test shows whitespace is NOT necessary before or after equal sign of versioninfo. Test shows whitespace can be used on both sides of equal sign of versioninfo. The valid version number. We cannot test others because a 1.0 processor is allowed to fail them. Comments are valid as the Misc part of the prolog. Processing Instructions are valid as the Misc part of the prolog. Whitespace is valid as the Misc part of the prolog. A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. Double quotes can be used as delimeters for the value of a Standalone Document Declaration. Single quotes can be used as delimeters for the value of a Standalone Document Declaration. Empty element tag may be used for any element which has no content. Character data is valid element content. Elements content can be empty. Whitespace is valid within a Start-tag. Attributes are valid within a Start-tag. Whitespace and Multiple Attributes are valid within a Start-tag. Attributes are valid within a Start-tag. Whitespace is valid within a Start-tags Attribute. Test shows proper syntax for an End-tag. Whitespace is valid after name in End-tag. Valid display of an Empty Element Tag. Empty Element Tags can contain an Attribute. Whitespace is valid in an Empty Element Tag following the end of the attribute value. Whitespace is valid after the name in an Empty Element Tag. Whitespace and Multiple Attributes are valid in an Empty Element Tag. valid character references PEDef is either an entity value or an external id valid external identifiers Validity Constraint: No duplicate tokens S cannot occur before the prolog comments cannot occur before the prolog only one document element document element must be complete. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Use of illegal character within XML document. Name contains invalid character. Name contains invalid character. Name contains invalid character. a Name cannot start with a digit a Name cannot start with a '.' a Name cannot start with a "-" a Name cannot start with a CombiningChar a Name cannot start with an Extender EntityValue excludes '%' EntityValue excludes '&' incomplete character reference quote types must match quote types must match attribute values exclude '<' attribute values exclude '&' quote types must match quote types must match cannot contain delimiting quotes '"' excluded '\' excluded entity references excluded '>' excluded '<' excluded built-in entity refs excluded The public ID has a tab character, which is disallowed '<' excluded '&' excluded "]]>" excluded comments can't end in '-' one comment per comment (contrasted with SGML) can't include 2 or more adjacent '-'s "xml" is an invalid PITarget a PITarget must be present no space before "CDATA" no space after "CDATA" CDSect's can't nest prolog must start with XML decl prolog must start with XML decl "xml" must be lower-case VersionInfo must be supplied VersionInfo must come first SDDecl must come last no SGML-type PIs quote types must match quote types must match Comment is illegal in VersionInfo. Illegal character in VersionNum. Illegal character in VersionNum. References aren't allowed in Misc, even if they would resolve to valid Misc. only declarations in DTD. A processor must not pass unknown declaration types. An XML declaration is not the same as a TextDecl external subset excludes doctypedecl quote types must match quote types must match initial S is required quotes are required yes or no must be lower case start-tag requires end-tag end-tag requires start-tag XML documents contain one or more elements XML declarations must be correctly terminated XML declarations must be correctly terminated S is required between attributes tags start with names, not nmtokens tags start with names, not nmtokens no space before name quotes are required (contrast with SGML) attribute name is required (contrast with SGML) Eq required no space before name cannot end with "/>" no NET (contrast with SGML) no non-comment declarations no conditional sections no conditional sections Illegal space before Empty element tag. Illegal space after Empty element tag. Illegal comment in Empty element tag. Whitespace required between attributes. Duplicate attribute name is illegal. ELEMENT must be upper case. S before contentspec is required. only one content spec no comments in declarations (contrast with SGML) no parens on declared content no inclusions (contrast with SGML) no exclusions (contrast with SGML) no space before occurrence single group can't be both declared and modeled Invalid operator '|' must match previous operator ',' Illegal character '-' in Element-content model Optional character must follow a name or list Illegal space before optional character Illegal space before optional character Illegal space before optional character connectors must match connectors must match occurrence on #PCDATA group must be * occurrence on #PCDATA group must be * #PCDATA must come first occurrence on #PCDATA group must be * only '|' connectors Only '|' connectors and occurrence on #PCDATA group must be * no nested groups A name is required A name is required S is required before default S is required before type type is required default is required name is requried don't pass unknown attribute types must be upper case no IDS type no NUMBER type no NAME type no ENTITYS type - types must be upper case types must be upper case no keyword for NMTOKEN enumeration at least one value required separator must be '|' notations are NAMEs, not NMTOKENs -- note: Leaving the invalid notation undeclared would cause a validating parser to fail without checking the name syntax, so the notation is declared with an invalid name. A parser that reports error positions should report an error at the AttlistDecl on line 6, before reaching the notation declaration. NOTATION must be upper case S after keyword is required parentheses are require values are unquoted values are unquoted at least one required separator must be "," values are unquoted keywords must be upper case S is required after #FIXED only #FIXED has both keyword and value #FIXED required value only one default type no other types, including TEMP, which is valid in SGML INCLUDE must be upper case no spaces in terminating delimiter IGNORE must be upper case delimiters must be balanced section delimiters must balance section delimiters must balance terminating ';' is required no S after '&#' no hex digits in numeric reference only hex digits in hex references no references to non-characters no references to non-characters terminating ';' is required no S after '&' no S before ';' terminating ';' is required no S after '%' no S before ';' This is neither S is required before EntityDef Entity name is a Name, not an NMToken no S after "<!" S is required after "<!ENTITY" S is required after "<!ENTITY" S is required after '%' S is required after name Entity name is a name, not an NMToken No typed replacement text Only one replacement value No NDataDecl on replacement text Value is required No NDataDecl without value no NDataDecls on parameter entities value is required only one value S required after "PUBLIC" S required after "SYSTEM" S required between literals "SYSTEM" implies only one literal only one keyword "PUBLIC" requires two literals (contrast with SGML) S is required before "NDATA" "NDATA" is upper-case notation name is required notation names are Names system literals may not contain URI fragments xmlhtml-0.2.3.4/test/resources/oasis/p39pass1.xml0000644000000000000000000000000612446622357017754 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p31pass1.xml0000644000000000000000000000010512446622357017744 0ustar0000000000000000]> xmlhtml-0.2.3.4/test/resources/oasis/p44pass3.xml0000644000000000000000000000002612446622357017754 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p44fail5.xml0000644000000000000000000000003212446622357017720 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p66fail1.xml.html.correct0000644000000000000000000000003212446622357022323 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p14pass1.xml0000644000000000000000000000005712446622357017753 0ustar0000000000000000a%b%</doc></doc>]]<& xmlhtml-0.2.3.4/test/resources/oasis/p23pass2.xml0000644000000000000000000000006012446622357017746 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail20.xml0000644000000000000000000000003212446622357017767 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p02fail23.xml0000644000000000000000000000003212446622357017772 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p02fail9.xml0000644000000000000000000000003212446622357017716 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p03fail8.xml0000644000000000000000000000000712446622357017720 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p39fail5.xml0000644000000000000000000000013412446622357017727 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p26pass1.xml0000644000000000000000000000036012446622357017753 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail29.xml0000644000000000000000000000003212446622357020000 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p02fail21.xml0000644000000000000000000000003212446622357017770 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p02fail3.xml0000644000000000000000000000003212446622357017710 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p03fail3.xml0000644000000000000000000000000712446622357017713 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p22pass1.xml0000644000000000000000000000001012446622357017737 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p05fail3.xml0000644000000000000000000000000512446622357017713 0ustar0000000000000000<-A/>xmlhtml-0.2.3.4/test/resources/oasis/p44fail3.xml.html.correct0000644000000000000000000000005312446622357022324 0ustar0000000000000000Dashes are allowed in HTML attribute names.xmlhtml-0.2.3.4/test/resources/oasis/p62pass1.dtd0000644000000000000000000000021012446622357017720 0ustar0000000000000000 ]]>]]> xmlhtml-0.2.3.4/test/resources/oasis/p12pass1.xml0000644000000000000000000000050312446622357017745 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p32fail5.xml0000644000000000000000000000006012446622357017716 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail1.xml0000644000000000000000000000003212446622357017706 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p18fail3.xml0000644000000000000000000000012312446622357017720 0ustar0000000000000000 ]]> xmlhtml-0.2.3.4/test/resources/oasis/p06pass1.xml0000644000000000000000000000043112446622357017750 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail28.xml0000644000000000000000000000000712446622357020002 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p57pass1.xml0000644000000000000000000000033412446622357017760 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail10.xml0000644000000000000000000000000712446622357017771 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p43fail2.xml0000644000000000000000000000024212446622357017717 0ustar0000000000000000 CharData"> ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail26.xml0000644000000000000000000000000712446622357020000 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p11fail2.xml0000644000000000000000000000023412446622357017713 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p28pass2.xml0000644000000000000000000000007212446622357017756 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail25.xml0000644000000000000000000000000712446622357017777 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p52pass1.xml0000644000000000000000000000057712446622357017764 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p44fail2.xml0000644000000000000000000000000712446622357017717 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p61pass1.xml0000644000000000000000000000005412446622357017752 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p44fail1.xml0000644000000000000000000000000712446622357017716 0ustar0000000000000000< doc/>xmlhtml-0.2.3.4/test/resources/oasis/p72pass1.xml0000644000000000000000000000023212446622357017752 0ustar0000000000000000 "> " > ]> xmlhtml-0.2.3.4/test/resources/oasis/p68pass1.xml0000644000000000000000000000030012446622357017753 0ustar0000000000000000 ]> &ent;aaa&ent; &en xmlhtml-0.2.3.4/test/resources/oasis/p30pass2.xml0000644000000000000000000000005612446622357017751 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p73pass1.xml0000644000000000000000000000031312446622357017753 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p27pass3.xml0000644000000000000000000000004712446622357017760 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p27pass1.xml0000644000000000000000000000024312446622357017754 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail24.xml0000644000000000000000000000000712446622357017776 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p66fail2.xml.html.correct0000644000000000000000000000003212446622357022324 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p40pass2.xml0000644000000000000000000000002012446622357017741 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p28fail1.xml.correct0000644000000000000000000000014012446622357021356 0ustar0000000000000000Correctly allow this as an empty document (no DTD parsing, and empty doc content is allowed). xmlhtml-0.2.3.4/test/resources/oasis/p28fail1.xml0000644000000000000000000000006312446622357017722 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p22pass6.xml0000644000000000000000000000010712446622357017753 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p68fail3.xml0000644000000000000000000000015112446622357017726 0ustar0000000000000000 ]> &ent ; xmlhtml-0.2.3.4/test/resources/oasis/p42fail1.xml0000644000000000000000000000001412446622357017712 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p28pass3.xml0000644000000000000000000000012212446622357017753 0ustar0000000000000000"> %eldecl; ]> xmlhtml-0.2.3.4/test/resources/oasis/p41fail1.xml.html.correct0000644000000000000000000000004112446622357022314 0ustar0000000000000000HTML allows unquoted attributes xmlhtml-0.2.3.4/test/resources/oasis/p40pass1.xml0000644000000000000000000000001312446622357017742 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p04fail3.xml0000644000000000000000000000000712446622357017714 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p42fail3.xml0000644000000000000000000000001112446622357017711 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p32pass1.xml0000644000000000000000000000006012446622357017745 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p61pass1.dtd0000644000000000000000000000021412446622357017723 0ustar0000000000000000 ]]>]]> xmlhtml-0.2.3.4/test/resources/oasis/p44fail4.xml0000644000000000000000000000003312446622357017720 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p43pass1.xml.incorrect0000644000000000000000000000005012446622357021735 0ustar0000000000000000DTD-declared entity. Expected failure xmlhtml-0.2.3.4/test/resources/oasis/p32fail2.xml0000644000000000000000000000006012446622357017713 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p31pass1.dtd0000644000000000000000000000000012446622357017711 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p16fail1.xml0000644000000000000000000000003512446622357017716 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p44pass2.xml0000644000000000000000000000002012446622357017745 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p41fail2.xml.html.correct0000644000000000000000000000003612446622357022321 0ustar0000000000000000HTML allows empty attributes xmlhtml-0.2.3.4/test/resources/oasis/p69pass1.xml0000644000000000000000000000014312446622357017761 0ustar0000000000000000 "> %pe;%pe; ]> xmlhtml-0.2.3.4/test/resources/oasis/p23pass1.xml0000644000000000000000000000003712446622357017751 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail31.xml0000644000000000000000000000003212446622357017771 0ustar0000000000000000ÿþ<doc>ÿÿ</doc>xmlhtml-0.2.3.4/test/resources/oasis/p10fail2.xml0000644000000000000000000000002012446622357017703 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p66fail2.xml0000644000000000000000000000002112446622357017717 0ustar0000000000000000&# 65;xmlhtml-0.2.3.4/test/resources/oasis/p02fail19.xml0000644000000000000000000000003212446622357017777 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p03fail23.xml0000644000000000000000000000000712446622357017775 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p76pass1.xml0000644000000000000000000000030012446622357017752 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p03fail17.xml0000644000000000000000000000000712446622357020000 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p24pass4.xml0000644000000000000000000000004112446622357017750 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail5.xml0000644000000000000000000000003212446622357017712 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p44fail3.xml0000644000000000000000000000002612446622357017721 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p22pass5.xml0000644000000000000000000000014612446622357017755 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p01pass3.xml0000644000000000000000000000037012446622357017747 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail15.xml0000644000000000000000000000003212446622357017773 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p04fail2.xml0000644000000000000000000000000712446622357017713 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p18fail3.xml.correct0000644000000000000000000000012212446622357021357 0ustar0000000000000000This is accepted not because CDATA nests, but because we accept ]]> in char data xmlhtml-0.2.3.4/test/resources/oasis/p02fail26.xml0000644000000000000000000000003212446622357017775 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p02fail10.xml0000644000000000000000000000003212446622357017766 0ustar0000000000000000ÿþ<doc> </doc>xmlhtml-0.2.3.4/test/resources/oasis/p16pass1.xml0000644000000000000000000000016612446622357017756 0ustar0000000000000000 &a%b&#c?> ?> xmlhtml-0.2.3.4/test/resources/oasis/p02fail28.xml0000644000000000000000000000003212446622357017777 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p28pass1.xml0000644000000000000000000000007212446622357017755 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p46pass1.xml0000644000000000000000000000016112446622357017754 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p68pass1.xml.incorrect0000644000000000000000000000005712446622357021753 0ustar0000000000000000Expected failure. DTD declares new entities. xmlhtml-0.2.3.4/test/resources/oasis/p28pass5.dtd0000644000000000000000000000001612446622357017732 0ustar0000000000000000%rootdecl; xmlhtml-0.2.3.4/test/resources/oasis/p23fail5.xml0000644000000000000000000000003612446622357017721 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p27fail1.xml.correct0000644000000000000000000000005412446622357021361 0ustar0000000000000000This is allowed because of multiple roots. xmlhtml-0.2.3.4/test/resources/oasis/p56pass1.xml0000644000000000000000000000067112446622357017763 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p24pass1.xml0000644000000000000000000000003712446622357017752 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p27fail1.xml0000644000000000000000000000004612446622357017722 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p64pass1.xml0000644000000000000000000000005612446622357017757 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p66fail4.xml0000644000000000000000000000002112446622357017721 0ustar0000000000000000G;xmlhtml-0.2.3.4/test/resources/oasis/p60pass1.xml0000644000000000000000000000045612446622357017757 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p28pass4.dtd0000644000000000000000000000002612446622357017732 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p63pass1.xml0000644000000000000000000000005412446622357017754 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p26fail1.xml0000644000000000000000000000004012446622357017713 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p01pass2.xml0000644000000000000000000000112012446622357017740 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p59pass1.xml0000644000000000000000000000024112446622357017757 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p66fail3.xml.html.correct0000644000000000000000000000003212446622357022325 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p31pass2.xml0000644000000000000000000000005612446622357017752 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail22.xml0000644000000000000000000000000712446622357017774 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p40fail2.xml0000644000000000000000000000002512446622357017713 0ustar0000000000000000<3notname>xmlhtml-0.2.3.4/test/resources/oasis/p02fail8.xml0000644000000000000000000000003212446622357017715 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p68fail2.xml.html.correct0000644000000000000000000000003212446622357022326 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p41fail3.xml0000644000000000000000000000002512446622357017715 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p02fail4.xml0000644000000000000000000000003212446622357017711 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p24pass3.xml0000644000000000000000000000005212446622357017751 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p25pass1.xml0000644000000000000000000000003712446622357017753 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p25fail1.xml0000644000000000000000000000006312446622357017717 0ustar0000000000000000 ="1.0"?> xmlhtml-0.2.3.4/test/resources/oasis/p03fail18.xml0000644000000000000000000000000712446622357020001 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p75pass1.xml0000644000000000000000000000030412446622357017755 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p66fail4.xml.html.correct0000644000000000000000000000003212446622357022326 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p44pass4.xml0000644000000000000000000000001412446622357017752 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p23fail1.xml0000644000000000000000000000003712446622357017716 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p07pass1.xml0000644000000000000000000000014712446622357017755 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p39fail1.xml0000644000000000000000000000001412446622357017720 0ustar0000000000000000contentxmlhtml-0.2.3.4/test/resources/oasis/p05fail1.xml0000644000000000000000000000000512446622357017711 0ustar0000000000000000<0A/>xmlhtml-0.2.3.4/test/resources/oasis/p66fail5.xml0000644000000000000000000000001712446622357017727 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p58pass1.xml0000644000000000000000000000034712446622357017765 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p01fail3.xml.correct0000644000000000000000000000005112446622357021350 0ustar0000000000000000We allow multiple roots as an extension xmlhtml-0.2.3.4/test/resources/oasis/p02fail27.xml0000644000000000000000000000003212446622357017776 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p41fail2.xml0000644000000000000000000000010412446622357017712 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p02fail13.xml0000644000000000000000000000003212446622357017771 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p08pass1.xml0000644000000000000000000000025512446622357017756 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p01fail4.xml0000644000000000000000000000000512446622357017710 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p04pass1.xml0000644000000000000000000000015112446622357017745 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p10fail2.xml.html.correct0000644000000000000000000000004612446622357022316 0ustar0000000000000000Allowed by relaxed attribute values. xmlhtml-0.2.3.4/test/resources/oasis/p03pass1.xml0000644000000000000000000000001212446622357017740 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail20.xml0000644000000000000000000000000712446622357017772 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p01fail1.xml0000644000000000000000000000042112446622357017707 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail11.xml0000644000000000000000000000000712446622357017772 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p14fail3.xml.correct0000644000000000000000000000006112446622357021355 0ustar0000000000000000We accept this as a documented extension to XML xmlhtml-0.2.3.4/test/resources/oasis/p14fail3.xml0000644000000000000000000000002212446622357017712 0ustar0000000000000000a]]>b xmlhtml-0.2.3.4/test/resources/oasis/p16pass2.xml0000644000000000000000000000002612446622357017752 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p74pass1.xml0000644000000000000000000000015212446622357017755 0ustar0000000000000000"> ]> xmlhtml-0.2.3.4/test/resources/oasis/p23fail2.xml0000644000000000000000000000004212446622357017713 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p14fail2.xml.html.correct0000644000000000000000000000006312446622357022321 0ustar0000000000000000Correct in HTML due to relaxed & in content rules xmlhtml-0.2.3.4/test/resources/oasis/p27pass4.xml0000644000000000000000000000014312446622357017756 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p16fail2.xml0000644000000000000000000000001412446622357017714 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p08fail2.xml0000644000000000000000000000030412446622357017717 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p26fail2.xml0000644000000000000000000000004012446622357017714 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail27.xml0000644000000000000000000000000712446622357020001 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p47pass1.xml0000644000000000000000000000026412446622357017761 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p24pass2.xml0000644000000000000000000000003712446622357017753 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p51pass1.xml0000644000000000000000000000023512446622357017752 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p53pass1.xml0000644000000000000000000000012712446622357017754 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p30pass1.xml0000644000000000000000000000005612446622357017750 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p68fail2.xml0000644000000000000000000000015112446622357017725 0ustar0000000000000000 ]> & ent; xmlhtml-0.2.3.4/test/resources/oasis/p09pass1.xml0000644000000000000000000000005412446622357017754 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p54pass1.xml0000644000000000000000000000033112446622357017752 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p32pass2.xml0000644000000000000000000000005712446622357017754 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p66fail1.xml0000644000000000000000000000001712446622357017723 0ustar0000000000000000Axmlhtml-0.2.3.4/test/resources/oasis/p02fail14.xml0000644000000000000000000000003212446622357017772 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p66pass1.xml0000644000000000000000000000012112446622357017752 0ustar0000000000000000 A AOO 􏋬 xmlhtml-0.2.3.4/test/resources/oasis/p32fail4.xml0000644000000000000000000000005612446622357017722 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p01pass1.xml0000644000000000000000000000004112446622357017740 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p27pass2.xml0000644000000000000000000000004712446622357017757 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p42fail2.xml0000644000000000000000000000001412446622357017713 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p40fail1.xml0000644000000000000000000000004012446622357017707 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p02fail7.xml0000644000000000000000000000003212446622357017714 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p18pass1.xml0000644000000000000000000000013612446622357017755 0ustar0000000000000000] ]> ]]]> xmlhtml-0.2.3.4/test/resources/oasis/p40pass4.xml0000644000000000000000000000006012446622357017747 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p04fail1.xml0000644000000000000000000000000712446622357017712 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p10fail1.xml0000644000000000000000000000002212446622357017704 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p40pass3.xml0000644000000000000000000000002512446622357017747 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p15pass1.xml0000644000000000000000000000011112446622357017743 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p40fail3.xml0000644000000000000000000000002412446622357017713 0ustar0000000000000000<3notname>xmlhtml-0.2.3.4/test/resources/oasis/p66fail6.xml0000644000000000000000000000003312446622357017726 0ustar0000000000000000��xmlhtml-0.2.3.4/test/resources/oasis/p02fail18.xml0000644000000000000000000000003212446622357017776 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p22fail1.xml0000644000000000000000000000004112446622357017710 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p03fail14.xml0000644000000000000000000000000712446622357017775 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p44pass1.xml0000644000000000000000000000000612446622357017750 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p22pass2.xml0000644000000000000000000000003712446622357017751 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p66fail3.xml0000644000000000000000000000001712446622357017725 0ustar0000000000000000&#A;xmlhtml-0.2.3.4/test/resources/oasis/p11pass1.xml0000644000000000000000000000042712446622357017751 0ustar0000000000000000 ?>/\''"> ]> xmlhtml-0.2.3.4/test/resources/oasis/p68fail1.xml.html.correct0000644000000000000000000000003212446622357022325 0ustar0000000000000000Valid in HTML (literal &) xmlhtml-0.2.3.4/test/resources/oasis/p02fail16.xml0000644000000000000000000000003212446622357017774 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p06fail1.xml0000644000000000000000000000052012446622357017714 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p50pass1.xml0000644000000000000000000000030412446622357017746 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p28pass4.xml0000644000000000000000000000005612446622357017762 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p01fail3.xml0000644000000000000000000000034312446622357017714 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail2.xml0000644000000000000000000000003212446622357017707 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p22pass4.xml0000644000000000000000000000017512446622357017756 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p23fail4.xml0000644000000000000000000000010112446622357017711 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p15fail3.xml0000644000000000000000000000002412446622357017715 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p62pass1.xml0000644000000000000000000000005412446622357017753 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p41pass2.xml0000644000000000000000000000003412446622357017747 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p70pass1.xml0000644000000000000000000000020512446622357017750 0ustar0000000000000000 "> ]> xmlhtml-0.2.3.4/test/resources/oasis/p28pass5.xml0000644000000000000000000000021212446622357017755 0ustar0000000000000000 "> ]> xmlhtml-0.2.3.4/test/resources/oasis/p11fail1.xml0000644000000000000000000000023412446622357017712 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p02fail24.xml0000644000000000000000000000003212446622357017773 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p43pass1.xml0000644000000000000000000000054612446622357017760 0ustar0000000000000000 CharData"> ]> CharData CharData &ent;" CharData ]]> CharData &ent;" CharData ]]> &ent;" CharData xmlhtml-0.2.3.4/test/resources/oasis/p03fail4.xml0000644000000000000000000000000712446622357017714 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p48pass1.xml0000644000000000000000000000036712446622357017766 0ustar0000000000000000 ]> xmlhtml-0.2.3.4/test/resources/oasis/p01fail2.xml0000644000000000000000000000044112446622357017712 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p02fail12.xml0000644000000000000000000000003212446622357017770 0ustar0000000000000000ÿþ<doc></doc>xmlhtml-0.2.3.4/test/resources/oasis/p14fail1.xml0000644000000000000000000000001712446622357017714 0ustar0000000000000000< xmlhtml-0.2.3.4/test/resources/oasis/p10pass1.xml0000644000000000000000000000011012446622357017735 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p42pass2.xml0000644000000000000000000000001712446622357017751 0ustar0000000000000000xmlhtml-0.2.3.4/test/resources/oasis/p32fail1.xml0000644000000000000000000000006012446622357017712 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p43fail3.xml0000644000000000000000000000024312446622357017721 0ustar0000000000000000 CharData"> ]> xmlhtml-0.2.3.4/test/resources/oasis/p15fail2.xml0000644000000000000000000000002612446622357017716 0ustar0000000000000000 xmlhtml-0.2.3.4/test/resources/oasis/p10fail3.xml0000644000000000000000000000002012446622357017704 0ustar0000000000000000 Assertion oasisNotWF name = do src <- B.readFile name assertBool ("not-wf parse " ++ name) $ isLeft (parseXML name src) where isLeft (Left _) = True isLeft _ = False oasisWF :: String -> Assertion oasisWF name = do src <- B.readFile name assertBool ("wf parse " ++ name) $ isRight (parseXML name src) where isRight (Right _) = True isRight _ = False oasisRerender :: String -> Assertion oasisRerender name = do src <- B.readFile name let Right d = parseXML "" src let src2 = toByteString (render d) let Right d2 = parseXML "" src2 assertEqual ("rerender " ++ name) d d2 hOasisNotWF :: String -> Assertion hOasisNotWF name = do src <- B.readFile name assertBool ("not-wf parse " ++ name) $ isLeft (parseHTML name src) where isLeft (Left _) = True isLeft _ = False hOasisWF :: String -> Assertion hOasisWF name = do src <- B.readFile name assertBool ("wf parse " ++ name) $ isRight (parseHTML name src) where isRight (Right _) = True isRight _ = False hOasisRerender :: String -> Assertion hOasisRerender name = do src <- B.readFile name let Right d = parseHTML "" src let src2 = toByteString (render d) let Right d2 = parseHTML "" src2 assertEqual ("rerender " ++ name) d d2 xmlhtml-0.2.3.4/test/suite/Text/XmlHtml/CursorTests.hs0000644000000000000000000004174412446622357021033 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.CursorTests (cursorTests) where import Data.Maybe import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test, Node) import Text.XmlHtml import Text.XmlHtml.Cursor import Text.XmlHtml.TestCommon ------------------------------------------------------------------------------ -- Tests of navigating with the Cursor type ---------------------------------- ------------------------------------------------------------------------------ cursorTests :: [Test] cursorTests = [ testIt "fromNodeAndCurrent " $ fromNodeAndCurrent, testIt "fromNodesAndSiblings " $ fromNodesAndSiblings, testIt "leftSiblings " $ leftSiblings, testIt "emptyFromNodes " $ emptyFromNodes, testIt "cursorNEQ " $ cursorNEQ, testCase "cursorNavigation " $ cursorNavigation, testCase "cursorSearch " $ cursorSearch, testCase "cursorMutation " $ cursorMutation, testCase "cursorInsertion " $ cursorInsertion, testCase "cursorDeletion " $ cursorDeletion ] fromNodeAndCurrent :: Bool fromNodeAndCurrent = all (\n -> n == current (fromNode n)) ns where ns = [ TextNode "foo", Comment "bar", Element "foo" [] [], Element "root" [] [ TextNode "foo", Comment "bar", Element "foo" [] [] ] ] fromNodesAndSiblings :: Bool fromNodesAndSiblings = n == siblings (fromJust $ fromNodes n) where n = [ TextNode "foo", Comment "bar", Element "foo" [] [], Element "root" [] [ TextNode "foo", Comment "bar", Element "foo" [] [] ] ] leftSiblings :: Bool leftSiblings = fromJust $ do r <- do c1 <- fromNodes n c2 <- right c1 c3 <- right c2 return c3 return (n == siblings r) where n = [ TextNode "foo", Comment "bar", Element "foo" [] [], Element "root" [] [ TextNode "foo", Comment "bar", Element "foo" [] [] ] ] emptyFromNodes :: Bool emptyFromNodes = isNothing (fromNodes []) cursorNEQ :: Bool cursorNEQ = let a = fromNode (Element "a" [] []) b = fromNode (Element "b" [] []) in a /= b -- Sample node structure for running cursor tests. cursorTestTree :: Node cursorTestTree = Element "department" [("code", "A17")] [ Element "employee" [("name", "alice")] [ Element "address" [] [ TextNode "124 My Road" ], Element "phone" [] [ TextNode "555-1234" ] ], Element "employee" [("name", "bob")] [ Comment "My best friend", Element "address" [] [ TextNode "123 My Road" ], Element "temp" [] [] ], Element "employee" [("name", "camille")] [ Element "phone" [] [ TextNode "800-888-8888" ] ] ] cursorNavigation :: Assertion cursorNavigation = do let r = fromNode cursorTestTree let Just e1 = firstChild r let Just e2 = getChild 1 r let Just e3 = lastChild r assertBool "rootElem" $ isElement (current r) assertBool "parent of root" $ isNothing (parent r) assertBool "getChild bounds" $ isNothing (getChild 3 r) assertBool "getChild negative bounds" $ isNothing (getChild (-1) r) assertBool "firstChild" $ getAttribute "name" (current e1) == Just "alice" assertBool "childAt 1 " $ getAttribute "name" (current e2) == Just "bob" assertBool "lastChild " $ getAttribute "name" (current e3) == Just "camille" do let Just a = lastChild e2 assertBool "firstChild on empty element" $ isNothing (firstChild a) assertBool "getChild on empty element" $ isNothing (getChild 0 a) assertBool "lastChild on empty element" $ isNothing (lastChild a) do let Just a = right e1 let Just b = right a assertBool "two paths #1" $ a == e2 assertBool "two paths #2" $ b == e3 assertBool "right off end" $ isNothing (right b) let Just c = left e3 let Just d = left e2 assertBool "two paths #3" $ c == e2 assertBool "two paths #4" $ d == e1 assertBool "left off end" $ isNothing (left d) do let Just r1 = parent e2 assertEqual "child -> parent" (current r) (current r1) do let Just cmt = firstChild e2 assertBool "topNode" $ tagName (topNode cmt) == Just "department" assertBool "topNodes" $ map tagName (topNodes cmt) == [ Just "department" ] assertBool "first child of comment" $ isNothing (firstChild cmt) assertBool "last child of comment" $ isNothing (lastChild cmt) do assertBool "nextDF down" $ nextDF r == Just e1 let Just cmt = firstChild e2 assertBool "nextDF right" $ nextDF cmt == right cmt let Just em = lastChild e2 assertBool "nextDF up-right" $ nextDF em == Just e3 let Just pelem = lastChild e3 let Just ptext = lastChild pelem assertBool "nextDF end" $ isNothing (nextDF ptext) cursorSearch :: Assertion cursorSearch = do let r = fromNode cursorTestTree let Just e1 = findChild isFirst r let Just e2 = findChild ((==(Just "bob")) . getAttribute "name" . current) r let Just e3 = findChild isLast r assertBool "findChild isFirst" $ getAttribute "name" (current e1) == Just "alice" assertBool "findChild" $ getAttribute "name" (current e2) == Just "bob" assertBool "findChild isLast" $ getAttribute "name" (current e3) == Just "camille" assertBool "findLeft Just" $ findLeft (const True) e2 == Just e1 assertBool "findLeft Nothing" $ findLeft (const False) e2 == Nothing assertBool "findRight Just" $ findRight (const True) e2 == Just e3 assertBool "findRight Nothing" $ findRight (const False) e2 == Nothing assertBool "findRec" $ findRec (not . hasChildren) r == (firstChild =<< firstChild e1) assertBool "isChild true" $ isChild e1 assertBool "isChild false" $ not $ isChild r assertBool "getNodeIndex" $ getNodeIndex e2 == 1 cursorMutation :: Assertion cursorMutation = do let r = fromNode cursorTestTree let Just e1 = firstChild r let Just e2 = right e1 let Just e3 = lastChild r do let Just cmt = firstChild e2 let cmt' = setNode (Comment "Not my friend any more") cmt let Just e2' = parent cmt' assertBool "setNode" $ current e2' == Element "employee" [("name", "bob")] [ Comment "Not my friend any more", Element "address" [] [ TextNode "123 My Road" ], Element "temp" [] [] ] do let e1' = modifyNode (setAttribute "name" "bryan") e1 let n = current e1' assertBool "modifyNode" $ getAttribute "name" n == Just "bryan" do let myModifyM = return . setAttribute "name" "chelsea" e3' <- modifyNodeM myModifyM e3 let n = current e3' assertBool "modifyNode" $ getAttribute "name" n == Just "chelsea" cursorInsertion :: Assertion cursorInsertion = do let r = fromNode cursorTestTree let Just alice = firstChild r let Just bob = getChild 1 r let Just camille = lastChild r let fred = Element "employee" [("name", "fred")] [] -- Stock insertLeft do let ins = insertLeft fred bob assertBool "insertLeft leaves cursor" $ getAttribute "name" (current ins) == Just "bob" let Just a = findLeft isFirst ins assertBool "insertLeft 1" $ getAttribute "name" (current a) == Just "alice" let Just b = right a assertBool "insertLeft 2" $ getAttribute "name" (current b) == Just "fred" let Just c = right b assertBool "insertLeft 3" $ getAttribute "name" (current c) == Just "bob" let Just d = right c assertBool "insertLeft 4" $ getAttribute "name" (current d) == Just "camille" -- insertLeft on first child do let ins = insertLeft fred alice assertBool "insertLeft firstChild" $ getAttribute "name" (current ins) == Just "alice" let Just a = findLeft isFirst ins assertBool "insertLeft firstChild 1" $ getAttribute "name" (current a) == Just "fred" -- Stock insertRight do let ins = insertRight fred alice assertBool "insertRight leaves cursor" $ getAttribute "name" (current ins) == Just "alice" let Just a = findRight isLast ins assertBool "insertRight 1" $ getAttribute "name" (current a) == Just "camille" let Just b = left a assertBool "insertRight 2" $ getAttribute "name" (current b) == Just "bob" let Just c = left b assertBool "insertRight 3" $ getAttribute "name" (current c) == Just "fred" let Just d = left c assertBool "insertRight 4" $ getAttribute "name" (current d) == Just "alice" -- insertRight on last child do let ins = insertRight fred camille assertBool "insertRight lastChild" $ getAttribute "name" (current ins) == Just "camille" let Just a = findRight isLast ins assertBool "insertRight lastChild 1" $ getAttribute "name" (current a) == Just "fred" let mary = Element "employee" [("name", "mary")] [] let new = [fred, mary] -- insertManyLeft do let ins = insertManyLeft new camille assertBool "insertManyLeft leaves cursor" $ getAttribute "name" (current ins) == Just "camille" let Just a = left ins assertBool "insertManyLeft 1" $ getAttribute "name" (current a) == Just "mary" let Just b = left a assertBool "insertManyLeft 2" $ getAttribute "name" (current b) == Just "fred" let Just c = left b assertBool "insertManyLeft 3" $ getAttribute "name" (current c) == Just "bob" -- insertManyRight do let ins = insertManyRight new alice assertBool "insertManyRight leaves cursor" $ getAttribute "name" (current ins) == Just "alice" let Just a = right ins assertBool "insertManyRight 1" $ getAttribute "name" (current a) == Just "fred" let Just b = right a assertBool "insertManyRight 2" $ getAttribute "name" (current b) == Just "mary" let Just c = right b assertBool "insertManyRight 3" $ getAttribute "name" (current c) == Just "bob" -- insertFirstChild and insertLastChild do let Just ins1 = insertFirstChild fred r let Just ins2 = insertLastChild mary ins1 let Just a = firstChild ins2 assertBool "insert children 1" $ getAttribute "name" (current a) == Just "fred" let Just b = right a assertBool "insert children 2" $ getAttribute "name" (current b) == Just "alice" let Just c = right b assertBool "insert children 3" $ getAttribute "name" (current c) == Just "bob" let Just d = right c assertBool "insert children 4" $ getAttribute "name" (current d) == Just "camille" let Just e = right d assertBool "insert children 5" $ getAttribute "name" (current e) == Just "mary" assertBool "insert children 6" $ isLast e -- non-element insertFirstChild and insertLastChild do let Just cmt = firstChild bob assertBool "non-elem insertFirstChild" $ insertFirstChild fred cmt == Nothing assertBool "non-elem insertLastChild" $ insertLastChild fred cmt == Nothing assertBool "non-elem insertManyFirstChild" $ insertManyFirstChild new cmt == Nothing assertBool "non-elem insertManyLastChild" $ insertManyLastChild new cmt == Nothing -- insertManyFirstChild do let Just ins = insertManyFirstChild new r let Just a = firstChild ins assertBool "insertManyFirstChild 1" $ getAttribute "name" (current a) == Just "fred" let Just b = right a assertBool "insertManyFirstChild 2" $ getAttribute "name" (current b) == Just "mary" let Just c = right b assertBool "insertManyFirstChild 3" $ getAttribute "name" (current c) == Just "alice" let Just d = right c assertBool "insertManyFirstChild 4" $ getAttribute "name" (current d) == Just "bob" let Just e = right d assertBool "insertManyFirstChild 5" $ getAttribute "name" (current e) == Just "camille" assertBool "insertManyFirstChild 6" $ isLast e -- insertManyLastChild do let Just ins = insertManyLastChild new r let Just a = firstChild ins assertBool "insertManyFirstChild 1" $ getAttribute "name" (current a) == Just "alice" let Just b = right a assertBool "insertManyFirstChild 2" $ getAttribute "name" (current b) == Just "bob" let Just c = right b assertBool "insertManyFirstChild 3" $ getAttribute "name" (current c) == Just "camille" let Just d = right c assertBool "insertManyFirstChild 4" $ getAttribute "name" (current d) == Just "fred" let Just e = right d assertBool "insertManyFirstChild 5" $ getAttribute "name" (current e) == Just "mary" assertBool "insertManyFirstChild 6" $ isLast e -- insertGoLeft from middle do let ins = insertGoLeft fred bob let Just a = right ins assertBool "insertGoLeft 1" $ getAttribute "name" (current ins) == Just "fred" assertBool "insertGoLeft 2" $ getAttribute "name" (current a) == Just "bob" -- insertGoLeft from end do let ins = insertGoLeft fred alice let Just a = right ins assertBool "insertGoLeft 3" $ getAttribute "name" (current ins) == Just "fred" assertBool "insertGoLeft 4" $ getAttribute "name" (current a) == Just "alice" -- insertGoRight from middle do let ins = insertGoRight fred bob let Just a = left ins assertBool "insertGoRight 1" $ getAttribute "name" (current ins) == Just "fred" assertBool "insertGoRight 2" $ getAttribute "name" (current a) == Just "bob" -- insertGoRight from end do let ins = insertGoRight fred camille let Just a = left ins assertBool "insertGoRight 3" $ getAttribute "name" (current ins) == Just "fred" assertBool "insertGoRight 4" $ getAttribute "name" (current a) == Just "camille" cursorDeletion :: Assertion cursorDeletion = do let r = fromNode cursorTestTree let Just alice = firstChild r let Just bob = getChild 1 r let Just camille = lastChild r -- removeLeft success do let Just (n,del) = removeLeft bob let [b,c] = siblings del assertBool "removeLeft node1" $ getAttribute "name" n == Just "alice" assertBool "removeLeft node2" $ getAttribute "name" b == Just "bob" assertBool "removeLeft node3" $ getAttribute "name" c == Just "camille" -- removeLeft failure do assertBool "removeLeft failure" $ isNothing (removeLeft alice) -- removeRight success do let Just (n,del) = removeRight bob let [a,b] = siblings del assertBool "removeLeft node1" $ getAttribute "name" a == Just "alice" assertBool "removeLeft node2" $ getAttribute "name" b == Just "bob" assertBool "removeLeft node3" $ getAttribute "name" n == Just "camille" -- removeRight failure do assertBool "removeLeft failure" $ isNothing (removeRight camille) -- removeGoLeft success do let Just del = removeGoLeft bob let Just c = right del assertBool "removeGoLeft 1" $ getAttribute "name" (current del) == Just "alice" assertBool "removeGoLeft 2" $ getAttribute "name" (current c) == Just "camille" -- removeGoLeft failure do assertBool "removeGoLeft failure" $ isNothing (removeGoLeft alice) -- removeGoRight success do let Just del = removeGoRight bob let Just a = left del assertBool "removeGoRight 1" $ getAttribute "name" (current del) == Just "camille" assertBool "removeGoRight 2" $ getAttribute "name" (current a) == Just "alice" -- removeGoLeft failure do assertBool "removeGoRight failure" $ isNothing (removeGoRight camille) -- removeGoUp success do let Just del = removeGoUp bob let [a,c] = childNodes (current del) assertBool "removeGoUp 1" $ getAttribute "name" a == Just "alice" assertBool "removeGoUp 2" $ getAttribute "name" c == Just "camille" -- removeGoUp failure do assertBool "removeGoUp failure" $ isNothing (removeGoUp r) xmlhtml-0.2.3.4/test/suite/Text/XmlHtml/DocumentTests.hs0000644000000000000000000002442512446622357021331 0ustar0000000000000000{-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.DocumentTests (documentTests) where import Data.Text () -- for string instance import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Node, Test) import Text.XmlHtml import Text.XmlHtml.TestCommon ------------------------------------------------------------------------------ -- Tests of manipulating the Node tree and Document -------------------------- ------------------------------------------------------------------------------ documentTests :: [Test] documentTests = [ -- Exercise the (/=) operators; (==) is done plenty of places. testIt "compareExternalIDs " $ compareExternalIDs, testIt "compareInternalSubs " $ compareInternalSubs, testIt "compareDoctypes " $ compareDoctypes, testIt "compareNodes " $ compareNodes, testIt "compareDocuments " $ compareDocuments, testIt "compareEncodings " $ compareEncodings, -- Silly tests just to exercise the Show instances on types. testCase "exerciseShows " $ exerciseShows, -- Exercise the accessors for Document and Node testCase "docNodeAccessors " $ docNodeAccessors, testIt "isTextNodeYes " $ isTextNode someTextNode, testIt "isTextNodeNo " $ not $ isTextNode someComment, testIt "isTextNodeNo2 " $ not $ isTextNode someElement, testIt "isCommentYes " $ isComment someComment, testIt "isCommentNo " $ not $ isComment someTextNode, testIt "isCommentNo2 " $ not $ isComment someElement, testIt "isElementYes " $ isElement someElement, testIt "isElementNo " $ not $ isElement someTextNode, testIt "isElementNo2 " $ not $ isElement someComment, testIt "tagNameElement " $ tagName someElement == Just "baz", testIt "tagNameText " $ tagName someTextNode == Nothing, testIt "tagNameComment " $ tagName someComment == Nothing, testIt "getAttributePresent " $ getAttribute "fiz" someElement == Just "buzz", testIt "getAttributeMissing " $ getAttribute "baz" someElement == Nothing, testIt "getAttributeWrongType " $ getAttribute "fix" someTextNode == Nothing, testIt "hasAttributePresent " $ hasAttribute "fiz" someElement, testIt "hasAttributeMissing " $ not $ hasAttribute "baz" someElement, testIt "hasAttributeWrongType " $ not $ hasAttribute "fix" someTextNode, testIt "setAttributeNew " $ setAttributeNew, testIt "setAttributeReplace " $ setAttributeReplace, testIt "setAttributeWrongType " $ setAttributeWrongType, testIt "nestedNodeText " $ nestedNodeText, testIt "childNodesElem " $ childNodesElem, testIt "childNodesOther " $ childNodesOther, testIt "childElemsTest " $ childElemsTest, testIt "childElemsTagTest " $ childElemsTagTest, testIt "childElemTagExists " $ childElemTagExists, testIt "childElemTagNotExists " $ childElemTagNotExists, testIt "childElemTagOther " $ childElemTagOther, testIt "descNodesElem " $ descNodesElem, testIt "descNodesOther " $ descNodesOther, testIt "descElemsTest " $ descElemsTest, testIt "descElemsTagTest " $ descElemsTagTest, testIt "descElemTagExists " $ descElemTagExists, testIt "descElemTagDFS " $ descElemTagDFS, testIt "descElemTagNotExists " $ descElemTagNotExists, testIt "descElemTagOther " $ descElemTagOther ] compareExternalIDs :: Bool compareExternalIDs = Public "foo" "bar" /= System "bar" compareInternalSubs :: Bool compareInternalSubs = InternalText "" /= NoInternalSubset compareDoctypes :: Bool compareDoctypes = DocType "html" NoExternalID NoInternalSubset /= DocType "foo" NoExternalID NoInternalSubset compareNodes :: Bool compareNodes = TextNode "" /= Comment "" compareDocuments :: Bool compareDocuments = XmlDocument UTF8 Nothing [] /= HtmlDocument UTF8 Nothing [] compareEncodings :: Bool compareEncodings = UTF8 /= UTF16BE exerciseShows :: Assertion exerciseShows = do assertBool "1" $ length (showList [NoExternalID] "") > 0 assertBool "2" $ length (showList [NoInternalSubset] "") > 0 assertBool "3" $ length (showList [DocType "foo" NoExternalID NoInternalSubset] "") > 0 assertBool "4" $ length (showList [TextNode ""] "") > 0 assertBool "5" $ length (showList [XmlDocument UTF8 Nothing []] "") > 0 assertBool "6" $ length (showList [UTF8] "") > 0 docNodeAccessors :: Assertion docNodeAccessors = do let hdoc = HtmlDocument UTF8 Nothing [] assertEqual "html enc" (docEncoding hdoc) UTF8 assertEqual "html type" (docType hdoc) Nothing assertEqual "html nodes" (docContent hdoc) [] let xdoc = XmlDocument UTF8 Nothing [] assertEqual "xml enc" (docEncoding xdoc) UTF8 assertEqual "xml type" (docType xdoc) Nothing assertEqual "xml nodes" (docContent xdoc) [] let elm = Element "foo" [] [] let txt = TextNode "" let cmt = Comment "" assertEqual "elm tag" (elementTag elm) "foo" assertEqual "elm attr" (elementAttrs elm) [] assertEqual "elm child" (elementChildren elm) [] assertBool "txt tag" $ isBottom (elementTag txt) assertBool "txt attr" $ isBottom (elementAttrs txt) assertBool "txt child" $ isBottom (elementChildren txt) assertBool "cmt tag" $ isBottom (elementTag cmt) assertBool "cmt attr" $ isBottom (elementAttrs cmt) assertBool "cmt child" $ isBottom (elementChildren cmt) someTextNode :: Node someTextNode = TextNode "foo" someComment :: Node someComment = Comment "bar" someElement :: Node someElement = Element "baz" [("fiz","buzz")] [TextNode "content"] someTree :: Node someTree = Element "department" [("code", "A17")] [ Element "employee" [("name", "bob")] [ Comment "My best friend", Element "address" [] [ TextNode "123 My Road" ] ], Element "employee" [("name", "alice")] [ Element "address" [] [ TextNode "124 My Road" ], Element "phone" [] [ TextNode "555-1234" ] ] ] setAttributeNew :: Bool setAttributeNew = let e = setAttribute "flo" "friz" someElement in length (elementAttrs e) == 2 && getAttribute "fiz" e == Just "buzz" && getAttribute "flo" e == Just "friz" setAttributeReplace :: Bool setAttributeReplace = let e = setAttribute "fiz" "bat" someElement in length (elementAttrs e) == 1 && getAttribute "fiz" e == Just "bat" setAttributeWrongType :: Bool setAttributeWrongType = setAttribute "fuss" "plus" someTextNode == someTextNode && setAttribute "fuss" "plus" someComment == someComment nestedNodeText :: Bool nestedNodeText = nodeText someTree == "123 My Road124 My Road555-1234" childNodesElem :: Bool childNodesElem = length (childNodes n) == 3 where n = Element "foo" [] [ TextNode "bar", Comment "baz", Element "bat" [] [] ] childNodesOther :: Bool childNodesOther = childNodes (TextNode "foo") == [] && childNodes (Comment "bar") == [] childElemsTest :: Bool childElemsTest = length (childElements n) == 1 where n = Element "foo" [] [ TextNode "bar", Comment "baz", Element "bat" [] [] ] childElemsTagTest :: Bool childElemsTagTest = length (childElementsTag "good" n) == 2 where n = Element "parent" [] [ Element "good" [] [], TextNode "foo", Comment "bar", Element "bad" [] [], Element "good" [] [], Element "bad" [] [] ] childElemTagExists :: Bool childElemTagExists = childElementTag "b" n == Just (Element "b" [] []) where n = Element "parent" [] [ Element "a" [] [], Element "b" [] [], Element "c" [] [] ] childElemTagNotExists :: Bool childElemTagNotExists = childElementTag "b" n == Nothing where n = Element "parent" [] [ Element "a" [] [], Element "c" [] [] ] childElemTagOther :: Bool childElemTagOther = childElementTag "b" n == Nothing where n = TextNode "" descNodesElem :: Bool descNodesElem = length (descendantNodes n) == 3 where n = Element "foo" [] [ TextNode "bar", Element "bat" [] [ Comment "baz" ] ] descNodesOther :: Bool descNodesOther = descendantNodes (TextNode "foo") == [] && descendantNodes (Comment "bar") == [] descElemsTest :: Bool descElemsTest = length (descendantElements n) == 1 where n = Element "foo" [] [ TextNode "bar", Element "bat" [] [ Comment "baz" ] ] descElemsTagTest :: Bool descElemsTagTest = length (descendantElementsTag "good" n) == 2 where n = Element "parent" [] [ TextNode "foo", Element "good" [] [], Comment "bar", Element "parent" [] [ Element "good" [] [] ], Element "bad" [] [] ] descElemTagExists :: Bool descElemTagExists = descendantElementTag "b" n == Just (Element "b" [] []) where n = Element "parent" [] [ Element "a" [] [ Element "b" [] [] ], Element "c" [] [] ] descElemTagDFS :: Bool descElemTagDFS = descendantElementTag "b" n == Just (Element "b" [] []) where n = Element "parent" [] [ Element "a" [] [ Element "b" [] [] ], Element "b" [("wrong", "")] [], Element "c" [] [] ] descElemTagNotExists :: Bool descElemTagNotExists = descendantElementTag "b" n == Nothing where n = Element "parent" [] [ Element "a" [] [], Element "c" [] [ Element "d" [] [] ] ] descElemTagOther :: Bool descElemTagOther = descendantElementTag "b" n == Nothing where n = TextNode "" xmlhtml-0.2.3.4/test/suite/Text/XmlHtml/TestCommon.hs0000644000000000000000000000267212446622357020620 0ustar0000000000000000{-# LANGUAGE ScopedTypeVariables #-} module Text.XmlHtml.TestCommon where import Control.Exception as E import System.IO.Unsafe import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test, Node) ------------------------------------------------------------------------------ -- | Tests a simple Bool property. testIt :: TestName -> Bool -> Test testIt name b = testCase name $ assertBool name b ------------------------------------------------------------------------------ -- Code adapted from ChasingBottoms. -- -- Adding an actual dependency isn't possible because Cabal refuses to build -- the package due to version conflicts. -- -- isBottom is impossible to write, but very useful! So we defy the -- impossible, and write it anyway. isBottom :: a -> Bool isBottom a = unsafePerformIO $ (E.evaluate a >> return False) `E.catches` [ E.Handler $ \ (_ :: PatternMatchFail) -> return True, E.Handler $ \ (_ :: ErrorCall) -> return True, E.Handler $ \ (_ :: NoMethodError) -> return True, E.Handler $ \ (_ :: RecConError) -> return True, E.Handler $ \ (_ :: RecUpdError) -> return True, E.Handler $ \ (_ :: RecSelError) -> return True ] ------------------------------------------------------------------------------ isLeft :: Either a b -> Bool isLeft = either (const True) (const False) xmlhtml-0.2.3.4/test/suite/Text/XmlHtml/Tests.hs0000644000000000000000000010774112446622357017635 0ustar0000000000000000{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE OverloadedStrings #-} module Text.XmlHtml.Tests (tests) where import Blaze.ByteString.Builder import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as B import Data.Monoid import Data.String import Data.Text () -- for string instance import qualified Data.Text.Encoding as T import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test, Node) import Text.Blaze import Text.Blaze.Html import qualified Text.Blaze.Html5 as H import qualified Text.Blaze.Html5.Attributes as A import qualified Text.Blaze.Internal as H import Text.Blaze.Renderer.XmlHtml import Text.XmlHtml import Text.XmlHtml.CursorTests import Text.XmlHtml.DocumentTests import Text.XmlHtml.TestCommon import Text.XmlHtml.OASISTest ------------------------------------------------------------------------------ -- The master list of tests to run. ------------------------------------------ ------------------------------------------------------------------------------ tests :: [Test] tests = xmlParsingTests ++ htmlXMLParsingTests ++ htmlParsingQuirkTests ++ xmlRenderingTests ++ htmlXMLRenderingTests ++ htmlRenderingQuirkTests ++ documentTests ++ cursorTests ++ blazeRenderTests ++ testsOASIS ------------------------------------------------------------------------------ -- XML Parsing Tests --------------------------------------------------------- ------------------------------------------------------------------------------ xmlParsingTests :: [Test] xmlParsingTests = [ testCase "byteOrderMark " byteOrderMark, testIt "emptyDocument " emptyDocument, testIt "publicDocType " publicDocType, testIt "systemDocType " systemDocType, testIt "emptyDocType " emptyDocType, testCase "dtdInternalScan " dtdInternalScan, testIt "textOnly " textOnly, testIt "textWithRefs " textWithRefs, testIt "untermRef " untermRef, testIt "textWithCDATA " textWithCDATA, testIt "cdataOnly " cdataOnly, testIt "commentOnly " commentOnly, testIt "emptyElement " emptyElement, testIt "emptyElement2 " emptyElement2, testIt "elemWithText " elemWithText, testIt "xmlDeclXML " xmlDeclXML, testIt "procInst " procInst, testIt "badDoctype1 " badDoctype1, testIt "badDoctype2 " badDoctype2, testIt "badDoctype3 " badDoctype3, testIt "badDoctype4 " badDoctype4, testIt "badDoctype5 " badDoctype5, testCase "tagNames " tagNames ] byteOrderMark :: Assertion byteOrderMark = do assertEqual "BOM UTF16BE" (Right $ XmlDocument UTF16BE Nothing []) (parseXML "" $ T.encodeUtf16BE "\xFEFF") assertEqual "BOM UTF16LE" (Right $ XmlDocument UTF16LE Nothing []) (parseXML "" $ T.encodeUtf16LE "\xFEFF") assertEqual "BOM UTF8" (Right $ XmlDocument UTF8 Nothing []) (parseXML "" $ T.encodeUtf8 "\xFEFF") assertEqual "BOM None" (Right $ XmlDocument UTF8 Nothing []) (parseXML "" $ T.encodeUtf8 "") emptyDocument :: Bool emptyDocument = parseXML "" "" == Right (XmlDocument UTF8 Nothing []) publicDocType :: Bool publicDocType = parseXML "" "" == Right (XmlDocument UTF8 (Just (DocType "tag" (Public "foo" "bar") NoInternalSubset)) []) systemDocType :: Bool systemDocType = parseXML "" "" == Right (XmlDocument UTF8 (Just (DocType "tag" (System "foo") NoInternalSubset)) []) emptyDocType :: Bool emptyDocType = parseXML "" "" == Right (XmlDocument UTF8 (Just (DocType "tag" NoExternalID NoInternalSubset)) []) dtdInternalScan :: Assertion dtdInternalScan = do assertEqual "empty" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[]" ))) [])) assertBool "bad brackets" (isLeft $ parseXML "" "") assertEqual "quoted" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[\"]\"]" ))) [])) assertBool "bad quote" (isLeft $ parseXML "" "") assertEqual "nested brackets" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[[[]]]" ))) [])) assertEqual "part comment 1" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[<]" ))) [])) assertEqual "part comment 2" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[[<]]" ))) [])) assertEqual "part comment 3" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[<[]]" ))) [])) assertEqual "part comment 4" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[[") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[]>") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[]" ))) [])) assertEqual "docint 1" (parseXML "" "]>") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[<''<\"\"]" ))) [])) assertEqual "docint2" (parseXML "" "") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[") (Right (XmlDocument UTF8 (Just (DocType "a" NoExternalID (InternalText "[]>") textOnly :: Bool textOnly = parseXML "" "sldhfsklj''a's s" == Right (XmlDocument UTF8 Nothing [TextNode "sldhfsklj''a's s"]) textWithRefs :: Bool textWithRefs = parseXML "" "This is Bob's sled" == Right (XmlDocument UTF8 Nothing [TextNode "This is Bob's sled"]) untermRef :: Bool untermRef = isLeft (parseXML "" "j") textWithCDATA :: Bool textWithCDATA = parseXML "" "Testing c]data]]>" == Right (XmlDocument UTF8 Nothing [TextNode "Testing with c]data"]) cdataOnly :: Bool cdataOnly = parseXML "" "" == Right (XmlDocument UTF8 Nothing [TextNode " Testing a \"comment -->" == Right (XmlDocument UTF8 Nothing [Comment " this a \"comment "]) emptyElement :: Bool emptyElement = parseXML "" "" == Right (XmlDocument UTF8 Nothing [Element "myElement" [] []]) emptyElement2 :: Bool emptyElement2 = parseXML "" "" == Right (XmlDocument UTF8 Nothing [Element "myElement" [] []]) elemWithText :: Bool elemWithText = parseXML "" "text" == Right (XmlDocument UTF8 Nothing [Element "myElement" [] [TextNode "text"]]) xmlDeclXML :: Bool xmlDeclXML = parseXML "" "" == Right (XmlDocument UTF8 Nothing []) procInst :: Bool procInst = parseXML "" " parsed!?>" == Right (XmlDocument UTF8 Nothing []) badDoctype1 :: Bool badDoctype1 = isLeft $ parseXML "" "" badDoctype2 :: Bool badDoctype2 = isLeft $ parseXML "" "" badDoctype3 :: Bool badDoctype3 = isLeft $ parseXML "" "" badDoctype4 :: Bool badDoctype4 = isLeft $ parseXML "" "" badDoctype5 :: Bool badDoctype5 = isLeft $ parseXML "" ("") tagNames :: Assertion tagNames = do assertBool "tag name 0" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 1" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\xc0\&foo />") assertBool "tag name 2" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\xd8\&foo />") assertBool "tag name 3" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\xf8\&foo />") assertBool "tag name 4" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x370\&foo />") assertBool "tag name 5" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x37f\&foo />") assertBool "tag name 6" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x200c\&foo />") assertBool "tag name 7" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x2070\&foo />") assertBool "tag name 8" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x2c00\&foo />") assertBool "tag name 9" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x3001\&foo />") assertBool "tag name 10" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\xf900\&foo />") assertBool "tag name 11" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\xfdf0\&foo />") assertBool "tag name 12" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "<\x10000\&foo />") assertBool "tag name 13" $ id $ isLeft $ parseXML "" (T.encodeUtf8 "<\xd7\&foo />") assertBool "tag name 14" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 15" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 16" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 17" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 18" $ not $ isLeft $ parseXML "" (T.encodeUtf8 "") assertBool "tag name 19" $ id $ isLeft $ parseXML "" (T.encodeUtf8 "") ------------------------------------------------------------------------------ -- HTML Repetitions of XML Parsing Tests ------------------------------------- ------------------------------------------------------------------------------ htmlXMLParsingTests :: [Test] htmlXMLParsingTests = [ testIt "emptyDocumentHTML " emptyDocumentHTML, testIt "publicDocTypeHTML " publicDocTypeHTML, testIt "systemDocTypeHTML " systemDocTypeHTML, testIt "emptyDocTypeHTML " emptyDocTypeHTML, testIt "textOnlyHTML " textOnlyHTML, testIt "textWithRefsHTML " textWithRefsHTML, testIt "textWithCDataHTML " textWithCDataHTML, testIt "cdataOnlyHTML " cdataOnlyHTML, testIt "commentOnlyHTML " commentOnlyHTML, testIt "emptyElementHTML " emptyElementHTML, testIt "emptyElement2HTML " emptyElement2HTML, testIt "elemWithTextHTML " elemWithTextHTML, testIt "xmlDeclHTML " xmlDeclHTML, testIt "procInstHTML " procInstHTML, testIt "badDoctype1HTML " badDoctype1HTML, testIt "badDoctype2HTML " badDoctype2HTML, testIt "badDoctype3HTML " badDoctype3HTML, testIt "badDoctype4HTML " badDoctype4HTML, testIt "badDoctype5HTML " badDoctype5HTML ] emptyDocumentHTML :: Bool emptyDocumentHTML = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing []) publicDocTypeHTML :: Bool publicDocTypeHTML = parseHTML "" "" == Right (HtmlDocument UTF8 (Just (DocType "tag" (Public "foo" "bar") NoInternalSubset)) []) systemDocTypeHTML :: Bool systemDocTypeHTML = parseHTML "" "" == Right (HtmlDocument UTF8 (Just (DocType "tag" (System "foo") NoInternalSubset)) []) emptyDocTypeHTML :: Bool emptyDocTypeHTML = parseHTML "" "" == Right (HtmlDocument UTF8 (Just (DocType "tag" NoExternalID NoInternalSubset)) []) textOnlyHTML :: Bool textOnlyHTML = parseHTML "" "sldhfsklj''a's s" == Right (HtmlDocument UTF8 Nothing [TextNode "sldhfsklj''a's s"]) textWithRefsHTML :: Bool textWithRefsHTML = parseHTML "" "This is Bob's sled" == Right (HtmlDocument UTF8 Nothing [TextNode "This is Bob's sled"]) textWithCDataHTML :: Bool textWithCDataHTML = parseHTML "" "Testing c]data]]>" == Right (HtmlDocument UTF8 Nothing [TextNode "Testing with c]data"]) cdataOnlyHTML :: Bool cdataOnlyHTML = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [TextNode " Testing a \"comment -->" == Right (HtmlDocument UTF8 Nothing [Comment " this a \"comment "]) emptyElementHTML :: Bool emptyElementHTML = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "myElement" [] []]) emptyElement2HTML :: Bool emptyElement2HTML = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "myElement" [] []]) elemWithTextHTML :: Bool elemWithTextHTML = parseHTML "" "text" == Right (HtmlDocument UTF8 Nothing [Element "myElement" [] [TextNode "text"]]) xmlDeclHTML :: Bool xmlDeclHTML = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing []) procInstHTML :: Bool procInstHTML = parseHTML "" " parsed!?>" == Right (HtmlDocument UTF8 Nothing []) badDoctype1HTML :: Bool badDoctype1HTML = isLeft $ parseHTML "" "" badDoctype2HTML :: Bool badDoctype2HTML = isLeft $ parseHTML "" "" badDoctype3HTML :: Bool badDoctype3HTML = isLeft $ parseHTML "" "" badDoctype4HTML :: Bool badDoctype4HTML = isLeft $ parseHTML "" "" badDoctype5HTML :: Bool badDoctype5HTML = isLeft $ parseHTML "" ("") ------------------------------------------------------------------------------ -- HTML Quirks Parsing Tests ------------------------------------------------- ------------------------------------------------------------------------------ htmlParsingQuirkTests :: [Test] htmlParsingQuirkTests = [ testIt "voidElem " voidElem, testIt "caseInsDoctype1 " caseInsDoctype1, testIt "caseInsDoctype2 " caseInsDoctype2, testIt "voidEmptyElem " voidEmptyElem, testIt "rawTextElem " rawTextElem, testIt "endTagCase " endTagCase, testIt "hexEntityCap " hexEntityCap, testIt "laxAttrName " laxAttrName, testCase "badAttrName " badAttrName, testIt "emptyAttr " emptyAttr, testIt "emptyAttr2 " emptyAttr2, testIt "unquotedAttr " unquotedAttr, testIt "laxAttrVal " laxAttrVal, testIt "ampersandInText " ampersandInText, testIt "omitOptionalEnds " omitOptionalEnds, testIt "omitEndHEAD " omitEndHEAD, testIt "omitEndLI " omitEndLI, testIt "omitEndDT " omitEndDT, testIt "omitEndDD " omitEndDD, testIt "omitEndP " omitEndP, testIt "omitEndRT " omitEndRT, testIt "omitEndRP " omitEndRP, testIt "omitEndOPTGRP " omitEndOPTGRP, testIt "omitEndOPTION " omitEndOPTION, testIt "omitEndCOLGRP " omitEndCOLGRP, testIt "omitEndTHEAD " omitEndTHEAD, testIt "omitEndTBODY " omitEndTBODY, testIt "omitEndTFOOT " omitEndTFOOT, testIt "omitEndTR " omitEndTR, testIt "omitEndTD " omitEndTD, testIt "omitEndTH " omitEndTH, testIt "testNewRefs " testNewRefs, testIt "errorImplicitClose " errorImplicitClose, testIt "weirdScriptThing " weirdScriptThing ] caseInsDoctype1 :: Bool caseInsDoctype1 = parseHTML "" "" == Right (HtmlDocument UTF8 (Just (DocType "html" (System "foo") NoInternalSubset)) []) caseInsDoctype2 :: Bool caseInsDoctype2 = parseHTML "" "" == Right (HtmlDocument UTF8 (Just (DocType "html" (Public "foo" "bar") NoInternalSubset)) []) voidElem :: Bool voidElem = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "img" [] []]) voidEmptyElem :: Bool voidEmptyElem = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "img" [] []]) rawTextElem :: Bool rawTextElem = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "script" [("type", "text/javascript")] [ TextNode "Thistest&"] ]) endTagCase :: Bool endTagCase = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "testing" [] []]) hexEntityCap :: Bool hexEntityCap = parseHTML "" "j" == Right (HtmlDocument UTF8 Nothing [TextNode "\x6a"]) laxAttrName :: Bool laxAttrName = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "test" [("val") assertBool "attr name 1" $ isLeft $ parseHTML "" (T.encodeUtf8 "") assertBool "attr name 2" $ isLeft $ parseHTML "" (T.encodeUtf8 "") assertBool "attr name 3" $ isLeft $ parseHTML "" (T.encodeUtf8 "") assertBool "attr name 4" $ isLeft $ parseHTML "" (T.encodeUtf8 "") emptyAttr :: Bool emptyAttr = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "test" [("attr", "")] []]) emptyAttr2 :: Bool emptyAttr2 = parseHTML "" "
" == Right (HtmlDocument UTF8 Nothing [Element "div" [("itemscope", ""), ("itemtype", "type")] []]) unquotedAttr :: Bool unquotedAttr = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "test" [("attr", "you&me")] []]) laxAttrVal :: Bool laxAttrVal = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "test" [("attr", "a & d < b & c")] []]) ampersandInText :: Bool ampersandInText = parseHTML "" "j" == Right (HtmlDocument UTF8 Nothing [TextNode "j"]) omitOptionalEnds :: Bool omitOptionalEnds = parseHTML "" "

" == Right (HtmlDocument UTF8 Nothing [Element "html" [] [ Element "body" [] [ Element "p" [] []]]]) omitEndHEAD :: Bool omitEndHEAD = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "head" [] [], Element "body" [] []]) omitEndLI :: Bool omitEndLI = parseHTML "" "

  • " == Right (HtmlDocument UTF8 Nothing [Element "li" [] [], Element "li" [] []]) omitEndDT :: Bool omitEndDT = parseHTML "" "
    " == Right (HtmlDocument UTF8 Nothing [Element "dt" [] [], Element "dd" [] []]) omitEndDD :: Bool omitEndDD = parseHTML "" "
    " == Right (HtmlDocument UTF8 Nothing [Element "dd" [] [], Element "dt" [] []]) omitEndP :: Bool omitEndP = parseHTML "" "

    " == Right (HtmlDocument UTF8 Nothing [Element "p" [] [], Element "h1" [] []]) omitEndRT :: Bool omitEndRT = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "rt" [] [], Element "rp" [] []]) omitEndRP :: Bool omitEndRP = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "rp" [] [], Element "rt" [] []]) omitEndOPTGRP :: Bool omitEndOPTGRP = parseHTML "" "" == Right (HtmlDocument UTF8 Nothing [Element "optgroup" [] [], Element "optgroup" [] []]) omitEndOPTION :: Bool omitEndOPTION = parseHTML "" "');" ] ] ]) ------------------------------------------------------------------------------ -- XML Rendering Tests ------------------------------------------------------- ------------------------------------------------------------------------------ xmlRenderingTests :: [Test] xmlRenderingTests = [ testIt "renderByteOrderMark " renderByteOrderMark, testIt "renderByteOrderMarkLE " renderByteOrderMarkLE, testIt "singleQuoteInSysID " singleQuoteInSysID, testIt "doubleQuoteInSysID " doubleQuoteInSysID, testIt "bothQuotesInSysID " bothQuotesInSysID, testIt "doubleQuoteInPubID " doubleQuoteInPubID, testIt "doubleDashInComment " doubleDashInComment, testIt "trailingDashInComment " trailingDashInComment, testIt "renderEmptyText " renderEmptyText, testIt "singleQuoteInAttr " singleQuoteInAttr, testIt "doubleQuoteInAttr " doubleQuoteInAttr, testIt "bothQuotesInAttr " bothQuotesInAttr ] renderByteOrderMark :: Bool renderByteOrderMark = toByteString (render (XmlDocument UTF16BE Nothing [])) == T.encodeUtf16BE "\xFEFF\n" renderByteOrderMarkLE :: Bool renderByteOrderMarkLE = toByteString (render (XmlDocument UTF16LE Nothing [])) == T.encodeUtf16LE "\xFEFF\n" -- (Appears at the beginning of all XML output) utf8Decl :: ByteString utf8Decl = T.encodeUtf8 "\n" singleQuoteInSysID :: Bool singleQuoteInSysID = toByteString (render (XmlDocument UTF8 (Just (DocType "html" (System "test\'ing") NoInternalSubset)) [])) == utf8Decl `B.append` "\n" doubleQuoteInSysID :: Bool doubleQuoteInSysID = toByteString (render (XmlDocument UTF8 (Just (DocType "html" (System "test\"ing") NoInternalSubset)) [])) == utf8Decl `B.append` "\n" bothQuotesInSysID :: Bool bothQuotesInSysID = isBottom $ toByteString (render (XmlDocument UTF8 (Just (DocType "html" (System "test\"\'ing") NoInternalSubset)) [])) doubleQuoteInPubID :: Bool doubleQuoteInPubID = isBottom $ toByteString (render (XmlDocument UTF8 (Just (DocType "html" (Public "test\"ing" "foo") NoInternalSubset)) [])) doubleDashInComment :: Bool doubleDashInComment = isBottom $ toByteString (render (XmlDocument UTF8 Nothing [ Comment "test--ing" ])) trailingDashInComment :: Bool trailingDashInComment = isBottom $ toByteString (render (XmlDocument UTF8 Nothing [ Comment "testing-" ])) renderEmptyText :: Bool renderEmptyText = toByteString (render (XmlDocument UTF8 Nothing [ TextNode "" ])) == utf8Decl singleQuoteInAttr :: Bool singleQuoteInAttr = toByteString (render (XmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\'ing")] [] ])) == utf8Decl `B.append` "" doubleQuoteInAttr :: Bool doubleQuoteInAttr = toByteString (render (XmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\"ing")] [] ])) == utf8Decl `B.append` "" bothQuotesInAttr :: Bool bothQuotesInAttr = toByteString (render (XmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\'\"ing")] [] ])) == utf8Decl `B.append` "" ------------------------------------------------------------------------------ -- HTML Repeats of XML Rendering Tests --------------------------------------- ------------------------------------------------------------------------------ htmlXMLRenderingTests :: [Test] htmlXMLRenderingTests = [ testIt "hRenderByteOrderMark " hRenderByteOrderMark, testIt "hSingleQuoteInSysID " hSingleQuoteInSysID, testIt "hDoubleQuoteInSysID " hDoubleQuoteInSysID, testIt "hBothQuotesInSysID " hBothQuotesInSysID, testIt "hDoubleQuoteInPubID " hDoubleQuoteInPubID, testIt "hDoubleDashInComment " hDoubleDashInComment, testIt "hTrailingDashInComment " hTrailingDashInComment, testIt "hRenderEmptyText " hRenderEmptyText, testIt "hSingleQuoteInAttr " hSingleQuoteInAttr, testIt "hDoubleQuoteInAttr " hDoubleQuoteInAttr, testIt "hBothQuotesInAttr " hBothQuotesInAttr ] hRenderByteOrderMark :: Bool hRenderByteOrderMark = toByteString (render (HtmlDocument UTF16BE Nothing [])) == "\xFE\xFF" hSingleQuoteInSysID :: Bool hSingleQuoteInSysID = toByteString (render (HtmlDocument UTF8 (Just (DocType "html" (System "test\'ing") NoInternalSubset)) [])) == "\n" hDoubleQuoteInSysID :: Bool hDoubleQuoteInSysID = toByteString (render (HtmlDocument UTF8 (Just (DocType "html" (System "test\"ing") NoInternalSubset)) [])) == "\n" hBothQuotesInSysID :: Bool hBothQuotesInSysID = isBottom $ toByteString (render (HtmlDocument UTF8 (Just (DocType "html" (System "test\"\'ing") NoInternalSubset)) [])) hDoubleQuoteInPubID :: Bool hDoubleQuoteInPubID = isBottom $ toByteString (render (HtmlDocument UTF8 (Just (DocType "html" (Public "test\"ing" "foo") NoInternalSubset)) [])) hDoubleDashInComment :: Bool hDoubleDashInComment = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Comment "test--ing" ])) hTrailingDashInComment :: Bool hTrailingDashInComment = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Comment "testing-" ])) hRenderEmptyText :: Bool hRenderEmptyText = toByteString (render (HtmlDocument UTF8 Nothing [ TextNode "" ])) == "" hSingleQuoteInAttr :: Bool hSingleQuoteInAttr = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\'ing")] [] ])) == "" hDoubleQuoteInAttr :: Bool hDoubleQuoteInAttr = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\"ing")] [] ])) == "" hBothQuotesInAttr :: Bool hBothQuotesInAttr = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo" [("bar", "test\'\"ing")] [] ])) == "" ------------------------------------------------------------------------------ -- HTML Quirks Rendering Tests ----------------------------------------------- ------------------------------------------------------------------------------ htmlRenderingQuirkTests :: [Test] htmlRenderingQuirkTests = [ testIt "renderHTMLVoid " renderHTMLVoid, testIt "renderHTMLVoid2 " renderHTMLVoid2, testIt "renderHTMLRaw " renderHTMLRaw, testIt "renderHTMLRawMult " renderHTMLRawMult, testIt "renderHTMLRaw2 " renderHTMLRaw2, testIt "renderHTMLRaw3 " renderHTMLRaw3, testIt "renderHTMLRaw4 " renderHTMLRaw4, testIt "renderHTMLAmpAttr1 " renderHTMLAmpAttr1, testIt "renderHTMLAmpAttr2 " renderHTMLAmpAttr2, testIt "renderHTMLAmpAttr3 " renderHTMLAmpAttr3, testIt "renderHTMLQVoid " renderHTMLQVoid, testIt "renderHTMLQVoid2 " renderHTMLQVoid2, testIt "renderHTMLQRaw " renderHTMLQRaw, testIt "renderHTMLQRawMult " renderHTMLQRawMult, testIt "renderHTMLQRaw2 " renderHTMLQRaw2, testIt "renderHTMLQRaw3 " renderHTMLQRaw3, testIt "renderHTMLQRaw4 " renderHTMLQRaw4 ] renderHTMLVoid :: Bool renderHTMLVoid = toByteString (render (HtmlDocument UTF8 Nothing [ Element "img" [("src", "foo")] [] ])) == "" renderHTMLVoid2 :: Bool renderHTMLVoid2 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "img" [] [TextNode "foo"] ])) renderHTMLRaw :: Bool renderHTMLRaw = toByteString (render (HtmlDocument UTF8 Nothing [ Element "script" [("type", "text/javascript")] [ TextNode "/&+" ] ])) == "" renderHTMLRawMult :: Bool renderHTMLRawMult = toByteString (render (HtmlDocument UTF8 Nothing [ Element "script" [("type", "text/javascript")] [ TextNode "foo", TextNode "bar" ] ])) == "" renderHTMLRaw2 :: Bool renderHTMLRaw2 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "script" [("type", "text/javascript")] [ TextNode "" ] ])) renderHTMLRaw3 :: Bool renderHTMLRaw3 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "script" [("type", "text/javascript")] [ Comment "foo" ] ])) renderHTMLRaw4 :: Bool renderHTMLRaw4 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "script" [("type", "text/javascript")] [ TextNode "" ] ])) renderHTMLAmpAttr1 :: Bool renderHTMLAmpAttr1 = toByteString (render (HtmlDocument UTF8 Nothing [ Element "body" [("foo", "a & b")] [] ])) == "" renderHTMLAmpAttr2 :: Bool renderHTMLAmpAttr2 = toByteString (render (HtmlDocument UTF8 Nothing [ Element "body" [("foo", "a & b")] [] ])) == "" renderHTMLAmpAttr3 :: Bool renderHTMLAmpAttr3 = toByteString (render (HtmlDocument UTF8 Nothing [ Element "body" [("foo", "a e b")] [] ])) == "" renderHTMLQVoid :: Bool renderHTMLQVoid = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:img" [("src", "foo")] [] ])) == "" renderHTMLQVoid2 :: Bool renderHTMLQVoid2 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:img" [] [TextNode "foo"] ])) renderHTMLQRaw :: Bool renderHTMLQRaw = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:script" [("type", "text/javascript")] [ TextNode "/&+" ] ])) == "/&+" renderHTMLQRawMult :: Bool renderHTMLQRawMult = toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:script" [("type", "text/javascript")] [ TextNode "foo", TextNode "bar" ] ])) == "foobar" renderHTMLQRaw2 :: Bool renderHTMLQRaw2 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:script" [("type", "text/javascript")] [ TextNode "" ] ])) renderHTMLQRaw3 :: Bool renderHTMLQRaw3 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:script" [("type", "text/javascript")] [ Comment "foo" ] ])) renderHTMLQRaw4 :: Bool renderHTMLQRaw4 = isBottom $ toByteString (render (HtmlDocument UTF8 Nothing [ Element "foo:script" [("type", "text/javascript")] [ TextNode "" ] ])) ------------------------------------------------------------------------------ -- Tests of rendering from the blaze-html package ---------------------------- ------------------------------------------------------------------------------ blazeRenderTests :: [Test] blazeRenderTests = [ testIt "blazeTestString " blazeTestString, testIt "blazeTestText " blazeTestText, testIt "blazeTestBS " blazeTestBS, testIt "blazeTestPre " blazeTestPre, testIt "blazeTestExternal " blazeTestExternal, testIt "blazeTestCustom " blazeTestCustom, testIt "blazeTestMulti " blazeTestMulti, testIt "blazeTestEmpty " blazeTestEmpty ] blazeTestIsString :: (IsString t1, IsString t) => (t -> AttributeValue) -> (t1 -> Html) -> Bool blazeTestIsString valFunc tagFunc = renderHtml html == result where html = H.div ! A.class_ (valFunc "foo") $ tagFunc "hello world" result = HtmlDocument UTF8 Nothing [Element "div" [("class", "foo")] [TextNode "hello world"]] blazeTestString :: Bool blazeTestString = blazeTestIsString H.stringValue H.string blazeTestText :: Bool blazeTestText = blazeTestIsString H.textValue H.text blazeTestBS :: Bool blazeTestBS = blazeTestIsString H.unsafeByteStringValue H.unsafeByteString blazeTestPre :: Bool blazeTestPre = blazeTestIsString H.preEscapedStringValue H.preEscapedString blazeTestExternal :: Bool blazeTestExternal = renderHtml html == result where html = do H.script $ H.string "alert('hello world');" result = HtmlDocument UTF8 Nothing [Element "script" [] [TextNode "alert('hello world');"]] blazeTestCustom :: Bool blazeTestCustom = renderHtml html == result where html = do H.select ! H.customAttribute "dojoType" (mappend "select " "this") $ "foo" result = HtmlDocument UTF8 Nothing [Element "select" [("dojoType", "select this")] [TextNode "foo"]] blazeTestMulti :: Bool blazeTestMulti = renderHtml (selectCustom `mappend` html) == result where html = do H.link ! A.rel "stylesheet" result = HtmlDocument UTF8 Nothing [ Element "select" [("dojoType", "select")] [TextNode "foo ", TextNode "bar"] , Element "link" [("rel", "stylesheet")] [] ] blazeTestEmpty :: Bool blazeTestEmpty = renderHtmlNodes mempty == [] selectCustom :: Html selectCustom = H.select ! H.customAttribute "dojoType" "select" $ (mappend "foo " "bar")