1 // Written in the D programming language 2 3 /++ 4 This runs some of the spec conformance tests found at 5 $(LINK http://www.w3.org/XML/Test/) on dxml. 6 7 Copyright: Copyright 2018 8 License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 9 Authors: Jonathan M Davis 10 11 See_Also: $(LINK2 http://www.w3.org/TR/REC-xml/, Official Specification for XML 1.0) 12 +/ 13 module main; 14 15 import std.range.primitives; 16 import std.traits; 17 import dxml.parser; 18 19 void main() 20 { 21 xmltest(); 22 japanese(); 23 ibm(); 24 } 25 26 void xmltest() 27 { 28 // Unfortunately, because we skip passed the XML declaration and the DTD 29 // section, we fail many tests - either because they validate those sections 30 // or because they include entity references in the main body of the XML 31 // which are not predefined entities (we consider them to be invalid XML, 32 // because we can't process them properly without processing the DTD 33 // section). 34 auto ignoreList = 35 [ 36 "xmlconf/xmltest/not-wf/sa/054.xml", "xmlconf/xmltest/not-wf/sa/056.xml", "xmlconf/xmltest/not-wf/sa/057.xml", 37 "xmlconf/xmltest/not-wf/sa/058.xml", "xmlconf/xmltest/not-wf/sa/059.xml", "xmlconf/xmltest/not-wf/sa/060.xml", 38 "xmlconf/xmltest/not-wf/sa/061.xml", "xmlconf/xmltest/not-wf/sa/062.xml", "xmlconf/xmltest/not-wf/sa/064.xml", 39 "xmlconf/xmltest/not-wf/sa/065.xml", "xmlconf/xmltest/not-wf/sa/066.xml", "xmlconf/xmltest/not-wf/sa/067.xml", 40 "xmlconf/xmltest/not-wf/sa/068.xml", "xmlconf/xmltest/not-wf/sa/069.xml", "xmlconf/xmltest/not-wf/sa/078.xml", 41 "xmlconf/xmltest/not-wf/sa/079.xml", "xmlconf/xmltest/not-wf/sa/080.xml", "xmlconf/xmltest/not-wf/sa/082.xml", 42 "xmlconf/xmltest/not-wf/sa/084.xml", "xmlconf/xmltest/not-wf/sa/085.xml", "xmlconf/xmltest/not-wf/sa/086.xml", 43 "xmlconf/xmltest/not-wf/sa/087.xml", "xmlconf/xmltest/not-wf/sa/089.xml", "xmlconf/xmltest/not-wf/sa/091.xml", 44 "xmlconf/xmltest/not-wf/sa/094.xml", "xmlconf/xmltest/not-wf/sa/095.xml", "xmlconf/xmltest/not-wf/sa/096.xml", 45 "xmlconf/xmltest/not-wf/sa/097.xml", "xmlconf/xmltest/not-wf/sa/098.xml", "xmlconf/xmltest/not-wf/sa/099.xml", 46 "xmlconf/xmltest/not-wf/sa/100.xml", "xmlconf/xmltest/not-wf/sa/101.xml", "xmlconf/xmltest/not-wf/sa/102.xml", 47 "xmlconf/xmltest/not-wf/sa/113.xml", "xmlconf/xmltest/not-wf/sa/114.xml", "xmlconf/xmltest/not-wf/sa/121.xml", 48 "xmlconf/xmltest/not-wf/sa/122.xml", "xmlconf/xmltest/not-wf/sa/123.xml", "xmlconf/xmltest/not-wf/sa/124.xml", 49 "xmlconf/xmltest/not-wf/sa/125.xml", "xmlconf/xmltest/not-wf/sa/126.xml", "xmlconf/xmltest/not-wf/sa/127.xml", 50 "xmlconf/xmltest/not-wf/sa/128.xml", "xmlconf/xmltest/not-wf/sa/129.xml", "xmlconf/xmltest/not-wf/sa/130.xml", 51 "xmlconf/xmltest/not-wf/sa/131.xml", "xmlconf/xmltest/not-wf/sa/132.xml", "xmlconf/xmltest/not-wf/sa/133.xml", 52 "xmlconf/xmltest/not-wf/sa/134.xml", "xmlconf/xmltest/not-wf/sa/135.xml", "xmlconf/xmltest/not-wf/sa/136.xml", 53 "xmlconf/xmltest/not-wf/sa/137.xml", "xmlconf/xmltest/not-wf/sa/138.xml", "xmlconf/xmltest/not-wf/sa/139.xml", 54 "xmlconf/xmltest/not-wf/sa/149.xml", "xmlconf/xmltest/not-wf/sa/152.xml", "xmlconf/xmltest/not-wf/sa/158.xml", 55 "xmlconf/xmltest/not-wf/sa/160.xml", "xmlconf/xmltest/not-wf/sa/161.xml", "xmlconf/xmltest/not-wf/sa/162.xml", 56 "xmlconf/xmltest/not-wf/sa/165.xml", "xmlconf/xmltest/not-wf/sa/175.xml", "xmlconf/xmltest/not-wf/sa/180.xml", 57 "xmlconf/xmltest/not-wf/sa/183.xml", "xmlconf/xmltest/not-wf/sa/184.xml", 58 "xmlconf/xmltest/not-wf/not-sa/001.xml", "xmlconf/xmltest/not-wf/not-sa/002.xml", 59 "xmlconf/xmltest/not-wf/not-sa/003.xml", "xmlconf/xmltest/not-wf/not-sa/004.xml", 60 "xmlconf/xmltest/not-wf/not-sa/005.xml", "xmlconf/xmltest/not-wf/not-sa/006.xml", 61 "xmlconf/xmltest/not-wf/not-sa/007.xml", "xmlconf/xmltest/not-wf/not-sa/008.xml", 62 "xmlconf/xmltest/not-wf/not-sa/009.xml", "xmlconf/xmltest/invalid/002.xml", "xmlconf/xmltest/invalid/005.xml", 63 "xmlconf/xmltest/invalid/006.xml", "xmlconf/xmltest/invalid/not-sa/022.xml", 64 "xmlconf/xmltest/valid/sa/023.xml", "xmlconf/xmltest/valid/sa/024.xml", "xmlconf/xmltest/valid/sa/053.xml", 65 "xmlconf/xmltest/valid/sa/066.xml", "xmlconf/xmltest/valid/sa/068.xml", "xmlconf/xmltest/valid/sa/085.xml", 66 "xmlconf/xmltest/valid/sa/086.xml", "xmlconf/xmltest/valid/sa/087.xml", "xmlconf/xmltest/valid/sa/088.xml", 67 "xmlconf/xmltest/valid/sa/089.xml", "xmlconf/xmltest/valid/sa/108.xml", "xmlconf/xmltest/valid/sa/110.xml", 68 "xmlconf/xmltest/valid/sa/114.xml", "xmlconf/xmltest/valid/sa/115.xml", "xmlconf/xmltest/valid/sa/117.xml", 69 "xmlconf/xmltest/valid/sa/118.xml", "xmlconf/xmltest/valid/not-sa/031.xml", 70 "xmlconf/xmltest/valid/ext-sa/001.xml", "xmlconf/xmltest/valid/ext-sa/002.xml", 71 "xmlconf/xmltest/valid/ext-sa/003.xml", "xmlconf/xmltest/valid/ext-sa/004.xml", 72 "xmlconf/xmltest/valid/ext-sa/005.xml", "xmlconf/xmltest/valid/ext-sa/006.xml", 73 "xmlconf/xmltest/valid/ext-sa/007.xml", "xmlconf/xmltest/valid/ext-sa/008.xml", 74 "xmlconf/xmltest/valid/ext-sa/009.xml", "xmlconf/xmltest/valid/ext-sa/010.xml", 75 "xmlconf/xmltest/valid/ext-sa/011.xml", "xmlconf/xmltest/valid/ext-sa/012.xml", 76 "xmlconf/xmltest/valid/ext-sa/013.xml", "xmlconf/xmltest/valid/ext-sa/014.xml", 77 ]; 78 79 validateTests("xmlconf/xmltest/xmltest.xml", ignoreList); 80 } 81 82 void japanese() 83 { 84 auto ignoreList = 85 [ 86 "xmlconf/japanese/pr-xml-little-endian.xml", 87 "xmlconf/japanese/pr-xml-utf-16.xml", 88 "xmlconf/japanese/pr-xml-utf-8.xml", 89 "xmlconf/japanese/weekly-utf-16.xml", // FIXME big-endian 90 ]; 91 92 validateTests("xmlconf/japanese/japanese.xml", ignoreList); 93 } 94 95 void ibm() 96 { 97 // Unfortunately, because we skip passed the XML declaration and the DTD 98 // section, we fail many tests - either because they validate those sections 99 // or because they include entity references in the main body of the XML 100 // which are not predefined entities (we consider them to be invalid XML, 101 // because we can't process them properly without processing the DTD 102 // section). 103 auto ignoreList = 104 [ 105 "xmlconf/ibm/invalid/P28/ibm28i01.xml", "xmlconf/ibm/invalid/P32/ibm32i01.xml", 106 "xmlconf/ibm/invalid/P32/ibm32i03.xml", "xmlconf/ibm/invalid/P32/ibm32i04.xml", 107 "xmlconf/ibm/invalid/P39/ibm39i01.xml", "xmlconf/ibm/invalid/P39/ibm39i02.xml", 108 "xmlconf/ibm/invalid/P39/ibm39i03.xml", "xmlconf/ibm/invalid/P39/ibm39i04.xml", 109 "xmlconf/ibm/invalid/P41/ibm41i01.xml", "xmlconf/ibm/invalid/P41/ibm41i02.xml", 110 "xmlconf/ibm/invalid/P45/ibm45i01.xml", "xmlconf/ibm/invalid/P49/ibm49i01.xml", 111 "xmlconf/ibm/invalid/P50/ibm50i01.xml", "xmlconf/ibm/invalid/P51/ibm51i01.xml", 112 "xmlconf/ibm/invalid/P51/ibm51i03.xml", "xmlconf/ibm/invalid/P56/ibm56i01.xml", 113 "xmlconf/ibm/invalid/P56/ibm56i02.xml", "xmlconf/ibm/invalid/P56/ibm56i03.xml", 114 "xmlconf/ibm/invalid/P56/ibm56i05.xml", "xmlconf/ibm/invalid/P56/ibm56i06.xml", 115 "xmlconf/ibm/invalid/P56/ibm56i07.xml", "xmlconf/ibm/invalid/P56/ibm56i08.xml", 116 "xmlconf/ibm/invalid/P56/ibm56i09.xml", "xmlconf/ibm/invalid/P56/ibm56i10.xml", 117 "xmlconf/ibm/invalid/P56/ibm56i11.xml", "xmlconf/ibm/invalid/P56/ibm56i12.xml", 118 "xmlconf/ibm/invalid/P56/ibm56i13.xml", "xmlconf/ibm/invalid/P56/ibm56i14.xml", 119 "xmlconf/ibm/invalid/P56/ibm56i15.xml", "xmlconf/ibm/invalid/P56/ibm56i16.xml", 120 "xmlconf/ibm/invalid/P56/ibm56i17.xml", "xmlconf/ibm/invalid/P56/ibm56i18.xml", 121 "xmlconf/ibm/invalid/P58/ibm58i01.xml", "xmlconf/ibm/invalid/P58/ibm58i02.xml", 122 "xmlconf/ibm/invalid/P59/ibm59i01.xml", "xmlconf/ibm/invalid/P60/ibm60i01.xml", 123 "xmlconf/ibm/invalid/P60/ibm60i02.xml", "xmlconf/ibm/invalid/P60/ibm60i03.xml", 124 "xmlconf/ibm/invalid/P60/ibm60i04.xml", "xmlconf/ibm/invalid/P68/ibm68i01.xml", 125 "xmlconf/ibm/invalid/P68/ibm68i02.xml", "xmlconf/ibm/invalid/P68/ibm68i03.xml", 126 "xmlconf/ibm/invalid/P68/ibm68i04.xml", "xmlconf/ibm/invalid/P69/ibm69i01.xml", 127 "xmlconf/ibm/invalid/P69/ibm69i02.xml", "xmlconf/ibm/invalid/P69/ibm69i03.xml", 128 "xmlconf/ibm/invalid/P69/ibm69i04.xml", "xmlconf/ibm/invalid/P76/ibm76i01.xml", 129 "xmlconf/ibm/not-wf/P23/ibm23n01.xml", "xmlconf/ibm/not-wf/P23/ibm23n02.xml", 130 "xmlconf/ibm/not-wf/P23/ibm23n03.xml", "xmlconf/ibm/not-wf/P24/ibm24n01.xml", 131 "xmlconf/ibm/not-wf/P24/ibm24n03.xml", "xmlconf/ibm/not-wf/P24/ibm24n04.xml", 132 "xmlconf/ibm/not-wf/P24/ibm24n05.xml", "xmlconf/ibm/not-wf/P24/ibm24n06.xml", 133 "xmlconf/ibm/not-wf/P24/ibm24n07.xml", "xmlconf/ibm/not-wf/P24/ibm24n08.xml", 134 "xmlconf/ibm/not-wf/P24/ibm24n09.xml", "xmlconf/ibm/not-wf/P25/ibm25n01.xml", 135 "xmlconf/ibm/not-wf/P25/ibm25n02.xml", "xmlconf/ibm/not-wf/P26/ibm26n01.xml", 136 "xmlconf/ibm/not-wf/P28/ibm28n01.xml", "xmlconf/ibm/not-wf/P28/ibm28n03.xml", 137 "xmlconf/ibm/not-wf/P29/ibm29n01.xml", "xmlconf/ibm/not-wf/P29/ibm29n02.xml", 138 "xmlconf/ibm/not-wf/P29/ibm29n03.xml", "xmlconf/ibm/not-wf/P29/ibm29n05.xml", 139 "xmlconf/ibm/not-wf/P29/ibm29n06.xml", "xmlconf/ibm/not-wf/P29/ibm29n07.xml", 140 "xmlconf/ibm/not-wf/P30/ibm30n01.xml", "xmlconf/ibm/not-wf/P31/ibm31n01.xml", 141 "xmlconf/ibm/not-wf/P32/ibm32n01.xml", "xmlconf/ibm/not-wf/P32/ibm32n02.xml", 142 "xmlconf/ibm/not-wf/P32/ibm32n03.xml", "xmlconf/ibm/not-wf/P32/ibm32n04.xml", 143 "xmlconf/ibm/not-wf/P32/ibm32n05.xml", "xmlconf/ibm/not-wf/P32/ibm32n06.xml", 144 "xmlconf/ibm/not-wf/P32/ibm32n07.xml", "xmlconf/ibm/not-wf/P32/ibm32n08.xml", 145 "xmlconf/ibm/not-wf/P45/ibm45n01.xml", "xmlconf/ibm/not-wf/P45/ibm45n02.xml", 146 "xmlconf/ibm/not-wf/P45/ibm45n03.xml", "xmlconf/ibm/not-wf/P45/ibm45n04.xml", 147 "xmlconf/ibm/not-wf/P45/ibm45n05.xml", "xmlconf/ibm/not-wf/P45/ibm45n06.xml", 148 "xmlconf/ibm/not-wf/P45/ibm45n07.xml", "xmlconf/ibm/not-wf/P45/ibm45n08.xml", 149 "xmlconf/ibm/not-wf/P45/ibm45n09.xml", "xmlconf/ibm/not-wf/P46/ibm46n01.xml", 150 "xmlconf/ibm/not-wf/P46/ibm46n02.xml", "xmlconf/ibm/not-wf/P46/ibm46n03.xml", 151 "xmlconf/ibm/not-wf/P46/ibm46n04.xml", "xmlconf/ibm/not-wf/P46/ibm46n05.xml", 152 "xmlconf/ibm/not-wf/P47/ibm47n01.xml", "xmlconf/ibm/not-wf/P47/ibm47n02.xml", 153 "xmlconf/ibm/not-wf/P47/ibm47n03.xml", "xmlconf/ibm/not-wf/P47/ibm47n04.xml", 154 "xmlconf/ibm/not-wf/P47/ibm47n05.xml", "xmlconf/ibm/not-wf/P47/ibm47n06.xml", 155 "xmlconf/ibm/not-wf/P48/ibm48n01.xml", "xmlconf/ibm/not-wf/P48/ibm48n02.xml", 156 "xmlconf/ibm/not-wf/P48/ibm48n03.xml", "xmlconf/ibm/not-wf/P48/ibm48n04.xml", 157 "xmlconf/ibm/not-wf/P48/ibm48n05.xml", "xmlconf/ibm/not-wf/P48/ibm48n06.xml", 158 "xmlconf/ibm/not-wf/P48/ibm48n07.xml", "xmlconf/ibm/not-wf/P49/ibm49n01.xml", 159 "xmlconf/ibm/not-wf/P49/ibm49n02.xml", "xmlconf/ibm/not-wf/P49/ibm49n03.xml", 160 "xmlconf/ibm/not-wf/P49/ibm49n04.xml", "xmlconf/ibm/not-wf/P49/ibm49n05.xml", 161 "xmlconf/ibm/not-wf/P49/ibm49n06.xml", "xmlconf/ibm/not-wf/P50/ibm50n01.xml", 162 "xmlconf/ibm/not-wf/P50/ibm50n02.xml", "xmlconf/ibm/not-wf/P50/ibm50n03.xml", 163 "xmlconf/ibm/not-wf/P50/ibm50n04.xml", "xmlconf/ibm/not-wf/P50/ibm50n05.xml", 164 "xmlconf/ibm/not-wf/P50/ibm50n06.xml", "xmlconf/ibm/not-wf/P51/ibm51n01.xml", 165 "xmlconf/ibm/not-wf/P51/ibm51n02.xml", "xmlconf/ibm/not-wf/P51/ibm51n03.xml", 166 "xmlconf/ibm/not-wf/P51/ibm51n04.xml", "xmlconf/ibm/not-wf/P51/ibm51n07.xml", 167 "xmlconf/ibm/not-wf/P52/ibm52n01.xml", "xmlconf/ibm/not-wf/P52/ibm52n02.xml", 168 "xmlconf/ibm/not-wf/P52/ibm52n03.xml", "xmlconf/ibm/not-wf/P52/ibm52n04.xml", 169 "xmlconf/ibm/not-wf/P52/ibm52n05.xml", "xmlconf/ibm/not-wf/P52/ibm52n06.xml", 170 "xmlconf/ibm/not-wf/P53/ibm53n01.xml", "xmlconf/ibm/not-wf/P53/ibm53n02.xml", 171 "xmlconf/ibm/not-wf/P53/ibm53n03.xml", "xmlconf/ibm/not-wf/P53/ibm53n04.xml", 172 "xmlconf/ibm/not-wf/P53/ibm53n05.xml", "xmlconf/ibm/not-wf/P53/ibm53n06.xml", 173 "xmlconf/ibm/not-wf/P53/ibm53n07.xml", "xmlconf/ibm/not-wf/P53/ibm53n08.xml", 174 "xmlconf/ibm/not-wf/P54/ibm54n01.xml", "xmlconf/ibm/not-wf/P54/ibm54n02.xml", 175 "xmlconf/ibm/not-wf/P55/ibm55n01.xml", "xmlconf/ibm/not-wf/P55/ibm55n02.xml", 176 "xmlconf/ibm/not-wf/P55/ibm55n03.xml", "xmlconf/ibm/not-wf/P56/ibm56n01.xml", 177 "xmlconf/ibm/not-wf/P56/ibm56n02.xml", "xmlconf/ibm/not-wf/P56/ibm56n03.xml", 178 "xmlconf/ibm/not-wf/P56/ibm56n04.xml", "xmlconf/ibm/not-wf/P56/ibm56n05.xml", 179 "xmlconf/ibm/not-wf/P56/ibm56n06.xml", "xmlconf/ibm/not-wf/P56/ibm56n07.xml", 180 "xmlconf/ibm/not-wf/P57/ibm57n01.xml", "xmlconf/ibm/not-wf/P58/ibm58n01.xml", 181 "xmlconf/ibm/not-wf/P58/ibm58n02.xml", "xmlconf/ibm/not-wf/P58/ibm58n03.xml", 182 "xmlconf/ibm/not-wf/P58/ibm58n04.xml", "xmlconf/ibm/not-wf/P58/ibm58n05.xml", 183 "xmlconf/ibm/not-wf/P58/ibm58n06.xml", "xmlconf/ibm/not-wf/P58/ibm58n07.xml", 184 "xmlconf/ibm/not-wf/P58/ibm58n08.xml", "xmlconf/ibm/not-wf/P59/ibm59n01.xml", 185 "xmlconf/ibm/not-wf/P59/ibm59n02.xml", "xmlconf/ibm/not-wf/P59/ibm59n03.xml", 186 "xmlconf/ibm/not-wf/P59/ibm59n04.xml", "xmlconf/ibm/not-wf/P59/ibm59n05.xml", 187 "xmlconf/ibm/not-wf/P59/ibm59n06.xml", "xmlconf/ibm/not-wf/P60/ibm60n01.xml", 188 "xmlconf/ibm/not-wf/P60/ibm60n02.xml", "xmlconf/ibm/not-wf/P60/ibm60n03.xml", 189 "xmlconf/ibm/not-wf/P60/ibm60n04.xml", "xmlconf/ibm/not-wf/P60/ibm60n05.xml", 190 "xmlconf/ibm/not-wf/P60/ibm60n06.xml", "xmlconf/ibm/not-wf/P60/ibm60n08.xml", 191 "xmlconf/ibm/not-wf/P61/ibm61n01.xml", "xmlconf/ibm/not-wf/P62/ibm62n01.xml", 192 "xmlconf/ibm/not-wf/P62/ibm62n02.xml", "xmlconf/ibm/not-wf/P62/ibm62n03.xml", 193 "xmlconf/ibm/not-wf/P62/ibm62n04.xml", "xmlconf/ibm/not-wf/P62/ibm62n05.xml", 194 "xmlconf/ibm/not-wf/P62/ibm62n06.xml", "xmlconf/ibm/not-wf/P62/ibm62n07.xml", 195 "xmlconf/ibm/not-wf/P62/ibm62n08.xml", "xmlconf/ibm/not-wf/P63/ibm63n01.xml", 196 "xmlconf/ibm/not-wf/P63/ibm63n02.xml", "xmlconf/ibm/not-wf/P63/ibm63n03.xml", 197 "xmlconf/ibm/not-wf/P63/ibm63n04.xml", "xmlconf/ibm/not-wf/P63/ibm63n05.xml", 198 "xmlconf/ibm/not-wf/P63/ibm63n06.xml", "xmlconf/ibm/not-wf/P63/ibm63n07.xml", 199 "xmlconf/ibm/not-wf/P64/ibm64n01.xml", "xmlconf/ibm/not-wf/P64/ibm64n02.xml", 200 "xmlconf/ibm/not-wf/P64/ibm64n03.xml", "xmlconf/ibm/not-wf/P65/ibm65n01.xml", 201 "xmlconf/ibm/not-wf/P65/ibm65n02.xml", "xmlconf/ibm/not-wf/P66/ibm66n01.xml", 202 "xmlconf/ibm/not-wf/P66/ibm66n03.xml", "xmlconf/ibm/not-wf/P66/ibm66n05.xml", 203 "xmlconf/ibm/not-wf/P66/ibm66n07.xml", "xmlconf/ibm/not-wf/P66/ibm66n09.xml", 204 "xmlconf/ibm/not-wf/P66/ibm66n11.xml", "xmlconf/ibm/not-wf/P68/ibm68n07.xml", 205 "xmlconf/ibm/not-wf/P69/ibm69n01.xml", "xmlconf/ibm/not-wf/P69/ibm69n02.xml", 206 "xmlconf/ibm/not-wf/P69/ibm69n03.xml", "xmlconf/ibm/not-wf/P69/ibm69n04.xml", 207 "xmlconf/ibm/not-wf/P69/ibm69n05.xml", "xmlconf/ibm/not-wf/P69/ibm69n06.xml", 208 "xmlconf/ibm/not-wf/P69/ibm69n07.xml", "xmlconf/ibm/not-wf/P71/ibm70n01.xml", 209 "xmlconf/ibm/not-wf/P72/ibm72n01.xml", "xmlconf/ibm/not-wf/P72/ibm72n02.xml", 210 "xmlconf/ibm/not-wf/P72/ibm72n03.xml", "xmlconf/ibm/not-wf/P72/ibm72n04.xml", 211 "xmlconf/ibm/not-wf/P72/ibm72n05.xml", "xmlconf/ibm/not-wf/P72/ibm72n06.xml", 212 "xmlconf/ibm/not-wf/P72/ibm72n07.xml", "xmlconf/ibm/not-wf/P72/ibm72n08.xml", 213 "xmlconf/ibm/not-wf/P72/ibm72n09.xml", "xmlconf/ibm/not-wf/P73/ibm73n01.xml", 214 "xmlconf/ibm/not-wf/P73/ibm73n03.xml", "xmlconf/ibm/not-wf/P74/ibm74n01.xml", 215 "xmlconf/ibm/not-wf/P75/ibm75n01.xml", "xmlconf/ibm/not-wf/P75/ibm75n02.xml", 216 "xmlconf/ibm/not-wf/P75/ibm75n03.xml", "xmlconf/ibm/not-wf/P75/ibm75n04.xml", 217 "xmlconf/ibm/not-wf/P75/ibm75n05.xml", "xmlconf/ibm/not-wf/P75/ibm75n06.xml", 218 "xmlconf/ibm/not-wf/P75/ibm75n07.xml", "xmlconf/ibm/not-wf/P75/ibm75n08.xml", 219 "xmlconf/ibm/not-wf/P75/ibm75n09.xml", "xmlconf/ibm/not-wf/P75/ibm75n10.xml", 220 "xmlconf/ibm/not-wf/P75/ibm75n11.xml", "xmlconf/ibm/not-wf/P75/ibm75n12.xml", 221 "xmlconf/ibm/not-wf/P75/ibm75n13.xml", "xmlconf/ibm/not-wf/P76/ibm76n01.xml", 222 "xmlconf/ibm/not-wf/P76/ibm76n02.xml", "xmlconf/ibm/not-wf/P76/ibm76n03.xml", 223 "xmlconf/ibm/not-wf/P76/ibm76n04.xml", "xmlconf/ibm/not-wf/P76/ibm76n05.xml", 224 "xmlconf/ibm/not-wf/P76/ibm76n06.xml", "xmlconf/ibm/not-wf/P76/ibm76n07.xml", 225 "xmlconf/ibm/not-wf/P77/ibm77n03.xml", "xmlconf/ibm/not-wf/P77/ibm77n04.xml", 226 "xmlconf/ibm/not-wf/P79/ibm79n01.xml", "xmlconf/ibm/not-wf/P79/ibm79n02.xml", 227 "xmlconf/ibm/not-wf/P80/ibm80n01.xml", "xmlconf/ibm/not-wf/P80/ibm80n02.xml", 228 "xmlconf/ibm/not-wf/P80/ibm80n03.xml", "xmlconf/ibm/not-wf/P80/ibm80n04.xml", 229 "xmlconf/ibm/not-wf/P80/ibm80n05.xml", "xmlconf/ibm/not-wf/P80/ibm80n06.xml", 230 "xmlconf/ibm/not-wf/P81/ibm81n01.xml", "xmlconf/ibm/not-wf/P81/ibm81n02.xml", 231 "xmlconf/ibm/not-wf/P81/ibm81n03.xml", "xmlconf/ibm/not-wf/P81/ibm81n04.xml", 232 "xmlconf/ibm/not-wf/P81/ibm81n05.xml", "xmlconf/ibm/not-wf/P81/ibm81n06.xml", 233 "xmlconf/ibm/not-wf/P81/ibm81n07.xml", "xmlconf/ibm/not-wf/P81/ibm81n08.xml", 234 "xmlconf/ibm/not-wf/P81/ibm81n09.xml", "xmlconf/ibm/not-wf/P82/ibm82n01.xml", 235 "xmlconf/ibm/not-wf/P82/ibm82n02.xml", "xmlconf/ibm/not-wf/P82/ibm82n03.xml", 236 "xmlconf/ibm/not-wf/P82/ibm82n04.xml", "xmlconf/ibm/not-wf/P82/ibm82n05.xml", 237 "xmlconf/ibm/not-wf/P82/ibm82n06.xml", "xmlconf/ibm/not-wf/P82/ibm82n07.xml", 238 "xmlconf/ibm/not-wf/P82/ibm82n08.xml", "xmlconf/ibm/not-wf/P83/ibm83n01.xml", 239 "xmlconf/ibm/not-wf/P83/ibm83n03.xml", "xmlconf/ibm/not-wf/P83/ibm83n04.xml", 240 "xmlconf/ibm/not-wf/P83/ibm83n05.xml", "xmlconf/ibm/not-wf/P83/ibm83n06.xml", 241 "xmlconf/ibm/not-wf/P85/ibm85n01.xml", "xmlconf/ibm/not-wf/P85/ibm85n02.xml", 242 "xmlconf/ibm/not-wf/P85/ibm85n03.xml", "xmlconf/ibm/not-wf/P85/ibm85n04.xml", 243 "xmlconf/ibm/not-wf/P85/ibm85n05.xml", "xmlconf/ibm/not-wf/P85/ibm85n06.xml", 244 "xmlconf/ibm/not-wf/P85/ibm85n07.xml", "xmlconf/ibm/not-wf/P85/ibm85n08.xml", 245 "xmlconf/ibm/not-wf/P85/ibm85n09.xml", "xmlconf/ibm/not-wf/P85/ibm85n10.xml", 246 "xmlconf/ibm/not-wf/P85/ibm85n100.xml", "xmlconf/ibm/not-wf/P85/ibm85n101.xml", 247 "xmlconf/ibm/not-wf/P85/ibm85n102.xml", "xmlconf/ibm/not-wf/P85/ibm85n103.xml", 248 "xmlconf/ibm/not-wf/P85/ibm85n104.xml", "xmlconf/ibm/not-wf/P85/ibm85n105.xml", 249 "xmlconf/ibm/not-wf/P85/ibm85n106.xml", "xmlconf/ibm/not-wf/P85/ibm85n107.xml", 250 "xmlconf/ibm/not-wf/P85/ibm85n108.xml", "xmlconf/ibm/not-wf/P85/ibm85n109.xml", 251 "xmlconf/ibm/not-wf/P85/ibm85n11.xml", "xmlconf/ibm/not-wf/P85/ibm85n110.xml", 252 "xmlconf/ibm/not-wf/P85/ibm85n111.xml", "xmlconf/ibm/not-wf/P85/ibm85n112.xml", 253 "xmlconf/ibm/not-wf/P85/ibm85n113.xml", "xmlconf/ibm/not-wf/P85/ibm85n114.xml", 254 "xmlconf/ibm/not-wf/P85/ibm85n115.xml", "xmlconf/ibm/not-wf/P85/ibm85n116.xml", 255 "xmlconf/ibm/not-wf/P85/ibm85n117.xml", "xmlconf/ibm/not-wf/P85/ibm85n118.xml", 256 "xmlconf/ibm/not-wf/P85/ibm85n119.xml", "xmlconf/ibm/not-wf/P85/ibm85n12.xml", 257 "xmlconf/ibm/not-wf/P85/ibm85n120.xml", "xmlconf/ibm/not-wf/P85/ibm85n121.xml", 258 "xmlconf/ibm/not-wf/P85/ibm85n122.xml", "xmlconf/ibm/not-wf/P85/ibm85n123.xml", 259 "xmlconf/ibm/not-wf/P85/ibm85n124.xml", "xmlconf/ibm/not-wf/P85/ibm85n125.xml", 260 "xmlconf/ibm/not-wf/P85/ibm85n126.xml", "xmlconf/ibm/not-wf/P85/ibm85n127.xml", 261 "xmlconf/ibm/not-wf/P85/ibm85n128.xml", "xmlconf/ibm/not-wf/P85/ibm85n129.xml", 262 "xmlconf/ibm/not-wf/P85/ibm85n13.xml", "xmlconf/ibm/not-wf/P85/ibm85n130.xml", 263 "xmlconf/ibm/not-wf/P85/ibm85n131.xml", "xmlconf/ibm/not-wf/P85/ibm85n132.xml", 264 "xmlconf/ibm/not-wf/P85/ibm85n133.xml", "xmlconf/ibm/not-wf/P85/ibm85n134.xml", 265 "xmlconf/ibm/not-wf/P85/ibm85n135.xml", "xmlconf/ibm/not-wf/P85/ibm85n136.xml", 266 "xmlconf/ibm/not-wf/P85/ibm85n137.xml", "xmlconf/ibm/not-wf/P85/ibm85n138.xml", 267 "xmlconf/ibm/not-wf/P85/ibm85n139.xml", "xmlconf/ibm/not-wf/P85/ibm85n14.xml", 268 "xmlconf/ibm/not-wf/P85/ibm85n140.xml", "xmlconf/ibm/not-wf/P85/ibm85n141.xml", 269 "xmlconf/ibm/not-wf/P85/ibm85n142.xml", "xmlconf/ibm/not-wf/P85/ibm85n143.xml", 270 "xmlconf/ibm/not-wf/P85/ibm85n144.xml", "xmlconf/ibm/not-wf/P85/ibm85n145.xml", 271 "xmlconf/ibm/not-wf/P85/ibm85n146.xml", "xmlconf/ibm/not-wf/P85/ibm85n147.xml", 272 "xmlconf/ibm/not-wf/P85/ibm85n148.xml", "xmlconf/ibm/not-wf/P85/ibm85n149.xml", 273 "xmlconf/ibm/not-wf/P85/ibm85n15.xml", "xmlconf/ibm/not-wf/P85/ibm85n150.xml", 274 "xmlconf/ibm/not-wf/P85/ibm85n151.xml", "xmlconf/ibm/not-wf/P85/ibm85n152.xml", 275 "xmlconf/ibm/not-wf/P85/ibm85n153.xml", "xmlconf/ibm/not-wf/P85/ibm85n154.xml", 276 "xmlconf/ibm/not-wf/P85/ibm85n155.xml", "xmlconf/ibm/not-wf/P85/ibm85n156.xml", 277 "xmlconf/ibm/not-wf/P85/ibm85n157.xml", "xmlconf/ibm/not-wf/P85/ibm85n158.xml", 278 "xmlconf/ibm/not-wf/P85/ibm85n159.xml", "xmlconf/ibm/not-wf/P85/ibm85n16.xml", 279 "xmlconf/ibm/not-wf/P85/ibm85n160.xml", "xmlconf/ibm/not-wf/P85/ibm85n161.xml", 280 "xmlconf/ibm/not-wf/P85/ibm85n162.xml", "xmlconf/ibm/not-wf/P85/ibm85n163.xml", 281 "xmlconf/ibm/not-wf/P85/ibm85n164.xml", "xmlconf/ibm/not-wf/P85/ibm85n165.xml", 282 "xmlconf/ibm/not-wf/P85/ibm85n166.xml", "xmlconf/ibm/not-wf/P85/ibm85n167.xml", 283 "xmlconf/ibm/not-wf/P85/ibm85n168.xml", "xmlconf/ibm/not-wf/P85/ibm85n169.xml", 284 "xmlconf/ibm/not-wf/P85/ibm85n17.xml", "xmlconf/ibm/not-wf/P85/ibm85n170.xml", 285 "xmlconf/ibm/not-wf/P85/ibm85n171.xml", "xmlconf/ibm/not-wf/P85/ibm85n172.xml", 286 "xmlconf/ibm/not-wf/P85/ibm85n173.xml", "xmlconf/ibm/not-wf/P85/ibm85n174.xml", 287 "xmlconf/ibm/not-wf/P85/ibm85n175.xml", "xmlconf/ibm/not-wf/P85/ibm85n176.xml", 288 "xmlconf/ibm/not-wf/P85/ibm85n177.xml", "xmlconf/ibm/not-wf/P85/ibm85n178.xml", 289 "xmlconf/ibm/not-wf/P85/ibm85n179.xml", "xmlconf/ibm/not-wf/P85/ibm85n18.xml", 290 "xmlconf/ibm/not-wf/P85/ibm85n180.xml", "xmlconf/ibm/not-wf/P85/ibm85n181.xml", 291 "xmlconf/ibm/not-wf/P85/ibm85n182.xml", "xmlconf/ibm/not-wf/P85/ibm85n183.xml", 292 "xmlconf/ibm/not-wf/P85/ibm85n184.xml", "xmlconf/ibm/not-wf/P85/ibm85n185.xml", 293 "xmlconf/ibm/not-wf/P85/ibm85n186.xml", "xmlconf/ibm/not-wf/P85/ibm85n187.xml", 294 "xmlconf/ibm/not-wf/P85/ibm85n188.xml", "xmlconf/ibm/not-wf/P85/ibm85n189.xml", 295 "xmlconf/ibm/not-wf/P85/ibm85n19.xml", "xmlconf/ibm/not-wf/P85/ibm85n190.xml", 296 "xmlconf/ibm/not-wf/P85/ibm85n191.xml", "xmlconf/ibm/not-wf/P85/ibm85n192.xml", 297 "xmlconf/ibm/not-wf/P85/ibm85n193.xml", "xmlconf/ibm/not-wf/P85/ibm85n194.xml", 298 "xmlconf/ibm/not-wf/P85/ibm85n195.xml", "xmlconf/ibm/not-wf/P85/ibm85n196.xml", 299 "xmlconf/ibm/not-wf/P85/ibm85n197.xml", "xmlconf/ibm/not-wf/P85/ibm85n198.xml", 300 "xmlconf/ibm/not-wf/P85/ibm85n20.xml", "xmlconf/ibm/not-wf/P85/ibm85n21.xml", 301 "xmlconf/ibm/not-wf/P85/ibm85n22.xml", "xmlconf/ibm/not-wf/P85/ibm85n23.xml", 302 "xmlconf/ibm/not-wf/P85/ibm85n24.xml", "xmlconf/ibm/not-wf/P85/ibm85n25.xml", 303 "xmlconf/ibm/not-wf/P85/ibm85n26.xml", "xmlconf/ibm/not-wf/P85/ibm85n27.xml", 304 "xmlconf/ibm/not-wf/P85/ibm85n28.xml", "xmlconf/ibm/not-wf/P85/ibm85n29.xml", 305 "xmlconf/ibm/not-wf/P85/ibm85n30.xml", "xmlconf/ibm/not-wf/P85/ibm85n31.xml", 306 "xmlconf/ibm/not-wf/P85/ibm85n32.xml", "xmlconf/ibm/not-wf/P85/ibm85n33.xml", 307 "xmlconf/ibm/not-wf/P85/ibm85n34.xml", "xmlconf/ibm/not-wf/P85/ibm85n35.xml", 308 "xmlconf/ibm/not-wf/P85/ibm85n36.xml", "xmlconf/ibm/not-wf/P85/ibm85n37.xml", 309 "xmlconf/ibm/not-wf/P85/ibm85n38.xml", "xmlconf/ibm/not-wf/P85/ibm85n39.xml", 310 "xmlconf/ibm/not-wf/P85/ibm85n40.xml", "xmlconf/ibm/not-wf/P85/ibm85n41.xml", 311 "xmlconf/ibm/not-wf/P85/ibm85n42.xml", "xmlconf/ibm/not-wf/P85/ibm85n43.xml", 312 "xmlconf/ibm/not-wf/P85/ibm85n44.xml", "xmlconf/ibm/not-wf/P85/ibm85n45.xml", 313 "xmlconf/ibm/not-wf/P85/ibm85n46.xml", "xmlconf/ibm/not-wf/P85/ibm85n47.xml", 314 "xmlconf/ibm/not-wf/P85/ibm85n48.xml", "xmlconf/ibm/not-wf/P85/ibm85n49.xml", 315 "xmlconf/ibm/not-wf/P85/ibm85n50.xml", "xmlconf/ibm/not-wf/P85/ibm85n51.xml", 316 "xmlconf/ibm/not-wf/P85/ibm85n52.xml", "xmlconf/ibm/not-wf/P85/ibm85n53.xml", 317 "xmlconf/ibm/not-wf/P85/ibm85n54.xml", "xmlconf/ibm/not-wf/P85/ibm85n55.xml", 318 "xmlconf/ibm/not-wf/P85/ibm85n56.xml", "xmlconf/ibm/not-wf/P85/ibm85n57.xml", 319 "xmlconf/ibm/not-wf/P85/ibm85n58.xml", "xmlconf/ibm/not-wf/P85/ibm85n59.xml", 320 "xmlconf/ibm/not-wf/P85/ibm85n60.xml", "xmlconf/ibm/not-wf/P85/ibm85n61.xml", 321 "xmlconf/ibm/not-wf/P85/ibm85n62.xml", "xmlconf/ibm/not-wf/P85/ibm85n63.xml", 322 "xmlconf/ibm/not-wf/P85/ibm85n64.xml", "xmlconf/ibm/not-wf/P85/ibm85n65.xml", 323 "xmlconf/ibm/not-wf/P85/ibm85n66.xml", "xmlconf/ibm/not-wf/P85/ibm85n67.xml", 324 "xmlconf/ibm/not-wf/P85/ibm85n68.xml", "xmlconf/ibm/not-wf/P85/ibm85n69.xml", 325 "xmlconf/ibm/not-wf/P85/ibm85n70.xml", "xmlconf/ibm/not-wf/P85/ibm85n71.xml", 326 "xmlconf/ibm/not-wf/P85/ibm85n72.xml", "xmlconf/ibm/not-wf/P85/ibm85n73.xml", 327 "xmlconf/ibm/not-wf/P85/ibm85n74.xml", "xmlconf/ibm/not-wf/P85/ibm85n75.xml", 328 "xmlconf/ibm/not-wf/P85/ibm85n76.xml", "xmlconf/ibm/not-wf/P85/ibm85n77.xml", 329 "xmlconf/ibm/not-wf/P85/ibm85n78.xml", "xmlconf/ibm/not-wf/P85/ibm85n79.xml", 330 "xmlconf/ibm/not-wf/P85/ibm85n80.xml", "xmlconf/ibm/not-wf/P85/ibm85n81.xml", 331 "xmlconf/ibm/not-wf/P85/ibm85n82.xml", "xmlconf/ibm/not-wf/P85/ibm85n83.xml", 332 "xmlconf/ibm/not-wf/P85/ibm85n84.xml", "xmlconf/ibm/not-wf/P85/ibm85n85.xml", 333 "xmlconf/ibm/not-wf/P85/ibm85n86.xml", "xmlconf/ibm/not-wf/P85/ibm85n87.xml", 334 "xmlconf/ibm/not-wf/P85/ibm85n88.xml", "xmlconf/ibm/not-wf/P85/ibm85n89.xml", 335 "xmlconf/ibm/not-wf/P85/ibm85n90.xml", "xmlconf/ibm/not-wf/P85/ibm85n91.xml", 336 "xmlconf/ibm/not-wf/P85/ibm85n92.xml", "xmlconf/ibm/not-wf/P85/ibm85n93.xml", 337 "xmlconf/ibm/not-wf/P85/ibm85n94.xml", "xmlconf/ibm/not-wf/P85/ibm85n95.xml", 338 "xmlconf/ibm/not-wf/P85/ibm85n96.xml", "xmlconf/ibm/not-wf/P85/ibm85n97.xml", 339 "xmlconf/ibm/not-wf/P85/ibm85n98.xml", "xmlconf/ibm/not-wf/P85/ibm85n99.xml", 340 "xmlconf/ibm/not-wf/P86/ibm86n01.xml", "xmlconf/ibm/not-wf/P86/ibm86n02.xml", 341 "xmlconf/ibm/not-wf/P86/ibm86n03.xml", "xmlconf/ibm/not-wf/P86/ibm86n04.xml", 342 "xmlconf/ibm/not-wf/P87/ibm87n01.xml", "xmlconf/ibm/not-wf/P87/ibm87n02.xml", 343 "xmlconf/ibm/not-wf/P87/ibm87n03.xml", "xmlconf/ibm/not-wf/P87/ibm87n04.xml", 344 "xmlconf/ibm/not-wf/P87/ibm87n05.xml", "xmlconf/ibm/not-wf/P87/ibm87n06.xml", 345 "xmlconf/ibm/not-wf/P87/ibm87n07.xml", "xmlconf/ibm/not-wf/P87/ibm87n08.xml", 346 "xmlconf/ibm/not-wf/P87/ibm87n09.xml", "xmlconf/ibm/not-wf/P87/ibm87n10.xml", 347 "xmlconf/ibm/not-wf/P87/ibm87n11.xml", "xmlconf/ibm/not-wf/P87/ibm87n12.xml", 348 "xmlconf/ibm/not-wf/P87/ibm87n13.xml", "xmlconf/ibm/not-wf/P87/ibm87n14.xml", 349 "xmlconf/ibm/not-wf/P87/ibm87n15.xml", "xmlconf/ibm/not-wf/P87/ibm87n16.xml", 350 "xmlconf/ibm/not-wf/P87/ibm87n17.xml", "xmlconf/ibm/not-wf/P87/ibm87n18.xml", 351 "xmlconf/ibm/not-wf/P87/ibm87n19.xml", "xmlconf/ibm/not-wf/P87/ibm87n20.xml", 352 "xmlconf/ibm/not-wf/P87/ibm87n21.xml", "xmlconf/ibm/not-wf/P87/ibm87n22.xml", 353 "xmlconf/ibm/not-wf/P87/ibm87n23.xml", "xmlconf/ibm/not-wf/P87/ibm87n24.xml", 354 "xmlconf/ibm/not-wf/P87/ibm87n25.xml", "xmlconf/ibm/not-wf/P87/ibm87n26.xml", 355 "xmlconf/ibm/not-wf/P87/ibm87n27.xml", "xmlconf/ibm/not-wf/P87/ibm87n28.xml", 356 "xmlconf/ibm/not-wf/P87/ibm87n29.xml", "xmlconf/ibm/not-wf/P87/ibm87n30.xml", 357 "xmlconf/ibm/not-wf/P87/ibm87n31.xml", "xmlconf/ibm/not-wf/P87/ibm87n32.xml", 358 "xmlconf/ibm/not-wf/P87/ibm87n33.xml", "xmlconf/ibm/not-wf/P87/ibm87n34.xml", 359 "xmlconf/ibm/not-wf/P87/ibm87n35.xml", "xmlconf/ibm/not-wf/P87/ibm87n36.xml", 360 "xmlconf/ibm/not-wf/P87/ibm87n37.xml", "xmlconf/ibm/not-wf/P87/ibm87n38.xml", 361 "xmlconf/ibm/not-wf/P87/ibm87n39.xml", "xmlconf/ibm/not-wf/P87/ibm87n40.xml", 362 "xmlconf/ibm/not-wf/P87/ibm87n41.xml", "xmlconf/ibm/not-wf/P87/ibm87n42.xml", 363 "xmlconf/ibm/not-wf/P87/ibm87n43.xml", "xmlconf/ibm/not-wf/P87/ibm87n44.xml", 364 "xmlconf/ibm/not-wf/P87/ibm87n45.xml", "xmlconf/ibm/not-wf/P87/ibm87n46.xml", 365 "xmlconf/ibm/not-wf/P87/ibm87n47.xml", "xmlconf/ibm/not-wf/P87/ibm87n48.xml", 366 "xmlconf/ibm/not-wf/P87/ibm87n49.xml", "xmlconf/ibm/not-wf/P87/ibm87n50.xml", 367 "xmlconf/ibm/not-wf/P87/ibm87n51.xml", "xmlconf/ibm/not-wf/P87/ibm87n52.xml", 368 "xmlconf/ibm/not-wf/P87/ibm87n53.xml", "xmlconf/ibm/not-wf/P87/ibm87n54.xml", 369 "xmlconf/ibm/not-wf/P87/ibm87n55.xml", "xmlconf/ibm/not-wf/P87/ibm87n56.xml", 370 "xmlconf/ibm/not-wf/P87/ibm87n57.xml", "xmlconf/ibm/not-wf/P87/ibm87n58.xml", 371 "xmlconf/ibm/not-wf/P87/ibm87n59.xml", "xmlconf/ibm/not-wf/P87/ibm87n60.xml", 372 "xmlconf/ibm/not-wf/P87/ibm87n61.xml", "xmlconf/ibm/not-wf/P87/ibm87n62.xml", 373 "xmlconf/ibm/not-wf/P87/ibm87n63.xml", "xmlconf/ibm/not-wf/P87/ibm87n64.xml", 374 "xmlconf/ibm/not-wf/P87/ibm87n66.xml", "xmlconf/ibm/not-wf/P87/ibm87n67.xml", 375 "xmlconf/ibm/not-wf/P87/ibm87n68.xml", "xmlconf/ibm/not-wf/P87/ibm87n69.xml", 376 "xmlconf/ibm/not-wf/P87/ibm87n70.xml", "xmlconf/ibm/not-wf/P87/ibm87n71.xml", 377 "xmlconf/ibm/not-wf/P87/ibm87n72.xml", "xmlconf/ibm/not-wf/P87/ibm87n73.xml", 378 "xmlconf/ibm/not-wf/P87/ibm87n74.xml", "xmlconf/ibm/not-wf/P87/ibm87n75.xml", 379 "xmlconf/ibm/not-wf/P87/ibm87n76.xml", "xmlconf/ibm/not-wf/P87/ibm87n77.xml", 380 "xmlconf/ibm/not-wf/P87/ibm87n78.xml", "xmlconf/ibm/not-wf/P87/ibm87n79.xml", 381 "xmlconf/ibm/not-wf/P87/ibm87n80.xml", "xmlconf/ibm/not-wf/P87/ibm87n81.xml", 382 "xmlconf/ibm/not-wf/P87/ibm87n82.xml", "xmlconf/ibm/not-wf/P87/ibm87n83.xml", 383 "xmlconf/ibm/not-wf/P87/ibm87n84.xml", "xmlconf/ibm/not-wf/P87/ibm87n85.xml", 384 "xmlconf/ibm/not-wf/P88/ibm88n01.xml", "xmlconf/ibm/not-wf/P88/ibm88n02.xml", 385 "xmlconf/ibm/not-wf/P88/ibm88n03.xml", "xmlconf/ibm/not-wf/P88/ibm88n04.xml", 386 "xmlconf/ibm/not-wf/P88/ibm88n05.xml", "xmlconf/ibm/not-wf/P88/ibm88n06.xml", 387 "xmlconf/ibm/not-wf/P88/ibm88n08.xml", "xmlconf/ibm/not-wf/P88/ibm88n09.xml", 388 "xmlconf/ibm/not-wf/P88/ibm88n10.xml", "xmlconf/ibm/not-wf/P88/ibm88n11.xml", 389 "xmlconf/ibm/not-wf/P88/ibm88n12.xml", "xmlconf/ibm/not-wf/P88/ibm88n13.xml", 390 "xmlconf/ibm/not-wf/P88/ibm88n14.xml", "xmlconf/ibm/not-wf/P88/ibm88n15.xml", 391 "xmlconf/ibm/not-wf/P88/ibm88n16.xml", "xmlconf/ibm/not-wf/P89/ibm89n01.xml", 392 "xmlconf/ibm/not-wf/P89/ibm89n02.xml", "xmlconf/ibm/not-wf/P89/ibm89n03.xml", 393 "xmlconf/ibm/not-wf/P89/ibm89n04.xml", "xmlconf/ibm/not-wf/P89/ibm89n05.xml", 394 "xmlconf/ibm/valid/P09/ibm09v01.xml", "xmlconf/ibm/valid/P09/ibm09v02.xml", 395 "xmlconf/ibm/valid/P09/ibm09v03.xml", "xmlconf/ibm/valid/P09/ibm09v04.xml", 396 "xmlconf/ibm/valid/P09/ibm09v05.xml", "xmlconf/ibm/valid/P10/ibm10v01.xml", 397 "xmlconf/ibm/valid/P10/ibm10v02.xml", "xmlconf/ibm/valid/P10/ibm10v03.xml", 398 "xmlconf/ibm/valid/P10/ibm10v04.xml", "xmlconf/ibm/valid/P10/ibm10v05.xml", 399 "xmlconf/ibm/valid/P10/ibm10v06.xml", "xmlconf/ibm/valid/P10/ibm10v07.xml", 400 "xmlconf/ibm/valid/P10/ibm10v08.xml", "xmlconf/ibm/valid/P28/ibm28v02.xml", 401 "xmlconf/ibm/valid/P29/ibm29v01.xml", "xmlconf/ibm/valid/P29/ibm29v02.xml", 402 "xmlconf/ibm/valid/P32/ibm32v02.xml", "xmlconf/ibm/valid/P43/ibm43v01.xml", 403 "xmlconf/ibm/valid/P67/ibm67v01.xml", "xmlconf/ibm/valid/P78/ibm78v01.xml", 404 ]; 405 406 validateTests("xmlconf/ibm/ibm_oasis_invalid.xml", ignoreList); 407 validateTests("xmlconf/ibm/ibm_oasis_not-wf.xml", ignoreList); 408 validateTests("xmlconf/ibm/ibm_oasis_valid.xml", ignoreList); 409 } 410 411 void validateTests(string mainFile, string[] ignoreList) 412 { 413 import std.algorithm : canFind, filter; 414 import std.exception : enforce; 415 import std.file : readText; 416 import std.format : format; 417 import std.path : buildPath, dirName; 418 import std.typecons : Nullable, nullable; 419 420 foreach(entity; parseXML!simpleXML(readText(mainFile)). 421 filter!(a => a.type == EntityType.elementStart && a.name == "TEST")()) 422 { 423 Nullable!bool tt; 424 string uri; 425 foreach(attr; entity.attributes) 426 { 427 if(attr.name == "TYPE") 428 { 429 switch(attr.value) 430 { 431 case "valid": tt = nullable(true); break; 432 case "invalid": 433 case "not-wf": 434 case "error": tt = nullable(false); break; 435 default: throw new Exception(format("Unexpected test type: %s", attr.value)); 436 } 437 } 438 else if(attr.name == "URI") 439 uri = attr.value; 440 } 441 enforce(!tt.isNull, format("In %s, %s: TEST tag missing TYPE attribute", mainFile, entity.pos)); 442 enforce(!uri.empty, format("In %s, %s: TEST tag missing URI attribute", mainFile, entity.pos)); 443 444 auto file = buildPath(mainFile.dirName, uri); 445 if(ignoreList.canFind(file)) 446 continue; 447 if(tt.get) 448 parseExpectSuccess(file); 449 else 450 parseExpectFailure(file); 451 } 452 } 453 454 void parseExpectSuccess(string file) 455 { 456 import std.encoding : BOM, getBOM; 457 import std.exception : assertNotThrown, enforce; 458 import std.format : format; 459 import std.file : exists, read, readText; 460 import std.utf : UTFException; 461 462 enforce(file.exists, format("%s does not exist", file)); 463 immutable bom = getBOM(cast(ubyte[])read(file)).schema; 464 // FIXME This only works properly with little-endian machines right now, and 465 // we need a way to process big endian encodings. 466 switch(bom) 467 { 468 case BOM.none: 469 case BOM.utf8: 470 { 471 auto text = stripBOM(file.readText()); 472 assertNotThrown!XMLParsingException(parseEverything(text), format("%s failed", file)); 473 break; 474 } 475 case BOM.utf16le: 476 { 477 auto text = stripBOM(file.readText!wstring()); 478 assertNotThrown!XMLParsingException(parseEverything(text), format("%s failed", file)); 479 break; 480 } 481 default: throw new Exception(format("Unsupported encoding: %s, file: %s", bom, file)); 482 } 483 } 484 485 void parseExpectFailure(string file) 486 { 487 import std.encoding : BOM, getBOM; 488 import std.exception : assertThrown, enforce; 489 import std.format : format; 490 import std.file : exists, read; 491 enforce(file.exists, format("%s does not exist", file)); 492 493 immutable bom = getBOM(cast(ubyte[])read(file)).schema; 494 // FIXME This only works properly with little-endian machines right now, and 495 // we need a way to process big endian encodings. 496 switch(bom) 497 { 498 case BOM.none: 499 case BOM.utf8: 500 { 501 auto text = stripBOM(cast(string)file.read()); 502 assertThrown!XMLParsingException(parseEverything(text), format("%s failed", file)); 503 break; 504 } 505 case BOM.utf16le: 506 { 507 auto text = stripBOM(cast(wstring)file.read()); 508 assertThrown!XMLParsingException(parseEverything(text), format("%s failed", file)); 509 break; 510 } 511 default: throw new Exception(format("Unsupported encoding: %s, file: %s", bom, file)); 512 } 513 } 514 515 void parseEverything(S)(S xml) 516 { 517 with(EntityType) foreach(entity; parseXML(xml)) 518 { 519 final switch(entity.type) 520 { 521 case cdata: break; 522 case comment: break; 523 case elementStart: auto name = entity.name; break; 524 case elementEnd: goto case elementStart; 525 case elementEmpty: goto case elementStart; 526 case pi: goto case elementStart; 527 case text: break; 528 } 529 530 final switch(entity.type) 531 { 532 case cdata: auto text = entity.text; break; 533 case comment: goto case cdata; 534 case elementStart: 535 { 536 foreach(attr; entity.attributes) 537 { 538 auto name = attr.name; 539 auto value = attr.value; 540 } 541 break; 542 } 543 case elementEnd: break; 544 case elementEmpty: goto case elementStart; 545 case pi: goto case cdata; 546 case text: goto case cdata; 547 } 548 } 549 } 550 551 552 // To be replaced by std.utf.stripBOM once it's available. 553 R stripBOM(R)(R range) 554 if (isForwardRange!R && isSomeChar!(ElementType!R)) 555 { 556 import std.utf : decodeFront, UseReplacementDchar; 557 if (range.empty) 558 return range; 559 auto orig = range.save; 560 immutable c = range.decodeFront!(UseReplacementDchar.yes)(); 561 return c == '\uFEFF' ? range : orig; 562 }