001 /* 002 * Copyright (c) 2008-2009 Mozilla Foundation 003 * 004 * Permission is hereby granted, free of charge, to any person obtaining a 005 * copy of this software and associated documentation files (the "Software"), 006 * to deal in the Software without restriction, including without limitation 007 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 008 * and/or sell copies of the Software, and to permit persons to whom the 009 * Software is furnished to do so, subject to the following conditions: 010 * 011 * The above copyright notice and this permission notice shall be included in 012 * all copies or substantial portions of the Software. 013 * 014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 017 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 019 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 020 * DEALINGS IN THE SOFTWARE. 021 */ 022 023 package nu.validator.htmlparser.impl; 024 025 public final class NCName { 026 // [NOCPP[ 027 028 private static final int SURROGATE_OFFSET = 0x10000 - (0xD800 << 10) - 0xDC00; 029 030 private static final char[] HEX_TABLE = "0123456789ABCDEF".toCharArray(); 031 032 public static boolean isNCNameStart(char c) { 033 return ((c >= '\u0041' && c <= '\u005A') 034 || (c >= '\u0061' && c <= '\u007A') 035 || (c >= '\u00C0' && c <= '\u00D6') 036 || (c >= '\u00D8' && c <= '\u00F6') 037 || (c >= '\u00F8' && c <= '\u00FF') 038 || (c >= '\u0100' && c <= '\u0131') 039 || (c >= '\u0134' && c <= '\u013E') 040 || (c >= '\u0141' && c <= '\u0148') 041 || (c >= '\u014A' && c <= '\u017E') 042 || (c >= '\u0180' && c <= '\u01C3') 043 || (c >= '\u01CD' && c <= '\u01F0') 044 || (c >= '\u01F4' && c <= '\u01F5') 045 || (c >= '\u01FA' && c <= '\u0217') 046 || (c >= '\u0250' && c <= '\u02A8') 047 || (c >= '\u02BB' && c <= '\u02C1') || (c == '\u0386') 048 || (c >= '\u0388' && c <= '\u038A') || (c == '\u038C') 049 || (c >= '\u038E' && c <= '\u03A1') 050 || (c >= '\u03A3' && c <= '\u03CE') 051 || (c >= '\u03D0' && c <= '\u03D6') || (c == '\u03DA') 052 || (c == '\u03DC') || (c == '\u03DE') || (c == '\u03E0') 053 || (c >= '\u03E2' && c <= '\u03F3') 054 || (c >= '\u0401' && c <= '\u040C') 055 || (c >= '\u040E' && c <= '\u044F') 056 || (c >= '\u0451' && c <= '\u045C') 057 || (c >= '\u045E' && c <= '\u0481') 058 || (c >= '\u0490' && c <= '\u04C4') 059 || (c >= '\u04C7' && c <= '\u04C8') 060 || (c >= '\u04CB' && c <= '\u04CC') 061 || (c >= '\u04D0' && c <= '\u04EB') 062 || (c >= '\u04EE' && c <= '\u04F5') 063 || (c >= '\u04F8' && c <= '\u04F9') 064 || (c >= '\u0531' && c <= '\u0556') || (c == '\u0559') 065 || (c >= '\u0561' && c <= '\u0586') 066 || (c >= '\u05D0' && c <= '\u05EA') 067 || (c >= '\u05F0' && c <= '\u05F2') 068 || (c >= '\u0621' && c <= '\u063A') 069 || (c >= '\u0641' && c <= '\u064A') 070 || (c >= '\u0671' && c <= '\u06B7') 071 || (c >= '\u06BA' && c <= '\u06BE') 072 || (c >= '\u06C0' && c <= '\u06CE') 073 || (c >= '\u06D0' && c <= '\u06D3') || (c == '\u06D5') 074 || (c >= '\u06E5' && c <= '\u06E6') 075 || (c >= '\u0905' && c <= '\u0939') || (c == '\u093D') 076 || (c >= '\u0958' && c <= '\u0961') 077 || (c >= '\u0985' && c <= '\u098C') 078 || (c >= '\u098F' && c <= '\u0990') 079 || (c >= '\u0993' && c <= '\u09A8') 080 || (c >= '\u09AA' && c <= '\u09B0') || (c == '\u09B2') 081 || (c >= '\u09B6' && c <= '\u09B9') 082 || (c >= '\u09DC' && c <= '\u09DD') 083 || (c >= '\u09DF' && c <= '\u09E1') 084 || (c >= '\u09F0' && c <= '\u09F1') 085 || (c >= '\u0A05' && c <= '\u0A0A') 086 || (c >= '\u0A0F' && c <= '\u0A10') 087 || (c >= '\u0A13' && c <= '\u0A28') 088 || (c >= '\u0A2A' && c <= '\u0A30') 089 || (c >= '\u0A32' && c <= '\u0A33') 090 || (c >= '\u0A35' && c <= '\u0A36') 091 || (c >= '\u0A38' && c <= '\u0A39') 092 || (c >= '\u0A59' && c <= '\u0A5C') || (c == '\u0A5E') 093 || (c >= '\u0A72' && c <= '\u0A74') 094 || (c >= '\u0A85' && c <= '\u0A8B') || (c == '\u0A8D') 095 || (c >= '\u0A8F' && c <= '\u0A91') 096 || (c >= '\u0A93' && c <= '\u0AA8') 097 || (c >= '\u0AAA' && c <= '\u0AB0') 098 || (c >= '\u0AB2' && c <= '\u0AB3') 099 || (c >= '\u0AB5' && c <= '\u0AB9') || (c == '\u0ABD') 100 || (c == '\u0AE0') || (c >= '\u0B05' && c <= '\u0B0C') 101 || (c >= '\u0B0F' && c <= '\u0B10') 102 || (c >= '\u0B13' && c <= '\u0B28') 103 || (c >= '\u0B2A' && c <= '\u0B30') 104 || (c >= '\u0B32' && c <= '\u0B33') 105 || (c >= '\u0B36' && c <= '\u0B39') || (c == '\u0B3D') 106 || (c >= '\u0B5C' && c <= '\u0B5D') 107 || (c >= '\u0B5F' && c <= '\u0B61') 108 || (c >= '\u0B85' && c <= '\u0B8A') 109 || (c >= '\u0B8E' && c <= '\u0B90') 110 || (c >= '\u0B92' && c <= '\u0B95') 111 || (c >= '\u0B99' && c <= '\u0B9A') || (c == '\u0B9C') 112 || (c >= '\u0B9E' && c <= '\u0B9F') 113 || (c >= '\u0BA3' && c <= '\u0BA4') 114 || (c >= '\u0BA8' && c <= '\u0BAA') 115 || (c >= '\u0BAE' && c <= '\u0BB5') 116 || (c >= '\u0BB7' && c <= '\u0BB9') 117 || (c >= '\u0C05' && c <= '\u0C0C') 118 || (c >= '\u0C0E' && c <= '\u0C10') 119 || (c >= '\u0C12' && c <= '\u0C28') 120 || (c >= '\u0C2A' && c <= '\u0C33') 121 || (c >= '\u0C35' && c <= '\u0C39') 122 || (c >= '\u0C60' && c <= '\u0C61') 123 || (c >= '\u0C85' && c <= '\u0C8C') 124 || (c >= '\u0C8E' && c <= '\u0C90') 125 || (c >= '\u0C92' && c <= '\u0CA8') 126 || (c >= '\u0CAA' && c <= '\u0CB3') 127 || (c >= '\u0CB5' && c <= '\u0CB9') || (c == '\u0CDE') 128 || (c >= '\u0CE0' && c <= '\u0CE1') 129 || (c >= '\u0D05' && c <= '\u0D0C') 130 || (c >= '\u0D0E' && c <= '\u0D10') 131 || (c >= '\u0D12' && c <= '\u0D28') 132 || (c >= '\u0D2A' && c <= '\u0D39') 133 || (c >= '\u0D60' && c <= '\u0D61') 134 || (c >= '\u0E01' && c <= '\u0E2E') || (c == '\u0E30') 135 || (c >= '\u0E32' && c <= '\u0E33') 136 || (c >= '\u0E40' && c <= '\u0E45') 137 || (c >= '\u0E81' && c <= '\u0E82') || (c == '\u0E84') 138 || (c >= '\u0E87' && c <= '\u0E88') || (c == '\u0E8A') 139 || (c == '\u0E8D') || (c >= '\u0E94' && c <= '\u0E97') 140 || (c >= '\u0E99' && c <= '\u0E9F') 141 || (c >= '\u0EA1' && c <= '\u0EA3') || (c == '\u0EA5') 142 || (c == '\u0EA7') || (c >= '\u0EAA' && c <= '\u0EAB') 143 || (c >= '\u0EAD' && c <= '\u0EAE') || (c == '\u0EB0') 144 || (c >= '\u0EB2' && c <= '\u0EB3') || (c == '\u0EBD') 145 || (c >= '\u0EC0' && c <= '\u0EC4') 146 || (c >= '\u0F40' && c <= '\u0F47') 147 || (c >= '\u0F49' && c <= '\u0F69') 148 || (c >= '\u10A0' && c <= '\u10C5') 149 || (c >= '\u10D0' && c <= '\u10F6') || (c == '\u1100') 150 || (c >= '\u1102' && c <= '\u1103') 151 || (c >= '\u1105' && c <= '\u1107') || (c == '\u1109') 152 || (c >= '\u110B' && c <= '\u110C') 153 || (c >= '\u110E' && c <= '\u1112') || (c == '\u113C') 154 || (c == '\u113E') || (c == '\u1140') || (c == '\u114C') 155 || (c == '\u114E') || (c == '\u1150') 156 || (c >= '\u1154' && c <= '\u1155') || (c == '\u1159') 157 || (c >= '\u115F' && c <= '\u1161') || (c == '\u1163') 158 || (c == '\u1165') || (c == '\u1167') || (c == '\u1169') 159 || (c >= '\u116D' && c <= '\u116E') 160 || (c >= '\u1172' && c <= '\u1173') || (c == '\u1175') 161 || (c == '\u119E') || (c == '\u11A8') || (c == '\u11AB') 162 || (c >= '\u11AE' && c <= '\u11AF') 163 || (c >= '\u11B7' && c <= '\u11B8') || (c == '\u11BA') 164 || (c >= '\u11BC' && c <= '\u11C2') || (c == '\u11EB') 165 || (c == '\u11F0') || (c == '\u11F9') 166 || (c >= '\u1E00' && c <= '\u1E9B') 167 || (c >= '\u1EA0' && c <= '\u1EF9') 168 || (c >= '\u1F00' && c <= '\u1F15') 169 || (c >= '\u1F18' && c <= '\u1F1D') 170 || (c >= '\u1F20' && c <= '\u1F45') 171 || (c >= '\u1F48' && c <= '\u1F4D') 172 || (c >= '\u1F50' && c <= '\u1F57') || (c == '\u1F59') 173 || (c == '\u1F5B') || (c == '\u1F5D') 174 || (c >= '\u1F5F' && c <= '\u1F7D') 175 || (c >= '\u1F80' && c <= '\u1FB4') 176 || (c >= '\u1FB6' && c <= '\u1FBC') || (c == '\u1FBE') 177 || (c >= '\u1FC2' && c <= '\u1FC4') 178 || (c >= '\u1FC6' && c <= '\u1FCC') 179 || (c >= '\u1FD0' && c <= '\u1FD3') 180 || (c >= '\u1FD6' && c <= '\u1FDB') 181 || (c >= '\u1FE0' && c <= '\u1FEC') 182 || (c >= '\u1FF2' && c <= '\u1FF4') 183 || (c >= '\u1FF6' && c <= '\u1FFC') || (c == '\u2126') 184 || (c >= '\u212A' && c <= '\u212B') || (c == '\u212E') 185 || (c >= '\u2180' && c <= '\u2182') 186 || (c >= '\u3041' && c <= '\u3094') 187 || (c >= '\u30A1' && c <= '\u30FA') 188 || (c >= '\u3105' && c <= '\u312C') 189 || (c >= '\uAC00' && c <= '\uD7A3') 190 || (c >= '\u4E00' && c <= '\u9FA5') || (c == '\u3007') 191 || (c >= '\u3021' && c <= '\u3029') || (c == '_')); 192 } 193 194 public static boolean isNCNameTrail(char c) { 195 return ((c >= '\u0030' && c <= '\u0039') 196 || (c >= '\u0660' && c <= '\u0669') 197 || (c >= '\u06F0' && c <= '\u06F9') 198 || (c >= '\u0966' && c <= '\u096F') 199 || (c >= '\u09E6' && c <= '\u09EF') 200 || (c >= '\u0A66' && c <= '\u0A6F') 201 || (c >= '\u0AE6' && c <= '\u0AEF') 202 || (c >= '\u0B66' && c <= '\u0B6F') 203 || (c >= '\u0BE7' && c <= '\u0BEF') 204 || (c >= '\u0C66' && c <= '\u0C6F') 205 || (c >= '\u0CE6' && c <= '\u0CEF') 206 || (c >= '\u0D66' && c <= '\u0D6F') 207 || (c >= '\u0E50' && c <= '\u0E59') 208 || (c >= '\u0ED0' && c <= '\u0ED9') 209 || (c >= '\u0F20' && c <= '\u0F29') 210 || (c >= '\u0041' && c <= '\u005A') 211 || (c >= '\u0061' && c <= '\u007A') 212 || (c >= '\u00C0' && c <= '\u00D6') 213 || (c >= '\u00D8' && c <= '\u00F6') 214 || (c >= '\u00F8' && c <= '\u00FF') 215 || (c >= '\u0100' && c <= '\u0131') 216 || (c >= '\u0134' && c <= '\u013E') 217 || (c >= '\u0141' && c <= '\u0148') 218 || (c >= '\u014A' && c <= '\u017E') 219 || (c >= '\u0180' && c <= '\u01C3') 220 || (c >= '\u01CD' && c <= '\u01F0') 221 || (c >= '\u01F4' && c <= '\u01F5') 222 || (c >= '\u01FA' && c <= '\u0217') 223 || (c >= '\u0250' && c <= '\u02A8') 224 || (c >= '\u02BB' && c <= '\u02C1') || (c == '\u0386') 225 || (c >= '\u0388' && c <= '\u038A') || (c == '\u038C') 226 || (c >= '\u038E' && c <= '\u03A1') 227 || (c >= '\u03A3' && c <= '\u03CE') 228 || (c >= '\u03D0' && c <= '\u03D6') || (c == '\u03DA') 229 || (c == '\u03DC') || (c == '\u03DE') || (c == '\u03E0') 230 || (c >= '\u03E2' && c <= '\u03F3') 231 || (c >= '\u0401' && c <= '\u040C') 232 || (c >= '\u040E' && c <= '\u044F') 233 || (c >= '\u0451' && c <= '\u045C') 234 || (c >= '\u045E' && c <= '\u0481') 235 || (c >= '\u0490' && c <= '\u04C4') 236 || (c >= '\u04C7' && c <= '\u04C8') 237 || (c >= '\u04CB' && c <= '\u04CC') 238 || (c >= '\u04D0' && c <= '\u04EB') 239 || (c >= '\u04EE' && c <= '\u04F5') 240 || (c >= '\u04F8' && c <= '\u04F9') 241 || (c >= '\u0531' && c <= '\u0556') || (c == '\u0559') 242 || (c >= '\u0561' && c <= '\u0586') 243 || (c >= '\u05D0' && c <= '\u05EA') 244 || (c >= '\u05F0' && c <= '\u05F2') 245 || (c >= '\u0621' && c <= '\u063A') 246 || (c >= '\u0641' && c <= '\u064A') 247 || (c >= '\u0671' && c <= '\u06B7') 248 || (c >= '\u06BA' && c <= '\u06BE') 249 || (c >= '\u06C0' && c <= '\u06CE') 250 || (c >= '\u06D0' && c <= '\u06D3') || (c == '\u06D5') 251 || (c >= '\u06E5' && c <= '\u06E6') 252 || (c >= '\u0905' && c <= '\u0939') || (c == '\u093D') 253 || (c >= '\u0958' && c <= '\u0961') 254 || (c >= '\u0985' && c <= '\u098C') 255 || (c >= '\u098F' && c <= '\u0990') 256 || (c >= '\u0993' && c <= '\u09A8') 257 || (c >= '\u09AA' && c <= '\u09B0') || (c == '\u09B2') 258 || (c >= '\u09B6' && c <= '\u09B9') 259 || (c >= '\u09DC' && c <= '\u09DD') 260 || (c >= '\u09DF' && c <= '\u09E1') 261 || (c >= '\u09F0' && c <= '\u09F1') 262 || (c >= '\u0A05' && c <= '\u0A0A') 263 || (c >= '\u0A0F' && c <= '\u0A10') 264 || (c >= '\u0A13' && c <= '\u0A28') 265 || (c >= '\u0A2A' && c <= '\u0A30') 266 || (c >= '\u0A32' && c <= '\u0A33') 267 || (c >= '\u0A35' && c <= '\u0A36') 268 || (c >= '\u0A38' && c <= '\u0A39') 269 || (c >= '\u0A59' && c <= '\u0A5C') || (c == '\u0A5E') 270 || (c >= '\u0A72' && c <= '\u0A74') 271 || (c >= '\u0A85' && c <= '\u0A8B') || (c == '\u0A8D') 272 || (c >= '\u0A8F' && c <= '\u0A91') 273 || (c >= '\u0A93' && c <= '\u0AA8') 274 || (c >= '\u0AAA' && c <= '\u0AB0') 275 || (c >= '\u0AB2' && c <= '\u0AB3') 276 || (c >= '\u0AB5' && c <= '\u0AB9') || (c == '\u0ABD') 277 || (c == '\u0AE0') || (c >= '\u0B05' && c <= '\u0B0C') 278 || (c >= '\u0B0F' && c <= '\u0B10') 279 || (c >= '\u0B13' && c <= '\u0B28') 280 || (c >= '\u0B2A' && c <= '\u0B30') 281 || (c >= '\u0B32' && c <= '\u0B33') 282 || (c >= '\u0B36' && c <= '\u0B39') || (c == '\u0B3D') 283 || (c >= '\u0B5C' && c <= '\u0B5D') 284 || (c >= '\u0B5F' && c <= '\u0B61') 285 || (c >= '\u0B85' && c <= '\u0B8A') 286 || (c >= '\u0B8E' && c <= '\u0B90') 287 || (c >= '\u0B92' && c <= '\u0B95') 288 || (c >= '\u0B99' && c <= '\u0B9A') || (c == '\u0B9C') 289 || (c >= '\u0B9E' && c <= '\u0B9F') 290 || (c >= '\u0BA3' && c <= '\u0BA4') 291 || (c >= '\u0BA8' && c <= '\u0BAA') 292 || (c >= '\u0BAE' && c <= '\u0BB5') 293 || (c >= '\u0BB7' && c <= '\u0BB9') 294 || (c >= '\u0C05' && c <= '\u0C0C') 295 || (c >= '\u0C0E' && c <= '\u0C10') 296 || (c >= '\u0C12' && c <= '\u0C28') 297 || (c >= '\u0C2A' && c <= '\u0C33') 298 || (c >= '\u0C35' && c <= '\u0C39') 299 || (c >= '\u0C60' && c <= '\u0C61') 300 || (c >= '\u0C85' && c <= '\u0C8C') 301 || (c >= '\u0C8E' && c <= '\u0C90') 302 || (c >= '\u0C92' && c <= '\u0CA8') 303 || (c >= '\u0CAA' && c <= '\u0CB3') 304 || (c >= '\u0CB5' && c <= '\u0CB9') || (c == '\u0CDE') 305 || (c >= '\u0CE0' && c <= '\u0CE1') 306 || (c >= '\u0D05' && c <= '\u0D0C') 307 || (c >= '\u0D0E' && c <= '\u0D10') 308 || (c >= '\u0D12' && c <= '\u0D28') 309 || (c >= '\u0D2A' && c <= '\u0D39') 310 || (c >= '\u0D60' && c <= '\u0D61') 311 || (c >= '\u0E01' && c <= '\u0E2E') || (c == '\u0E30') 312 || (c >= '\u0E32' && c <= '\u0E33') 313 || (c >= '\u0E40' && c <= '\u0E45') 314 || (c >= '\u0E81' && c <= '\u0E82') || (c == '\u0E84') 315 || (c >= '\u0E87' && c <= '\u0E88') || (c == '\u0E8A') 316 || (c == '\u0E8D') || (c >= '\u0E94' && c <= '\u0E97') 317 || (c >= '\u0E99' && c <= '\u0E9F') 318 || (c >= '\u0EA1' && c <= '\u0EA3') || (c == '\u0EA5') 319 || (c == '\u0EA7') || (c >= '\u0EAA' && c <= '\u0EAB') 320 || (c >= '\u0EAD' && c <= '\u0EAE') || (c == '\u0EB0') 321 || (c >= '\u0EB2' && c <= '\u0EB3') || (c == '\u0EBD') 322 || (c >= '\u0EC0' && c <= '\u0EC4') 323 || (c >= '\u0F40' && c <= '\u0F47') 324 || (c >= '\u0F49' && c <= '\u0F69') 325 || (c >= '\u10A0' && c <= '\u10C5') 326 || (c >= '\u10D0' && c <= '\u10F6') || (c == '\u1100') 327 || (c >= '\u1102' && c <= '\u1103') 328 || (c >= '\u1105' && c <= '\u1107') || (c == '\u1109') 329 || (c >= '\u110B' && c <= '\u110C') 330 || (c >= '\u110E' && c <= '\u1112') || (c == '\u113C') 331 || (c == '\u113E') || (c == '\u1140') || (c == '\u114C') 332 || (c == '\u114E') || (c == '\u1150') 333 || (c >= '\u1154' && c <= '\u1155') || (c == '\u1159') 334 || (c >= '\u115F' && c <= '\u1161') || (c == '\u1163') 335 || (c == '\u1165') || (c == '\u1167') || (c == '\u1169') 336 || (c >= '\u116D' && c <= '\u116E') 337 || (c >= '\u1172' && c <= '\u1173') || (c == '\u1175') 338 || (c == '\u119E') || (c == '\u11A8') || (c == '\u11AB') 339 || (c >= '\u11AE' && c <= '\u11AF') 340 || (c >= '\u11B7' && c <= '\u11B8') || (c == '\u11BA') 341 || (c >= '\u11BC' && c <= '\u11C2') || (c == '\u11EB') 342 || (c == '\u11F0') || (c == '\u11F9') 343 || (c >= '\u1E00' && c <= '\u1E9B') 344 || (c >= '\u1EA0' && c <= '\u1EF9') 345 || (c >= '\u1F00' && c <= '\u1F15') 346 || (c >= '\u1F18' && c <= '\u1F1D') 347 || (c >= '\u1F20' && c <= '\u1F45') 348 || (c >= '\u1F48' && c <= '\u1F4D') 349 || (c >= '\u1F50' && c <= '\u1F57') || (c == '\u1F59') 350 || (c == '\u1F5B') || (c == '\u1F5D') 351 || (c >= '\u1F5F' && c <= '\u1F7D') 352 || (c >= '\u1F80' && c <= '\u1FB4') 353 || (c >= '\u1FB6' && c <= '\u1FBC') || (c == '\u1FBE') 354 || (c >= '\u1FC2' && c <= '\u1FC4') 355 || (c >= '\u1FC6' && c <= '\u1FCC') 356 || (c >= '\u1FD0' && c <= '\u1FD3') 357 || (c >= '\u1FD6' && c <= '\u1FDB') 358 || (c >= '\u1FE0' && c <= '\u1FEC') 359 || (c >= '\u1FF2' && c <= '\u1FF4') 360 || (c >= '\u1FF6' && c <= '\u1FFC') || (c == '\u2126') 361 || (c >= '\u212A' && c <= '\u212B') || (c == '\u212E') 362 || (c >= '\u2180' && c <= '\u2182') 363 || (c >= '\u3041' && c <= '\u3094') 364 || (c >= '\u30A1' && c <= '\u30FA') 365 || (c >= '\u3105' && c <= '\u312C') 366 || (c >= '\uAC00' && c <= '\uD7A3') 367 || (c >= '\u4E00' && c <= '\u9FA5') || (c == '\u3007') 368 || (c >= '\u3021' && c <= '\u3029') || (c == '_') || (c == '.') 369 || (c == '-') || (c >= '\u0300' && c <= '\u0345') 370 || (c >= '\u0360' && c <= '\u0361') 371 || (c >= '\u0483' && c <= '\u0486') 372 || (c >= '\u0591' && c <= '\u05A1') 373 || (c >= '\u05A3' && c <= '\u05B9') 374 || (c >= '\u05BB' && c <= '\u05BD') || (c == '\u05BF') 375 || (c >= '\u05C1' && c <= '\u05C2') || (c == '\u05C4') 376 || (c >= '\u064B' && c <= '\u0652') || (c == '\u0670') 377 || (c >= '\u06D6' && c <= '\u06DC') 378 || (c >= '\u06DD' && c <= '\u06DF') 379 || (c >= '\u06E0' && c <= '\u06E4') 380 || (c >= '\u06E7' && c <= '\u06E8') 381 || (c >= '\u06EA' && c <= '\u06ED') 382 || (c >= '\u0901' && c <= '\u0903') || (c == '\u093C') 383 || (c >= '\u093E' && c <= '\u094C') || (c == '\u094D') 384 || (c >= '\u0951' && c <= '\u0954') 385 || (c >= '\u0962' && c <= '\u0963') 386 || (c >= '\u0981' && c <= '\u0983') || (c == '\u09BC') 387 || (c == '\u09BE') || (c == '\u09BF') 388 || (c >= '\u09C0' && c <= '\u09C4') 389 || (c >= '\u09C7' && c <= '\u09C8') 390 || (c >= '\u09CB' && c <= '\u09CD') || (c == '\u09D7') 391 || (c >= '\u09E2' && c <= '\u09E3') || (c == '\u0A02') 392 || (c == '\u0A3C') || (c == '\u0A3E') || (c == '\u0A3F') 393 || (c >= '\u0A40' && c <= '\u0A42') 394 || (c >= '\u0A47' && c <= '\u0A48') 395 || (c >= '\u0A4B' && c <= '\u0A4D') 396 || (c >= '\u0A70' && c <= '\u0A71') 397 || (c >= '\u0A81' && c <= '\u0A83') || (c == '\u0ABC') 398 || (c >= '\u0ABE' && c <= '\u0AC5') 399 || (c >= '\u0AC7' && c <= '\u0AC9') 400 || (c >= '\u0ACB' && c <= '\u0ACD') 401 || (c >= '\u0B01' && c <= '\u0B03') || (c == '\u0B3C') 402 || (c >= '\u0B3E' && c <= '\u0B43') 403 || (c >= '\u0B47' && c <= '\u0B48') 404 || (c >= '\u0B4B' && c <= '\u0B4D') 405 || (c >= '\u0B56' && c <= '\u0B57') 406 || (c >= '\u0B82' && c <= '\u0B83') 407 || (c >= '\u0BBE' && c <= '\u0BC2') 408 || (c >= '\u0BC6' && c <= '\u0BC8') 409 || (c >= '\u0BCA' && c <= '\u0BCD') || (c == '\u0BD7') 410 || (c >= '\u0C01' && c <= '\u0C03') 411 || (c >= '\u0C3E' && c <= '\u0C44') 412 || (c >= '\u0C46' && c <= '\u0C48') 413 || (c >= '\u0C4A' && c <= '\u0C4D') 414 || (c >= '\u0C55' && c <= '\u0C56') 415 || (c >= '\u0C82' && c <= '\u0C83') 416 || (c >= '\u0CBE' && c <= '\u0CC4') 417 || (c >= '\u0CC6' && c <= '\u0CC8') 418 || (c >= '\u0CCA' && c <= '\u0CCD') 419 || (c >= '\u0CD5' && c <= '\u0CD6') 420 || (c >= '\u0D02' && c <= '\u0D03') 421 || (c >= '\u0D3E' && c <= '\u0D43') 422 || (c >= '\u0D46' && c <= '\u0D48') 423 || (c >= '\u0D4A' && c <= '\u0D4D') || (c == '\u0D57') 424 || (c == '\u0E31') || (c >= '\u0E34' && c <= '\u0E3A') 425 || (c >= '\u0E47' && c <= '\u0E4E') || (c == '\u0EB1') 426 || (c >= '\u0EB4' && c <= '\u0EB9') 427 || (c >= '\u0EBB' && c <= '\u0EBC') 428 || (c >= '\u0EC8' && c <= '\u0ECD') 429 || (c >= '\u0F18' && c <= '\u0F19') || (c == '\u0F35') 430 || (c == '\u0F37') || (c == '\u0F39') || (c == '\u0F3E') 431 || (c == '\u0F3F') || (c >= '\u0F71' && c <= '\u0F84') 432 || (c >= '\u0F86' && c <= '\u0F8B') 433 || (c >= '\u0F90' && c <= '\u0F95') || (c == '\u0F97') 434 || (c >= '\u0F99' && c <= '\u0FAD') 435 || (c >= '\u0FB1' && c <= '\u0FB7') || (c == '\u0FB9') 436 || (c >= '\u20D0' && c <= '\u20DC') || (c == '\u20E1') 437 || (c >= '\u302A' && c <= '\u302F') || (c == '\u3099') 438 || (c == '\u309A') || (c == '\u00B7') || (c == '\u02D0') 439 || (c == '\u02D1') || (c == '\u0387') || (c == '\u0640') 440 || (c == '\u0E46') || (c == '\u0EC6') || (c == '\u3005') 441 || (c >= '\u3031' && c <= '\u3035') 442 || (c >= '\u309D' && c <= '\u309E') || (c >= '\u30FC' && c <= '\u30FE')); 443 } 444 445 public static boolean isNCName(String str) { 446 if (str == null) { 447 return false; 448 } else { 449 int len = str.length(); 450 switch (len) { 451 case 0: 452 return false; 453 case 1: 454 return NCName.isNCNameStart(str.charAt(0)); 455 default: 456 if (!NCName.isNCNameStart(str.charAt(0))) { 457 return false; 458 } 459 for (int i = 1; i < len; i++) { 460 if (!NCName.isNCNameTrail(str.charAt(i))) { 461 return false; 462 } 463 } 464 } 465 return true; 466 } 467 } 468 469 private static void appendUHexTo(StringBuilder sb, int c) { 470 sb.append('U'); 471 for (int i = 0; i < 6; i++) { 472 sb.append(HEX_TABLE[(c & 0xF00000) >> 20]); 473 c <<= 4; 474 } 475 } 476 477 public static String escapeName(String str) { 478 StringBuilder sb = new StringBuilder(); 479 for (int i = 0; i < str.length(); i++) { 480 char c = str.charAt(i); 481 if ((c & 0xFC00) == 0xD800) { 482 char next = str.charAt(++i); 483 appendUHexTo(sb, (c << 10) + next + SURROGATE_OFFSET); 484 } else if (i == 0 && !isNCNameStart(c)) { 485 appendUHexTo(sb, c); 486 } else if (i != 0 && !isNCNameTrail(c)) { 487 appendUHexTo(sb, c); 488 } else { 489 sb.append(c); 490 } 491 } 492 return sb.toString().intern(); 493 } 494 // ]NOCPP] 495 }