1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 package org.jaxen.saxpath.base;
45
46
47
48
49
50
51
52
53
54 final class Verifier {
55
56
57
58
59
60
61
62
63
64
65 static boolean isXMLNCNameCharacter(char c) {
66
67 return (isXMLLetter(c) || isXMLDigit(c) || c == '.' || c == '-'
68 || c == '_' || isXMLCombiningChar(c)
69 || isXMLExtender(c));
70 }
71
72
73
74
75
76
77
78
79
80
81
82 static boolean isXMLNCNameStartCharacter(char c) {
83
84 return (isXMLLetter(c) || c == '_');
85
86 }
87
88
89
90
91
92
93
94
95 static boolean isXMLLetter(char c) {
96
97
98
99
100
101 if (c < 0x0041) return false; if (c <= 0x005a) return true;
102 if (c < 0x0061) return false; if (c <= 0x007A) return true;
103 if (c < 0x00C0) return false; if (c <= 0x00D6) return true;
104 if (c < 0x00D8) return false; if (c <= 0x00F6) return true;
105 if (c < 0x00F8) return false; if (c <= 0x0131) return true;
106 if (c < 0x0134) return false; if (c <= 0x013E) return true;
107 if (c < 0x0141) return false; if (c <= 0x0148) return true;
108 if (c < 0x014A) return false; if (c <= 0x017E) return true;
109 if (c < 0x0180) return false; if (c <= 0x01C3) return true;
110 if (c < 0x01CD) return false; if (c <= 0x01F0) return true;
111 if (c < 0x01F4) return false; if (c <= 0x01F5) return true;
112 if (c < 0x01FA) return false; if (c <= 0x0217) return true;
113 if (c < 0x0250) return false; if (c <= 0x02A8) return true;
114 if (c < 0x02BB) return false; if (c <= 0x02C1) return true;
115 if (c == 0x0386) return true;
116 if (c < 0x0388) return false; if (c <= 0x038A) return true;
117 if (c == 0x038C) return true;
118 if (c < 0x038E) return false; if (c <= 0x03A1) return true;
119 if (c < 0x03A3) return false; if (c <= 0x03CE) return true;
120 if (c < 0x03D0) return false; if (c <= 0x03D6) return true;
121 if (c == 0x03DA) return true;
122 if (c == 0x03DC) return true;
123 if (c == 0x03DE) return true;
124 if (c == 0x03E0) return true;
125 if (c < 0x03E2) return false; if (c <= 0x03F3) return true;
126 if (c < 0x0401) return false; if (c <= 0x040C) return true;
127 if (c < 0x040E) return false; if (c <= 0x044F) return true;
128 if (c < 0x0451) return false; if (c <= 0x045C) return true;
129 if (c < 0x045E) return false; if (c <= 0x0481) return true;
130 if (c < 0x0490) return false; if (c <= 0x04C4) return true;
131 if (c < 0x04C7) return false; if (c <= 0x04C8) return true;
132 if (c < 0x04CB) return false; if (c <= 0x04CC) return true;
133 if (c < 0x04D0) return false; if (c <= 0x04EB) return true;
134 if (c < 0x04EE) return false; if (c <= 0x04F5) return true;
135 if (c < 0x04F8) return false; if (c <= 0x04F9) return true;
136 if (c < 0x0531) return false; if (c <= 0x0556) return true;
137 if (c == 0x0559) return true;
138 if (c < 0x0561) return false; if (c <= 0x0586) return true;
139 if (c < 0x05D0) return false; if (c <= 0x05EA) return true;
140 if (c < 0x05F0) return false; if (c <= 0x05F2) return true;
141 if (c < 0x0621) return false; if (c <= 0x063A) return true;
142 if (c < 0x0641) return false; if (c <= 0x064A) return true;
143 if (c < 0x0671) return false; if (c <= 0x06B7) return true;
144 if (c < 0x06BA) return false; if (c <= 0x06BE) return true;
145 if (c < 0x06C0) return false; if (c <= 0x06CE) return true;
146 if (c < 0x06D0) return false; if (c <= 0x06D3) return true;
147 if (c == 0x06D5) return true;
148 if (c < 0x06E5) return false; if (c <= 0x06E6) return true;
149 if (c < 0x0905) return false; if (c <= 0x0939) return true;
150 if (c == 0x093D) return true;
151 if (c < 0x0958) return false; if (c <= 0x0961) return true;
152 if (c < 0x0985) return false; if (c <= 0x098C) return true;
153 if (c < 0x098F) return false; if (c <= 0x0990) return true;
154 if (c < 0x0993) return false; if (c <= 0x09A8) return true;
155 if (c < 0x09AA) return false; if (c <= 0x09B0) return true;
156 if (c == 0x09B2) return true;
157 if (c < 0x09B6) return false; if (c <= 0x09B9) return true;
158 if (c < 0x09DC) return false; if (c <= 0x09DD) return true;
159 if (c < 0x09DF) return false; if (c <= 0x09E1) return true;
160 if (c < 0x09F0) return false; if (c <= 0x09F1) return true;
161 if (c < 0x0A05) return false; if (c <= 0x0A0A) return true;
162 if (c < 0x0A0F) return false; if (c <= 0x0A10) return true;
163 if (c < 0x0A13) return false; if (c <= 0x0A28) return true;
164 if (c < 0x0A2A) return false; if (c <= 0x0A30) return true;
165 if (c < 0x0A32) return false; if (c <= 0x0A33) return true;
166 if (c < 0x0A35) return false; if (c <= 0x0A36) return true;
167 if (c < 0x0A38) return false; if (c <= 0x0A39) return true;
168 if (c < 0x0A59) return false; if (c <= 0x0A5C) return true;
169 if (c == 0x0A5E) return true;
170 if (c < 0x0A72) return false; if (c <= 0x0A74) return true;
171 if (c < 0x0A85) return false; if (c <= 0x0A8B) return true;
172 if (c == 0x0A8D) return true;
173 if (c < 0x0A8F) return false; if (c <= 0x0A91) return true;
174 if (c < 0x0A93) return false; if (c <= 0x0AA8) return true;
175 if (c < 0x0AAA) return false; if (c <= 0x0AB0) return true;
176 if (c < 0x0AB2) return false; if (c <= 0x0AB3) return true;
177 if (c < 0x0AB5) return false; if (c <= 0x0AB9) return true;
178 if (c == 0x0ABD) return true;
179 if (c == 0x0AE0) return true;
180 if (c < 0x0B05) return false; if (c <= 0x0B0C) return true;
181 if (c < 0x0B0F) return false; if (c <= 0x0B10) return true;
182 if (c < 0x0B13) return false; if (c <= 0x0B28) return true;
183 if (c < 0x0B2A) return false; if (c <= 0x0B30) return true;
184 if (c < 0x0B32) return false; if (c <= 0x0B33) return true;
185 if (c < 0x0B36) return false; if (c <= 0x0B39) return true;
186 if (c == 0x0B3D) return true;
187 if (c < 0x0B5C) return false; if (c <= 0x0B5D) return true;
188 if (c < 0x0B5F) return false; if (c <= 0x0B61) return true;
189 if (c < 0x0B85) return false; if (c <= 0x0B8A) return true;
190 if (c < 0x0B8E) return false; if (c <= 0x0B90) return true;
191 if (c < 0x0B92) return false; if (c <= 0x0B95) return true;
192 if (c < 0x0B99) return false; if (c <= 0x0B9A) return true;
193 if (c == 0x0B9C) return true;
194 if (c < 0x0B9E) return false; if (c <= 0x0B9F) return true;
195 if (c < 0x0BA3) return false; if (c <= 0x0BA4) return true;
196 if (c < 0x0BA8) return false; if (c <= 0x0BAA) return true;
197 if (c < 0x0BAE) return false; if (c <= 0x0BB5) return true;
198 if (c < 0x0BB7) return false; if (c <= 0x0BB9) return true;
199 if (c < 0x0C05) return false; if (c <= 0x0C0C) return true;
200 if (c < 0x0C0E) return false; if (c <= 0x0C10) return true;
201 if (c < 0x0C12) return false; if (c <= 0x0C28) return true;
202 if (c < 0x0C2A) return false; if (c <= 0x0C33) return true;
203 if (c < 0x0C35) return false; if (c <= 0x0C39) return true;
204 if (c < 0x0C60) return false; if (c <= 0x0C61) return true;
205 if (c < 0x0C85) return false; if (c <= 0x0C8C) return true;
206 if (c < 0x0C8E) return false; if (c <= 0x0C90) return true;
207 if (c < 0x0C92) return false; if (c <= 0x0CA8) return true;
208 if (c < 0x0CAA) return false; if (c <= 0x0CB3) return true;
209 if (c < 0x0CB5) return false; if (c <= 0x0CB9) return true;
210 if (c == 0x0CDE) return true;
211 if (c < 0x0CE0) return false; if (c <= 0x0CE1) return true;
212 if (c < 0x0D05) return false; if (c <= 0x0D0C) return true;
213 if (c < 0x0D0E) return false; if (c <= 0x0D10) return true;
214 if (c < 0x0D12) return false; if (c <= 0x0D28) return true;
215 if (c < 0x0D2A) return false; if (c <= 0x0D39) return true;
216 if (c < 0x0D60) return false; if (c <= 0x0D61) return true;
217 if (c < 0x0E01) return false; if (c <= 0x0E2E) return true;
218 if (c == 0x0E30) return true;
219 if (c < 0x0E32) return false; if (c <= 0x0E33) return true;
220 if (c < 0x0E40) return false; if (c <= 0x0E45) return true;
221 if (c < 0x0E81) return false; if (c <= 0x0E82) return true;
222 if (c == 0x0E84) return true;
223 if (c < 0x0E87) return false; if (c <= 0x0E88) return true;
224 if (c == 0x0E8A) return true;
225 if (c == 0x0E8D) return true;
226 if (c < 0x0E94) return false; if (c <= 0x0E97) return true;
227 if (c < 0x0E99) return false; if (c <= 0x0E9F) return true;
228 if (c < 0x0EA1) return false; if (c <= 0x0EA3) return true;
229 if (c == 0x0EA5) return true;
230 if (c == 0x0EA7) return true;
231 if (c < 0x0EAA) return false; if (c <= 0x0EAB) return true;
232 if (c < 0x0EAD) return false; if (c <= 0x0EAE) return true;
233 if (c == 0x0EB0) return true;
234 if (c < 0x0EB2) return false; if (c <= 0x0EB3) return true;
235 if (c == 0x0EBD) return true;
236 if (c < 0x0EC0) return false; if (c <= 0x0EC4) return true;
237 if (c < 0x0F40) return false; if (c <= 0x0F47) return true;
238 if (c < 0x0F49) return false; if (c <= 0x0F69) return true;
239 if (c < 0x10A0) return false; if (c <= 0x10C5) return true;
240 if (c < 0x10D0) return false; if (c <= 0x10F6) return true;
241 if (c == 0x1100) return true;
242 if (c < 0x1102) return false; if (c <= 0x1103) return true;
243 if (c < 0x1105) return false; if (c <= 0x1107) return true;
244 if (c == 0x1109) return true;
245 if (c < 0x110B) return false; if (c <= 0x110C) return true;
246 if (c < 0x110E) return false; if (c <= 0x1112) return true;
247 if (c == 0x113C) return true;
248 if (c == 0x113E) return true;
249 if (c == 0x1140) return true;
250 if (c == 0x114C) return true;
251 if (c == 0x114E) return true;
252 if (c == 0x1150) return true;
253 if (c < 0x1154) return false; if (c <= 0x1155) return true;
254 if (c == 0x1159) return true;
255 if (c < 0x115F) return false; if (c <= 0x1161) return true;
256 if (c == 0x1163) return true;
257 if (c == 0x1165) return true;
258 if (c == 0x1167) return true;
259 if (c == 0x1169) return true;
260 if (c < 0x116D) return false; if (c <= 0x116E) return true;
261 if (c < 0x1172) return false; if (c <= 0x1173) return true;
262 if (c == 0x1175) return true;
263 if (c == 0x119E) return true;
264 if (c == 0x11A8) return true;
265 if (c == 0x11AB) return true;
266 if (c < 0x11AE) return false; if (c <= 0x11AF) return true;
267 if (c < 0x11B7) return false; if (c <= 0x11B8) return true;
268 if (c == 0x11BA) return true;
269 if (c < 0x11BC) return false; if (c <= 0x11C2) return true;
270 if (c == 0x11EB) return true;
271 if (c == 0x11F0) return true;
272 if (c == 0x11F9) return true;
273 if (c < 0x1E00) return false; if (c <= 0x1E9B) return true;
274 if (c < 0x1EA0) return false; if (c <= 0x1EF9) return true;
275 if (c < 0x1F00) return false; if (c <= 0x1F15) return true;
276 if (c < 0x1F18) return false; if (c <= 0x1F1D) return true;
277 if (c < 0x1F20) return false; if (c <= 0x1F45) return true;
278 if (c < 0x1F48) return false; if (c <= 0x1F4D) return true;
279 if (c < 0x1F50) return false; if (c <= 0x1F57) return true;
280 if (c == 0x1F59) return true;
281 if (c == 0x1F5B) return true;
282 if (c == 0x1F5D) return true;
283 if (c < 0x1F5F) return false; if (c <= 0x1F7D) return true;
284 if (c < 0x1F80) return false; if (c <= 0x1FB4) return true;
285 if (c < 0x1FB6) return false; if (c <= 0x1FBC) return true;
286 if (c == 0x1FBE) return true;
287 if (c < 0x1FC2) return false; if (c <= 0x1FC4) return true;
288 if (c < 0x1FC6) return false; if (c <= 0x1FCC) return true;
289 if (c < 0x1FD0) return false; if (c <= 0x1FD3) return true;
290 if (c < 0x1FD6) return false; if (c <= 0x1FDB) return true;
291 if (c < 0x1FE0) return false; if (c <= 0x1FEC) return true;
292 if (c < 0x1FF2) return false; if (c <= 0x1FF4) return true;
293 if (c < 0x1FF6) return false; if (c <= 0x1FFC) return true;
294 if (c == 0x2126) return true;
295 if (c < 0x212A) return false; if (c <= 0x212B) return true;
296 if (c == 0x212E) return true;
297 if (c < 0x2180) return false; if (c <= 0x2182) return true;
298 if (c == 0x3007) return true;
299 if (c < 0x3021) return false; if (c <= 0x3029) return true;
300 if (c < 0x3041) return false; if (c <= 0x3094) return true;
301 if (c < 0x30A1) return false; if (c <= 0x30FA) return true;
302 if (c < 0x3105) return false; if (c <= 0x312C) return true;
303 if (c < 0x4E00) return false; if (c <= 0x9FA5) return true;
304 if (c < 0xAC00) return false; if (c <= 0xD7A3) return true;
305
306 return false;
307
308 }
309
310
311
312
313
314
315
316
317
318
319 static boolean isXMLCombiningChar(char c) {
320
321 if (c < 0x0300) return false; if (c <= 0x0345) return true;
322 if (c < 0x0360) return false; if (c <= 0x0361) return true;
323 if (c < 0x0483) return false; if (c <= 0x0486) return true;
324 if (c < 0x0591) return false; if (c <= 0x05A1) return true;
325
326 if (c < 0x05A3) return false; if (c <= 0x05B9) return true;
327 if (c < 0x05BB) return false; if (c <= 0x05BD) return true;
328 if (c == 0x05BF) return true;
329 if (c < 0x05C1) return false; if (c <= 0x05C2) return true;
330
331 if (c == 0x05C4) return true;
332 if (c < 0x064B) return false; if (c <= 0x0652) return true;
333 if (c == 0x0670) return true;
334 if (c < 0x06D6) return false; if (c <= 0x06E4) return true;
335 if (c < 0x06E7) return false; if (c <= 0x06E8) return true;
336
337 if (c < 0x06EA) return false; if (c <= 0x06ED) return true;
338 if (c < 0x0901) return false; if (c <= 0x0903) return true;
339 if (c == 0x093C) return true;
340 if (c < 0x093E) return false; if (c <= 0x094C) return true;
341
342 if (c == 0x094D) return true;
343 if (c < 0x0951) return false; if (c <= 0x0954) return true;
344 if (c < 0x0962) return false; if (c <= 0x0963) return true;
345 if (c < 0x0981) return false; if (c <= 0x0983) return true;
346
347 if (c == 0x09BC) return true;
348 if (c == 0x09BE) return true;
349 if (c == 0x09BF) return true;
350 if (c < 0x09C0) return false; if (c <= 0x09C4) return true;
351 if (c < 0x09C7) return false; if (c <= 0x09C8) return true;
352
353 if (c < 0x09CB) return false; if (c <= 0x09CD) return true;
354 if (c == 0x09D7) return true;
355 if (c < 0x09E2) return false; if (c <= 0x09E3) return true;
356 if (c == 0x0A02) return true;
357 if (c == 0x0A3C) return true;
358
359 if (c == 0x0A3E) return true;
360 if (c == 0x0A3F) return true;
361 if (c < 0x0A40) return false; if (c <= 0x0A42) return true;
362 if (c < 0x0A47) return false; if (c <= 0x0A48) return true;
363
364 if (c < 0x0A4B) return false; if (c <= 0x0A4D) return true;
365 if (c < 0x0A70) return false; if (c <= 0x0A71) return true;
366 if (c < 0x0A81) return false; if (c <= 0x0A83) return true;
367 if (c == 0x0ABC) return true;
368
369 if (c < 0x0ABE) return false; if (c <= 0x0AC5) return true;
370 if (c < 0x0AC7) return false; if (c <= 0x0AC9) return true;
371 if (c < 0x0ACB) return false; if (c <= 0x0ACD) return true;
372
373 if (c < 0x0B01) return false; if (c <= 0x0B03) return true;
374 if (c == 0x0B3C) return true;
375 if (c < 0x0B3E) return false; if (c <= 0x0B43) return true;
376 if (c < 0x0B47) return false; if (c <= 0x0B48) return true;
377
378 if (c < 0x0B4B) return false; if (c <= 0x0B4D) return true;
379 if (c < 0x0B56) return false; if (c <= 0x0B57) return true;
380 if (c < 0x0B82) return false; if (c <= 0x0B83) return true;
381
382 if (c < 0x0BBE) return false; if (c <= 0x0BC2) return true;
383 if (c < 0x0BC6) return false; if (c <= 0x0BC8) return true;
384 if (c < 0x0BCA) return false; if (c <= 0x0BCD) return true;
385 if (c == 0x0BD7) return true;
386
387 if (c < 0x0C01) return false; if (c <= 0x0C03) return true;
388 if (c < 0x0C3E) return false; if (c <= 0x0C44) return true;
389 if (c < 0x0C46) return false; if (c <= 0x0C48) return true;
390
391 if (c < 0x0C4A) return false; if (c <= 0x0C4D) return true;
392 if (c < 0x0C55) return false; if (c <= 0x0C56) return true;
393 if (c < 0x0C82) return false; if (c <= 0x0C83) return true;
394
395 if (c < 0x0CBE) return false; if (c <= 0x0CC4) return true;
396 if (c < 0x0CC6) return false; if (c <= 0x0CC8) return true;
397 if (c < 0x0CCA) return false; if (c <= 0x0CCD) return true;
398
399 if (c < 0x0CD5) return false; if (c <= 0x0CD6) return true;
400 if (c < 0x0D02) return false; if (c <= 0x0D03) return true;
401 if (c < 0x0D3E) return false; if (c <= 0x0D43) return true;
402
403 if (c < 0x0D46) return false; if (c <= 0x0D48) return true;
404 if (c < 0x0D4A) return false; if (c <= 0x0D4D) return true;
405 if (c == 0x0D57) return true;
406 if (c == 0x0E31) return true;
407
408 if (c < 0x0E34) return false; if (c <= 0x0E3A) return true;
409 if (c < 0x0E47) return false; if (c <= 0x0E4E) return true;
410 if (c == 0x0EB1) return true;
411 if (c < 0x0EB4) return false; if (c <= 0x0EB9) return true;
412
413 if (c < 0x0EBB) return false; if (c <= 0x0EBC) return true;
414 if (c < 0x0EC8) return false; if (c <= 0x0ECD) return true;
415 if (c < 0x0F18) return false; if (c <= 0x0F19) return true;
416 if (c == 0x0F35) return true;
417
418 if (c == 0x0F37) return true;
419 if (c == 0x0F39) return true;
420 if (c == 0x0F3E) return true;
421 if (c == 0x0F3F) return true;
422 if (c < 0x0F71) return false; if (c <= 0x0F84) return true;
423
424 if (c < 0x0F86) return false; if (c <= 0x0F8B) return true;
425 if (c < 0x0F90) return false; if (c <= 0x0F95) return true;
426 if (c == 0x0F97) return true;
427 if (c < 0x0F99) return false; if (c <= 0x0FAD) return true;
428
429 if (c < 0x0FB1) return false; if (c <= 0x0FB7) return true;
430 if (c == 0x0FB9) return true;
431 if (c < 0x20D0) return false; if (c <= 0x20DC) return true;
432 if (c == 0x20E1) return true;
433
434 if (c < 0x302A) return false; if (c <= 0x302F) return true;
435 if (c == 0x3099) return true;
436 if (c == 0x309A) return true;
437
438 return false;
439
440 }
441
442
443
444
445
446
447
448
449
450 static boolean isXMLExtender(char c) {
451
452 if (c < 0x00B6) return false;
453
454
455 if (c == 0x00B7) return true;
456 if (c == 0x02D0) return true;
457 if (c == 0x02D1) return true;
458 if (c == 0x0387) return true;
459 if (c == 0x0640) return true;
460 if (c == 0x0E46) return true;
461 if (c == 0x0EC6) return true;
462 if (c == 0x3005) return true;
463
464 if (c < 0x3031) return false; if (c <= 0x3035) return true;
465 if (c < 0x309D) return false; if (c <= 0x309E) return true;
466 if (c < 0x30FC) return false; if (c <= 0x30FE) return true;
467
468 return false;
469
470 }
471
472
473
474
475
476
477
478
479 static boolean isXMLDigit(char c) {
480
481 if (c < 0x0030) return false; if (c <= 0x0039) return true;
482 if (c < 0x0660) return false; if (c <= 0x0669) return true;
483 if (c < 0x06F0) return false; if (c <= 0x06F9) return true;
484 if (c < 0x0966) return false; if (c <= 0x096F) return true;
485
486 if (c < 0x09E6) return false; if (c <= 0x09EF) return true;
487 if (c < 0x0A66) return false; if (c <= 0x0A6F) return true;
488 if (c < 0x0AE6) return false; if (c <= 0x0AEF) return true;
489
490 if (c < 0x0B66) return false; if (c <= 0x0B6F) return true;
491 if (c < 0x0BE7) return false; if (c <= 0x0BEF) return true;
492 if (c < 0x0C66) return false; if (c <= 0x0C6F) return true;
493
494 if (c < 0x0CE6) return false; if (c <= 0x0CEF) return true;
495 if (c < 0x0D66) return false; if (c <= 0x0D6F) return true;
496 if (c < 0x0E50) return false; if (c <= 0x0E59) return true;
497
498 if (c < 0x0ED0) return false; if (c <= 0x0ED9) return true;
499 if (c < 0x0F20) return false; if (c <= 0x0F29) return true;
500
501 return false;
502 }
503
504 }