0001: /*
0002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0003: *
0004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
0005: *
0006: * The contents of this file are subject to the terms of either the GNU
0007: * General Public License Version 2 only ("GPL") or the Common
0008: * Development and Distribution License("CDDL") (collectively, the
0009: * "License"). You may not use this file except in compliance with the
0010: * License. You can obtain a copy of the License at
0011: * http://www.netbeans.org/cddl-gplv2.html
0012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
0013: * specific language governing permissions and limitations under the
0014: * License. When distributing the software, include this License Header
0015: * Notice in each file and include the License file at
0016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
0017: * particular file as subject to the "Classpath" exception as provided
0018: * by Sun in the GPL Version 2 section of the License file that
0019: * accompanied this code. If applicable, add the following below the
0020: * License Header, with the fields enclosed by brackets [] replaced by
0021: * your own identifying information:
0022: * "Portions Copyrighted [year] [name of copyright owner]"
0023: *
0024: * Contributor(s):
0025: *
0026: * The Original Software is NetBeans. The Initial Developer of the Original
0027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
0028: * Microsystems, Inc. All Rights Reserved.
0029: *
0030: * If you wish your version of this file to be governed by only the CDDL
0031: * or only the GPL Version 2, indicate your decision by adding
0032: * "[Contributor] elects to include this software in this distribution
0033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
0034: * single choice of license, a recipient has the option to distribute
0035: * your version of this file under either the CDDL, the GPL Version 2 or
0036: * to extend the choice of license to its licensees as provided above.
0037: * However, if you add GPL Version 2 code and therefore, elected the GPL
0038: * Version 2 license, then the option applies only if the new code is
0039: * made subject to such option by the copyright holder.
0040: */
0041:
0042: package org.netbeans.tax;
0043:
0044: /**
0045: * Set of methods classifing class of character according to XML specs.
0046: *
0047: * @author Libor Kramolis
0048: * @author Petr Kuzel
0049: */
0050: public class UnicodeClasses {
0051:
0052: /** Contains static methods only */
0053: UnicodeClasses() {
0054: }
0055:
0056: //
0057: // generated from XML recomendation
0058: //
0059:
0060: /**
0061: * @see http://www.w3.org/TR/REC-xml#NT-Char
0062: */
0063: public static boolean isXMLChar(int c) {
0064: // #x0009
0065: if (c == 0x0009)
0066: return true;
0067:
0068: // #x000a
0069: if (c == 0x000a)
0070: return true;
0071:
0072: // #x000d
0073: if (c == 0x000d)
0074: return true;
0075:
0076: // [ #x0020 - #xd7ff ]
0077: if (c < 0x0020)
0078: return false;
0079: if (c <= 0xd7ff)
0080: return true;
0081:
0082: // [ #xe000 - #xfffd ]
0083: if (c < 0xe000)
0084: return false;
0085: if (c <= 0xfffd)
0086: return true;
0087:
0088: // [ #x10000 - #x10ffff ]
0089: if (c < 0x10000)
0090: return false;
0091: if (c <= 0x10ffff)
0092: return true;
0093:
0094: return false;
0095: }
0096:
0097: /**
0098: * @see http://www.w3.org/TR/REC-xml#NT-NameChar
0099: */
0100: public static boolean isXMLNameChar(int c) {
0101: return ((isXMLLetter(c)) || (isXMLDigit(c)) || (c == '.')
0102: || (c == '-') || (c == '_') || (c == ':')
0103: || (isXMLCombiningChar(c)) || (isXMLExtender(c)));
0104: }
0105:
0106: /**
0107: * @see http://www.w3.org/TR/REC-xml#NT-Name
0108: */
0109: public static boolean isXMLNameStartChar(int c) {
0110: return ((isXMLLetter(c)) || (c == '_') || (c == ':'));
0111: }
0112:
0113: /**
0114: * @see http://www.w3.org/TR/REC-xml#NT-Letter
0115: */
0116: public static boolean isXMLLetter(int c) {
0117: return (isXMLBaseChar(c) || isXMLIdeographic(c));
0118: }
0119:
0120: /**
0121: * @see http://www.w3.org/TR/REC-xml#NT-BaseChar
0122: */
0123: public static boolean isXMLBaseChar(int c) {
0124: // [ #x0041 - #x005a ]
0125: if (c < 0x0041)
0126: return false;
0127: if (c <= 0x005a)
0128: return true;
0129:
0130: // [ #x0061 - #x007a ]
0131: if (c < 0x0061)
0132: return false;
0133: if (c <= 0x007a)
0134: return true;
0135:
0136: // [ #x00c0 - #x00d6 ]
0137: if (c < 0x00c0)
0138: return false;
0139: if (c <= 0x00d6)
0140: return true;
0141:
0142: // [ #x00d8 - #x00f6 ]
0143: if (c < 0x00d8)
0144: return false;
0145: if (c <= 0x00f6)
0146: return true;
0147:
0148: // [ #x00f8 - #x00ff ]
0149: if (c < 0x00f8)
0150: return false;
0151: if (c <= 0x00ff)
0152: return true;
0153:
0154: // [ #x0100 - #x0131 ]
0155: if (c < 0x0100)
0156: return false;
0157: if (c <= 0x0131)
0158: return true;
0159:
0160: // [ #x0134 - #x013e ]
0161: if (c < 0x0134)
0162: return false;
0163: if (c <= 0x013e)
0164: return true;
0165:
0166: // [ #x0141 - #x0148 ]
0167: if (c < 0x0141)
0168: return false;
0169: if (c <= 0x0148)
0170: return true;
0171:
0172: // [ #x014a - #x017e ]
0173: if (c < 0x014a)
0174: return false;
0175: if (c <= 0x017e)
0176: return true;
0177:
0178: // [ #x0180 - #x01c3 ]
0179: if (c < 0x0180)
0180: return false;
0181: if (c <= 0x01c3)
0182: return true;
0183:
0184: // [ #x01cd - #x01f0 ]
0185: if (c < 0x01cd)
0186: return false;
0187: if (c <= 0x01f0)
0188: return true;
0189:
0190: // [ #x01f4 - #x01f5 ]
0191: if (c < 0x01f4)
0192: return false;
0193: if (c <= 0x01f5)
0194: return true;
0195:
0196: // [ #x01fa - #x0217 ]
0197: if (c < 0x01fa)
0198: return false;
0199: if (c <= 0x0217)
0200: return true;
0201:
0202: // [ #x0250 - #x02a8 ]
0203: if (c < 0x0250)
0204: return false;
0205: if (c <= 0x02a8)
0206: return true;
0207:
0208: // [ #x02bb - #x02c1 ]
0209: if (c < 0x02bb)
0210: return false;
0211: if (c <= 0x02c1)
0212: return true;
0213:
0214: // #x0386
0215: if (c == 0x0386)
0216: return true;
0217:
0218: // [ #x0388 - #x038a ]
0219: if (c < 0x0388)
0220: return false;
0221: if (c <= 0x038a)
0222: return true;
0223:
0224: // #x038c
0225: if (c == 0x038c)
0226: return true;
0227:
0228: // [ #x038e - #x03a1 ]
0229: if (c < 0x038e)
0230: return false;
0231: if (c <= 0x03a1)
0232: return true;
0233:
0234: // [ #x03a3 - #x03ce ]
0235: if (c < 0x03a3)
0236: return false;
0237: if (c <= 0x03ce)
0238: return true;
0239:
0240: // [ #x03d0 - #x03d6 ]
0241: if (c < 0x03d0)
0242: return false;
0243: if (c <= 0x03d6)
0244: return true;
0245:
0246: // #x03da
0247: if (c == 0x03da)
0248: return true;
0249:
0250: // #x03dc
0251: if (c == 0x03dc)
0252: return true;
0253:
0254: // #x03de
0255: if (c == 0x03de)
0256: return true;
0257:
0258: // #x03e0
0259: if (c == 0x03e0)
0260: return true;
0261:
0262: // [ #x03e2 - #x03f3 ]
0263: if (c < 0x03e2)
0264: return false;
0265: if (c <= 0x03f3)
0266: return true;
0267:
0268: // [ #x0401 - #x040c ]
0269: if (c < 0x0401)
0270: return false;
0271: if (c <= 0x040c)
0272: return true;
0273:
0274: // [ #x040e - #x044f ]
0275: if (c < 0x040e)
0276: return false;
0277: if (c <= 0x044f)
0278: return true;
0279:
0280: // [ #x0451 - #x045c ]
0281: if (c < 0x0451)
0282: return false;
0283: if (c <= 0x045c)
0284: return true;
0285:
0286: // [ #x045e - #x0481 ]
0287: if (c < 0x045e)
0288: return false;
0289: if (c <= 0x0481)
0290: return true;
0291:
0292: // [ #x0490 - #x04c4 ]
0293: if (c < 0x0490)
0294: return false;
0295: if (c <= 0x04c4)
0296: return true;
0297:
0298: // [ #x04c7 - #x04c8 ]
0299: if (c < 0x04c7)
0300: return false;
0301: if (c <= 0x04c8)
0302: return true;
0303:
0304: // [ #x04cb - #x04cc ]
0305: if (c < 0x04cb)
0306: return false;
0307: if (c <= 0x04cc)
0308: return true;
0309:
0310: // [ #x04d0 - #x04eb ]
0311: if (c < 0x04d0)
0312: return false;
0313: if (c <= 0x04eb)
0314: return true;
0315:
0316: // [ #x04ee - #x04f5 ]
0317: if (c < 0x04ee)
0318: return false;
0319: if (c <= 0x04f5)
0320: return true;
0321:
0322: // [ #x04f8 - #x04f9 ]
0323: if (c < 0x04f8)
0324: return false;
0325: if (c <= 0x04f9)
0326: return true;
0327:
0328: // [ #x0531 - #x0556 ]
0329: if (c < 0x0531)
0330: return false;
0331: if (c <= 0x0556)
0332: return true;
0333:
0334: // #x0559
0335: if (c == 0x0559)
0336: return true;
0337:
0338: // [ #x0561 - #x0586 ]
0339: if (c < 0x0561)
0340: return false;
0341: if (c <= 0x0586)
0342: return true;
0343:
0344: // [ #x05d0 - #x05ea ]
0345: if (c < 0x05d0)
0346: return false;
0347: if (c <= 0x05ea)
0348: return true;
0349:
0350: // [ #x05f0 - #x05f2 ]
0351: if (c < 0x05f0)
0352: return false;
0353: if (c <= 0x05f2)
0354: return true;
0355:
0356: // [ #x0621 - #x063a ]
0357: if (c < 0x0621)
0358: return false;
0359: if (c <= 0x063a)
0360: return true;
0361:
0362: // [ #x0641 - #x064a ]
0363: if (c < 0x0641)
0364: return false;
0365: if (c <= 0x064a)
0366: return true;
0367:
0368: // [ #x0671 - #x06b7 ]
0369: if (c < 0x0671)
0370: return false;
0371: if (c <= 0x06b7)
0372: return true;
0373:
0374: // [ #x06ba - #x06be ]
0375: if (c < 0x06ba)
0376: return false;
0377: if (c <= 0x06be)
0378: return true;
0379:
0380: // [ #x06c0 - #x06ce ]
0381: if (c < 0x06c0)
0382: return false;
0383: if (c <= 0x06ce)
0384: return true;
0385:
0386: // [ #x06d0 - #x06d3 ]
0387: if (c < 0x06d0)
0388: return false;
0389: if (c <= 0x06d3)
0390: return true;
0391:
0392: // #x06d5
0393: if (c == 0x06d5)
0394: return true;
0395:
0396: // [ #x06e5 - #x06e6 ]
0397: if (c < 0x06e5)
0398: return false;
0399: if (c <= 0x06e6)
0400: return true;
0401:
0402: // [ #x0905 - #x0939 ]
0403: if (c < 0x0905)
0404: return false;
0405: if (c <= 0x0939)
0406: return true;
0407:
0408: // #x093d
0409: if (c == 0x093d)
0410: return true;
0411:
0412: // [ #x0958 - #x0961 ]
0413: if (c < 0x0958)
0414: return false;
0415: if (c <= 0x0961)
0416: return true;
0417:
0418: // [ #x0985 - #x098c ]
0419: if (c < 0x0985)
0420: return false;
0421: if (c <= 0x098c)
0422: return true;
0423:
0424: // [ #x098f - #x0990 ]
0425: if (c < 0x098f)
0426: return false;
0427: if (c <= 0x0990)
0428: return true;
0429:
0430: // [ #x0993 - #x09a8 ]
0431: if (c < 0x0993)
0432: return false;
0433: if (c <= 0x09a8)
0434: return true;
0435:
0436: // [ #x09aa - #x09b0 ]
0437: if (c < 0x09aa)
0438: return false;
0439: if (c <= 0x09b0)
0440: return true;
0441:
0442: // #x09b2
0443: if (c == 0x09b2)
0444: return true;
0445:
0446: // [ #x09b6 - #x09b9 ]
0447: if (c < 0x09b6)
0448: return false;
0449: if (c <= 0x09b9)
0450: return true;
0451:
0452: // [ #x09dc - #x09dd ]
0453: if (c < 0x09dc)
0454: return false;
0455: if (c <= 0x09dd)
0456: return true;
0457:
0458: // [ #x09df - #x09e1 ]
0459: if (c < 0x09df)
0460: return false;
0461: if (c <= 0x09e1)
0462: return true;
0463:
0464: // [ #x09f0 - #x09f1 ]
0465: if (c < 0x09f0)
0466: return false;
0467: if (c <= 0x09f1)
0468: return true;
0469:
0470: // [ #x0a05 - #x0a0a ]
0471: if (c < 0x0a05)
0472: return false;
0473: if (c <= 0x0a0a)
0474: return true;
0475:
0476: // [ #x0a0f - #x0a10 ]
0477: if (c < 0x0a0f)
0478: return false;
0479: if (c <= 0x0a10)
0480: return true;
0481:
0482: // [ #x0a13 - #x0a28 ]
0483: if (c < 0x0a13)
0484: return false;
0485: if (c <= 0x0a28)
0486: return true;
0487:
0488: // [ #x0a2a - #x0a30 ]
0489: if (c < 0x0a2a)
0490: return false;
0491: if (c <= 0x0a30)
0492: return true;
0493:
0494: // [ #x0a32 - #x0a33 ]
0495: if (c < 0x0a32)
0496: return false;
0497: if (c <= 0x0a33)
0498: return true;
0499:
0500: // [ #x0a35 - #x0a36 ]
0501: if (c < 0x0a35)
0502: return false;
0503: if (c <= 0x0a36)
0504: return true;
0505:
0506: // [ #x0a38 - #x0a39 ]
0507: if (c < 0x0a38)
0508: return false;
0509: if (c <= 0x0a39)
0510: return true;
0511:
0512: // [ #x0a59 - #x0a5c ]
0513: if (c < 0x0a59)
0514: return false;
0515: if (c <= 0x0a5c)
0516: return true;
0517:
0518: // #x0a5e
0519: if (c == 0x0a5e)
0520: return true;
0521:
0522: // [ #x0a72 - #x0a74 ]
0523: if (c < 0x0a72)
0524: return false;
0525: if (c <= 0x0a74)
0526: return true;
0527:
0528: // [ #x0a85 - #x0a8b ]
0529: if (c < 0x0a85)
0530: return false;
0531: if (c <= 0x0a8b)
0532: return true;
0533:
0534: // #x0a8d
0535: if (c == 0x0a8d)
0536: return true;
0537:
0538: // [ #x0a8f - #x0a91 ]
0539: if (c < 0x0a8f)
0540: return false;
0541: if (c <= 0x0a91)
0542: return true;
0543:
0544: // [ #x0a93 - #x0aa8 ]
0545: if (c < 0x0a93)
0546: return false;
0547: if (c <= 0x0aa8)
0548: return true;
0549:
0550: // [ #x0aaa - #x0ab0 ]
0551: if (c < 0x0aaa)
0552: return false;
0553: if (c <= 0x0ab0)
0554: return true;
0555:
0556: // [ #x0ab2 - #x0ab3 ]
0557: if (c < 0x0ab2)
0558: return false;
0559: if (c <= 0x0ab3)
0560: return true;
0561:
0562: // [ #x0ab5 - #x0ab9 ]
0563: if (c < 0x0ab5)
0564: return false;
0565: if (c <= 0x0ab9)
0566: return true;
0567:
0568: // #x0abd
0569: if (c == 0x0abd)
0570: return true;
0571:
0572: // #x0ae0
0573: if (c == 0x0ae0)
0574: return true;
0575:
0576: // [ #x0b05 - #x0b0c ]
0577: if (c < 0x0b05)
0578: return false;
0579: if (c <= 0x0b0c)
0580: return true;
0581:
0582: // [ #x0b0f - #x0b10 ]
0583: if (c < 0x0b0f)
0584: return false;
0585: if (c <= 0x0b10)
0586: return true;
0587:
0588: // [ #x0b13 - #x0b28 ]
0589: if (c < 0x0b13)
0590: return false;
0591: if (c <= 0x0b28)
0592: return true;
0593:
0594: // [ #x0b2a - #x0b30 ]
0595: if (c < 0x0b2a)
0596: return false;
0597: if (c <= 0x0b30)
0598: return true;
0599:
0600: // [ #x0b32 - #x0b33 ]
0601: if (c < 0x0b32)
0602: return false;
0603: if (c <= 0x0b33)
0604: return true;
0605:
0606: // [ #x0b36 - #x0b39 ]
0607: if (c < 0x0b36)
0608: return false;
0609: if (c <= 0x0b39)
0610: return true;
0611:
0612: // #x0b3d
0613: if (c == 0x0b3d)
0614: return true;
0615:
0616: // [ #x0b5c - #x0b5d ]
0617: if (c < 0x0b5c)
0618: return false;
0619: if (c <= 0x0b5d)
0620: return true;
0621:
0622: // [ #x0b5f - #x0b61 ]
0623: if (c < 0x0b5f)
0624: return false;
0625: if (c <= 0x0b61)
0626: return true;
0627:
0628: // [ #x0b85 - #x0b8a ]
0629: if (c < 0x0b85)
0630: return false;
0631: if (c <= 0x0b8a)
0632: return true;
0633:
0634: // [ #x0b8e - #x0b90 ]
0635: if (c < 0x0b8e)
0636: return false;
0637: if (c <= 0x0b90)
0638: return true;
0639:
0640: // [ #x0b92 - #x0b95 ]
0641: if (c < 0x0b92)
0642: return false;
0643: if (c <= 0x0b95)
0644: return true;
0645:
0646: // [ #x0b99 - #x0b9a ]
0647: if (c < 0x0b99)
0648: return false;
0649: if (c <= 0x0b9a)
0650: return true;
0651:
0652: // #x0b9c
0653: if (c == 0x0b9c)
0654: return true;
0655:
0656: // [ #x0b9e - #x0b9f ]
0657: if (c < 0x0b9e)
0658: return false;
0659: if (c <= 0x0b9f)
0660: return true;
0661:
0662: // [ #x0ba3 - #x0ba4 ]
0663: if (c < 0x0ba3)
0664: return false;
0665: if (c <= 0x0ba4)
0666: return true;
0667:
0668: // [ #x0ba8 - #x0baa ]
0669: if (c < 0x0ba8)
0670: return false;
0671: if (c <= 0x0baa)
0672: return true;
0673:
0674: // [ #x0bae - #x0bb5 ]
0675: if (c < 0x0bae)
0676: return false;
0677: if (c <= 0x0bb5)
0678: return true;
0679:
0680: // [ #x0bb7 - #x0bb9 ]
0681: if (c < 0x0bb7)
0682: return false;
0683: if (c <= 0x0bb9)
0684: return true;
0685:
0686: // [ #x0c05 - #x0c0c ]
0687: if (c < 0x0c05)
0688: return false;
0689: if (c <= 0x0c0c)
0690: return true;
0691:
0692: // [ #x0c0e - #x0c10 ]
0693: if (c < 0x0c0e)
0694: return false;
0695: if (c <= 0x0c10)
0696: return true;
0697:
0698: // [ #x0c12 - #x0c28 ]
0699: if (c < 0x0c12)
0700: return false;
0701: if (c <= 0x0c28)
0702: return true;
0703:
0704: // [ #x0c2a - #x0c33 ]
0705: if (c < 0x0c2a)
0706: return false;
0707: if (c <= 0x0c33)
0708: return true;
0709:
0710: // [ #x0c35 - #x0c39 ]
0711: if (c < 0x0c35)
0712: return false;
0713: if (c <= 0x0c39)
0714: return true;
0715:
0716: // [ #x0c60 - #x0c61 ]
0717: if (c < 0x0c60)
0718: return false;
0719: if (c <= 0x0c61)
0720: return true;
0721:
0722: // [ #x0c85 - #x0c8c ]
0723: if (c < 0x0c85)
0724: return false;
0725: if (c <= 0x0c8c)
0726: return true;
0727:
0728: // [ #x0c8e - #x0c90 ]
0729: if (c < 0x0c8e)
0730: return false;
0731: if (c <= 0x0c90)
0732: return true;
0733:
0734: // [ #x0c92 - #x0ca8 ]
0735: if (c < 0x0c92)
0736: return false;
0737: if (c <= 0x0ca8)
0738: return true;
0739:
0740: // [ #x0caa - #x0cb3 ]
0741: if (c < 0x0caa)
0742: return false;
0743: if (c <= 0x0cb3)
0744: return true;
0745:
0746: // [ #x0cb5 - #x0cb9 ]
0747: if (c < 0x0cb5)
0748: return false;
0749: if (c <= 0x0cb9)
0750: return true;
0751:
0752: // #x0cde
0753: if (c == 0x0cde)
0754: return true;
0755:
0756: // [ #x0ce0 - #x0ce1 ]
0757: if (c < 0x0ce0)
0758: return false;
0759: if (c <= 0x0ce1)
0760: return true;
0761:
0762: // [ #x0d05 - #x0d0c ]
0763: if (c < 0x0d05)
0764: return false;
0765: if (c <= 0x0d0c)
0766: return true;
0767:
0768: // [ #x0d0e - #x0d10 ]
0769: if (c < 0x0d0e)
0770: return false;
0771: if (c <= 0x0d10)
0772: return true;
0773:
0774: // [ #x0d12 - #x0d28 ]
0775: if (c < 0x0d12)
0776: return false;
0777: if (c <= 0x0d28)
0778: return true;
0779:
0780: // [ #x0d2a - #x0d39 ]
0781: if (c < 0x0d2a)
0782: return false;
0783: if (c <= 0x0d39)
0784: return true;
0785:
0786: // [ #x0d60 - #x0d61 ]
0787: if (c < 0x0d60)
0788: return false;
0789: if (c <= 0x0d61)
0790: return true;
0791:
0792: // [ #x0e01 - #x0e2e ]
0793: if (c < 0x0e01)
0794: return false;
0795: if (c <= 0x0e2e)
0796: return true;
0797:
0798: // #x0e30
0799: if (c == 0x0e30)
0800: return true;
0801:
0802: // [ #x0e32 - #x0e33 ]
0803: if (c < 0x0e32)
0804: return false;
0805: if (c <= 0x0e33)
0806: return true;
0807:
0808: // [ #x0e40 - #x0e45 ]
0809: if (c < 0x0e40)
0810: return false;
0811: if (c <= 0x0e45)
0812: return true;
0813:
0814: // [ #x0e81 - #x0e82 ]
0815: if (c < 0x0e81)
0816: return false;
0817: if (c <= 0x0e82)
0818: return true;
0819:
0820: // #x0e84
0821: if (c == 0x0e84)
0822: return true;
0823:
0824: // [ #x0e87 - #x0e88 ]
0825: if (c < 0x0e87)
0826: return false;
0827: if (c <= 0x0e88)
0828: return true;
0829:
0830: // #x0e8a
0831: if (c == 0x0e8a)
0832: return true;
0833:
0834: // #x0e8d
0835: if (c == 0x0e8d)
0836: return true;
0837:
0838: // [ #x0e94 - #x0e97 ]
0839: if (c < 0x0e94)
0840: return false;
0841: if (c <= 0x0e97)
0842: return true;
0843:
0844: // [ #x0e99 - #x0e9f ]
0845: if (c < 0x0e99)
0846: return false;
0847: if (c <= 0x0e9f)
0848: return true;
0849:
0850: // [ #x0ea1 - #x0ea3 ]
0851: if (c < 0x0ea1)
0852: return false;
0853: if (c <= 0x0ea3)
0854: return true;
0855:
0856: // #x0ea5
0857: if (c == 0x0ea5)
0858: return true;
0859:
0860: // #x0ea7
0861: if (c == 0x0ea7)
0862: return true;
0863:
0864: // [ #x0eaa - #x0eab ]
0865: if (c < 0x0eaa)
0866: return false;
0867: if (c <= 0x0eab)
0868: return true;
0869:
0870: // [ #x0ead - #x0eae ]
0871: if (c < 0x0ead)
0872: return false;
0873: if (c <= 0x0eae)
0874: return true;
0875:
0876: // #x0eb0
0877: if (c == 0x0eb0)
0878: return true;
0879:
0880: // [ #x0eb2 - #x0eb3 ]
0881: if (c < 0x0eb2)
0882: return false;
0883: if (c <= 0x0eb3)
0884: return true;
0885:
0886: // #x0ebd
0887: if (c == 0x0ebd)
0888: return true;
0889:
0890: // [ #x0ec0 - #x0ec4 ]
0891: if (c < 0x0ec0)
0892: return false;
0893: if (c <= 0x0ec4)
0894: return true;
0895:
0896: // [ #x0f40 - #x0f47 ]
0897: if (c < 0x0f40)
0898: return false;
0899: if (c <= 0x0f47)
0900: return true;
0901:
0902: // [ #x0f49 - #x0f69 ]
0903: if (c < 0x0f49)
0904: return false;
0905: if (c <= 0x0f69)
0906: return true;
0907:
0908: // [ #x10a0 - #x10c5 ]
0909: if (c < 0x10a0)
0910: return false;
0911: if (c <= 0x10c5)
0912: return true;
0913:
0914: // [ #x10d0 - #x10f6 ]
0915: if (c < 0x10d0)
0916: return false;
0917: if (c <= 0x10f6)
0918: return true;
0919:
0920: // #x1100
0921: if (c == 0x1100)
0922: return true;
0923:
0924: // [ #x1102 - #x1103 ]
0925: if (c < 0x1102)
0926: return false;
0927: if (c <= 0x1103)
0928: return true;
0929:
0930: // [ #x1105 - #x1107 ]
0931: if (c < 0x1105)
0932: return false;
0933: if (c <= 0x1107)
0934: return true;
0935:
0936: // #x1109
0937: if (c == 0x1109)
0938: return true;
0939:
0940: // [ #x110b - #x110c ]
0941: if (c < 0x110b)
0942: return false;
0943: if (c <= 0x110c)
0944: return true;
0945:
0946: // [ #x110e - #x1112 ]
0947: if (c < 0x110e)
0948: return false;
0949: if (c <= 0x1112)
0950: return true;
0951:
0952: // #x113c
0953: if (c == 0x113c)
0954: return true;
0955:
0956: // #x113e
0957: if (c == 0x113e)
0958: return true;
0959:
0960: // #x1140
0961: if (c == 0x1140)
0962: return true;
0963:
0964: // #x114c
0965: if (c == 0x114c)
0966: return true;
0967:
0968: // #x114e
0969: if (c == 0x114e)
0970: return true;
0971:
0972: // #x1150
0973: if (c == 0x1150)
0974: return true;
0975:
0976: // [ #x1154 - #x1155 ]
0977: if (c < 0x1154)
0978: return false;
0979: if (c <= 0x1155)
0980: return true;
0981:
0982: // #x1159
0983: if (c == 0x1159)
0984: return true;
0985:
0986: // [ #x115f - #x1161 ]
0987: if (c < 0x115f)
0988: return false;
0989: if (c <= 0x1161)
0990: return true;
0991:
0992: // #x1163
0993: if (c == 0x1163)
0994: return true;
0995:
0996: // #x1165
0997: if (c == 0x1165)
0998: return true;
0999:
1000: // #x1167
1001: if (c == 0x1167)
1002: return true;
1003:
1004: // #x1169
1005: if (c == 0x1169)
1006: return true;
1007:
1008: // [ #x116d - #x116e ]
1009: if (c < 0x116d)
1010: return false;
1011: if (c <= 0x116e)
1012: return true;
1013:
1014: // [ #x1172 - #x1173 ]
1015: if (c < 0x1172)
1016: return false;
1017: if (c <= 0x1173)
1018: return true;
1019:
1020: // #x1175
1021: if (c == 0x1175)
1022: return true;
1023:
1024: // #x119e
1025: if (c == 0x119e)
1026: return true;
1027:
1028: // #x11a8
1029: if (c == 0x11a8)
1030: return true;
1031:
1032: // #x11ab
1033: if (c == 0x11ab)
1034: return true;
1035:
1036: // [ #x11ae - #x11af ]
1037: if (c < 0x11ae)
1038: return false;
1039: if (c <= 0x11af)
1040: return true;
1041:
1042: // [ #x11b7 - #x11b8 ]
1043: if (c < 0x11b7)
1044: return false;
1045: if (c <= 0x11b8)
1046: return true;
1047:
1048: // #x11ba
1049: if (c == 0x11ba)
1050: return true;
1051:
1052: // [ #x11bc - #x11c2 ]
1053: if (c < 0x11bc)
1054: return false;
1055: if (c <= 0x11c2)
1056: return true;
1057:
1058: // #x11eb
1059: if (c == 0x11eb)
1060: return true;
1061:
1062: // #x11f0
1063: if (c == 0x11f0)
1064: return true;
1065:
1066: // #x11f9
1067: if (c == 0x11f9)
1068: return true;
1069:
1070: // [ #x1e00 - #x1e9b ]
1071: if (c < 0x1e00)
1072: return false;
1073: if (c <= 0x1e9b)
1074: return true;
1075:
1076: // [ #x1ea0 - #x1ef9 ]
1077: if (c < 0x1ea0)
1078: return false;
1079: if (c <= 0x1ef9)
1080: return true;
1081:
1082: // [ #x1f00 - #x1f15 ]
1083: if (c < 0x1f00)
1084: return false;
1085: if (c <= 0x1f15)
1086: return true;
1087:
1088: // [ #x1f18 - #x1f1d ]
1089: if (c < 0x1f18)
1090: return false;
1091: if (c <= 0x1f1d)
1092: return true;
1093:
1094: // [ #x1f20 - #x1f45 ]
1095: if (c < 0x1f20)
1096: return false;
1097: if (c <= 0x1f45)
1098: return true;
1099:
1100: // [ #x1f48 - #x1f4d ]
1101: if (c < 0x1f48)
1102: return false;
1103: if (c <= 0x1f4d)
1104: return true;
1105:
1106: // [ #x1f50 - #x1f57 ]
1107: if (c < 0x1f50)
1108: return false;
1109: if (c <= 0x1f57)
1110: return true;
1111:
1112: // #x1f59
1113: if (c == 0x1f59)
1114: return true;
1115:
1116: // #x1f5b
1117: if (c == 0x1f5b)
1118: return true;
1119:
1120: // #x1f5d
1121: if (c == 0x1f5d)
1122: return true;
1123:
1124: // [ #x1f5f - #x1f7d ]
1125: if (c < 0x1f5f)
1126: return false;
1127: if (c <= 0x1f7d)
1128: return true;
1129:
1130: // [ #x1f80 - #x1fb4 ]
1131: if (c < 0x1f80)
1132: return false;
1133: if (c <= 0x1fb4)
1134: return true;
1135:
1136: // [ #x1fb6 - #x1fbc ]
1137: if (c < 0x1fb6)
1138: return false;
1139: if (c <= 0x1fbc)
1140: return true;
1141:
1142: // #x1fbe
1143: if (c == 0x1fbe)
1144: return true;
1145:
1146: // [ #x1fc2 - #x1fc4 ]
1147: if (c < 0x1fc2)
1148: return false;
1149: if (c <= 0x1fc4)
1150: return true;
1151:
1152: // [ #x1fc6 - #x1fcc ]
1153: if (c < 0x1fc6)
1154: return false;
1155: if (c <= 0x1fcc)
1156: return true;
1157:
1158: // [ #x1fd0 - #x1fd3 ]
1159: if (c < 0x1fd0)
1160: return false;
1161: if (c <= 0x1fd3)
1162: return true;
1163:
1164: // [ #x1fd6 - #x1fdb ]
1165: if (c < 0x1fd6)
1166: return false;
1167: if (c <= 0x1fdb)
1168: return true;
1169:
1170: // [ #x1fe0 - #x1fec ]
1171: if (c < 0x1fe0)
1172: return false;
1173: if (c <= 0x1fec)
1174: return true;
1175:
1176: // [ #x1ff2 - #x1ff4 ]
1177: if (c < 0x1ff2)
1178: return false;
1179: if (c <= 0x1ff4)
1180: return true;
1181:
1182: // [ #x1ff6 - #x1ffc ]
1183: if (c < 0x1ff6)
1184: return false;
1185: if (c <= 0x1ffc)
1186: return true;
1187:
1188: // #x2126
1189: if (c == 0x2126)
1190: return true;
1191:
1192: // [ #x212a - #x212b ]
1193: if (c < 0x212a)
1194: return false;
1195: if (c <= 0x212b)
1196: return true;
1197:
1198: // #x212e
1199: if (c == 0x212e)
1200: return true;
1201:
1202: // [ #x2180 - #x2182 ]
1203: if (c < 0x2180)
1204: return false;
1205: if (c <= 0x2182)
1206: return true;
1207:
1208: // [ #x3041 - #x3094 ]
1209: if (c < 0x3041)
1210: return false;
1211: if (c <= 0x3094)
1212: return true;
1213:
1214: // [ #x30a1 - #x30fa ]
1215: if (c < 0x30a1)
1216: return false;
1217: if (c <= 0x30fa)
1218: return true;
1219:
1220: // [ #x3105 - #x312c ]
1221: if (c < 0x3105)
1222: return false;
1223: if (c <= 0x312c)
1224: return true;
1225:
1226: // [ #xac00 - #xd7a3 ]
1227: if (c < 0xac00)
1228: return false;
1229: if (c <= 0xd7a3)
1230: return true;
1231:
1232: return false;
1233: }
1234:
1235: /**
1236: * @see http://www.w3.org/TR/REC-xml#NT-Ideographic
1237: */
1238: public static boolean isXMLIdeographic(int c) {
1239: // #x3007
1240: if (c == 0x3007)
1241: return true;
1242:
1243: // [ #x3021 - #x3029 ]
1244: if (c < 0x3021)
1245: return false;
1246: if (c <= 0x3029)
1247: return true;
1248:
1249: // [ #x4e00 - #x9fa5 ]
1250: if (c < 0x4e00)
1251: return false;
1252: if (c <= 0x9fa5)
1253: return true;
1254:
1255: return false;
1256: }
1257:
1258: /**
1259: * @see http://www.w3.org/TR/REC-xml#NT-CombiningChar
1260: */
1261: public static boolean isXMLCombiningChar(int c) {
1262: // [ #x0300 - #x0345 ]
1263: if (c < 0x0300)
1264: return false;
1265: if (c <= 0x0345)
1266: return true;
1267:
1268: // [ #x0360 - #x0361 ]
1269: if (c < 0x0360)
1270: return false;
1271: if (c <= 0x0361)
1272: return true;
1273:
1274: // [ #x0483 - #x0486 ]
1275: if (c < 0x0483)
1276: return false;
1277: if (c <= 0x0486)
1278: return true;
1279:
1280: // [ #x0591 - #x05a1 ]
1281: if (c < 0x0591)
1282: return false;
1283: if (c <= 0x05a1)
1284: return true;
1285:
1286: // [ #x05a3 - #x05b9 ]
1287: if (c < 0x05a3)
1288: return false;
1289: if (c <= 0x05b9)
1290: return true;
1291:
1292: // [ #x05bb - #x05bd ]
1293: if (c < 0x05bb)
1294: return false;
1295: if (c <= 0x05bd)
1296: return true;
1297:
1298: // #x05bf
1299: if (c == 0x05bf)
1300: return true;
1301:
1302: // [ #x05c1 - #x05c2 ]
1303: if (c < 0x05c1)
1304: return false;
1305: if (c <= 0x05c2)
1306: return true;
1307:
1308: // #x05c4
1309: if (c == 0x05c4)
1310: return true;
1311:
1312: // [ #x064b - #x0652 ]
1313: if (c < 0x064b)
1314: return false;
1315: if (c <= 0x0652)
1316: return true;
1317:
1318: // #x0670
1319: if (c == 0x0670)
1320: return true;
1321:
1322: // [ #x06d6 - #x06dc ]
1323: if (c < 0x06d6)
1324: return false;
1325: if (c <= 0x06dc)
1326: return true;
1327:
1328: // [ #x06dd - #x06df ]
1329: if (c < 0x06dd)
1330: return false;
1331: if (c <= 0x06df)
1332: return true;
1333:
1334: // [ #x06e0 - #x06e4 ]
1335: if (c < 0x06e0)
1336: return false;
1337: if (c <= 0x06e4)
1338: return true;
1339:
1340: // [ #x06e7 - #x06e8 ]
1341: if (c < 0x06e7)
1342: return false;
1343: if (c <= 0x06e8)
1344: return true;
1345:
1346: // [ #x06ea - #x06ed ]
1347: if (c < 0x06ea)
1348: return false;
1349: if (c <= 0x06ed)
1350: return true;
1351:
1352: // [ #x0901 - #x0903 ]
1353: if (c < 0x0901)
1354: return false;
1355: if (c <= 0x0903)
1356: return true;
1357:
1358: // #x093c
1359: if (c == 0x093c)
1360: return true;
1361:
1362: // [ #x093e - #x094c ]
1363: if (c < 0x093e)
1364: return false;
1365: if (c <= 0x094c)
1366: return true;
1367:
1368: // #x094d
1369: if (c == 0x094d)
1370: return true;
1371:
1372: // [ #x0951 - #x0954 ]
1373: if (c < 0x0951)
1374: return false;
1375: if (c <= 0x0954)
1376: return true;
1377:
1378: // [ #x0962 - #x0963 ]
1379: if (c < 0x0962)
1380: return false;
1381: if (c <= 0x0963)
1382: return true;
1383:
1384: // [ #x0981 - #x0983 ]
1385: if (c < 0x0981)
1386: return false;
1387: if (c <= 0x0983)
1388: return true;
1389:
1390: // #x09bc
1391: if (c == 0x09bc)
1392: return true;
1393:
1394: // #x09be
1395: if (c == 0x09be)
1396: return true;
1397:
1398: // #x09bf
1399: if (c == 0x09bf)
1400: return true;
1401:
1402: // [ #x09c0 - #x09c4 ]
1403: if (c < 0x09c0)
1404: return false;
1405: if (c <= 0x09c4)
1406: return true;
1407:
1408: // [ #x09c7 - #x09c8 ]
1409: if (c < 0x09c7)
1410: return false;
1411: if (c <= 0x09c8)
1412: return true;
1413:
1414: // [ #x09cb - #x09cd ]
1415: if (c < 0x09cb)
1416: return false;
1417: if (c <= 0x09cd)
1418: return true;
1419:
1420: // #x09d7
1421: if (c == 0x09d7)
1422: return true;
1423:
1424: // [ #x09e2 - #x09e3 ]
1425: if (c < 0x09e2)
1426: return false;
1427: if (c <= 0x09e3)
1428: return true;
1429:
1430: // #x0a02
1431: if (c == 0x0a02)
1432: return true;
1433:
1434: // #x0a3c
1435: if (c == 0x0a3c)
1436: return true;
1437:
1438: // #x0a3e
1439: if (c == 0x0a3e)
1440: return true;
1441:
1442: // #x0a3f
1443: if (c == 0x0a3f)
1444: return true;
1445:
1446: // [ #x0a40 - #x0a42 ]
1447: if (c < 0x0a40)
1448: return false;
1449: if (c <= 0x0a42)
1450: return true;
1451:
1452: // [ #x0a47 - #x0a48 ]
1453: if (c < 0x0a47)
1454: return false;
1455: if (c <= 0x0a48)
1456: return true;
1457:
1458: // [ #x0a4b - #x0a4d ]
1459: if (c < 0x0a4b)
1460: return false;
1461: if (c <= 0x0a4d)
1462: return true;
1463:
1464: // [ #x0a70 - #x0a71 ]
1465: if (c < 0x0a70)
1466: return false;
1467: if (c <= 0x0a71)
1468: return true;
1469:
1470: // [ #x0a81 - #x0a83 ]
1471: if (c < 0x0a81)
1472: return false;
1473: if (c <= 0x0a83)
1474: return true;
1475:
1476: // #x0abc
1477: if (c == 0x0abc)
1478: return true;
1479:
1480: // [ #x0abe - #x0ac5 ]
1481: if (c < 0x0abe)
1482: return false;
1483: if (c <= 0x0ac5)
1484: return true;
1485:
1486: // [ #x0ac7 - #x0ac9 ]
1487: if (c < 0x0ac7)
1488: return false;
1489: if (c <= 0x0ac9)
1490: return true;
1491:
1492: // [ #x0acb - #x0acd ]
1493: if (c < 0x0acb)
1494: return false;
1495: if (c <= 0x0acd)
1496: return true;
1497:
1498: // [ #x0b01 - #x0b03 ]
1499: if (c < 0x0b01)
1500: return false;
1501: if (c <= 0x0b03)
1502: return true;
1503:
1504: // #x0b3c
1505: if (c == 0x0b3c)
1506: return true;
1507:
1508: // [ #x0b3e - #x0b43 ]
1509: if (c < 0x0b3e)
1510: return false;
1511: if (c <= 0x0b43)
1512: return true;
1513:
1514: // [ #x0b47 - #x0b48 ]
1515: if (c < 0x0b47)
1516: return false;
1517: if (c <= 0x0b48)
1518: return true;
1519:
1520: // [ #x0b4b - #x0b4d ]
1521: if (c < 0x0b4b)
1522: return false;
1523: if (c <= 0x0b4d)
1524: return true;
1525:
1526: // [ #x0b56 - #x0b57 ]
1527: if (c < 0x0b56)
1528: return false;
1529: if (c <= 0x0b57)
1530: return true;
1531:
1532: // [ #x0b82 - #x0b83 ]
1533: if (c < 0x0b82)
1534: return false;
1535: if (c <= 0x0b83)
1536: return true;
1537:
1538: // [ #x0bbe - #x0bc2 ]
1539: if (c < 0x0bbe)
1540: return false;
1541: if (c <= 0x0bc2)
1542: return true;
1543:
1544: // [ #x0bc6 - #x0bc8 ]
1545: if (c < 0x0bc6)
1546: return false;
1547: if (c <= 0x0bc8)
1548: return true;
1549:
1550: // [ #x0bca - #x0bcd ]
1551: if (c < 0x0bca)
1552: return false;
1553: if (c <= 0x0bcd)
1554: return true;
1555:
1556: // #x0bd7
1557: if (c == 0x0bd7)
1558: return true;
1559:
1560: // [ #x0c01 - #x0c03 ]
1561: if (c < 0x0c01)
1562: return false;
1563: if (c <= 0x0c03)
1564: return true;
1565:
1566: // [ #x0c3e - #x0c44 ]
1567: if (c < 0x0c3e)
1568: return false;
1569: if (c <= 0x0c44)
1570: return true;
1571:
1572: // [ #x0c46 - #x0c48 ]
1573: if (c < 0x0c46)
1574: return false;
1575: if (c <= 0x0c48)
1576: return true;
1577:
1578: // [ #x0c4a - #x0c4d ]
1579: if (c < 0x0c4a)
1580: return false;
1581: if (c <= 0x0c4d)
1582: return true;
1583:
1584: // [ #x0c55 - #x0c56 ]
1585: if (c < 0x0c55)
1586: return false;
1587: if (c <= 0x0c56)
1588: return true;
1589:
1590: // [ #x0c82 - #x0c83 ]
1591: if (c < 0x0c82)
1592: return false;
1593: if (c <= 0x0c83)
1594: return true;
1595:
1596: // [ #x0cbe - #x0cc4 ]
1597: if (c < 0x0cbe)
1598: return false;
1599: if (c <= 0x0cc4)
1600: return true;
1601:
1602: // [ #x0cc6 - #x0cc8 ]
1603: if (c < 0x0cc6)
1604: return false;
1605: if (c <= 0x0cc8)
1606: return true;
1607:
1608: // [ #x0cca - #x0ccd ]
1609: if (c < 0x0cca)
1610: return false;
1611: if (c <= 0x0ccd)
1612: return true;
1613:
1614: // [ #x0cd5 - #x0cd6 ]
1615: if (c < 0x0cd5)
1616: return false;
1617: if (c <= 0x0cd6)
1618: return true;
1619:
1620: // [ #x0d02 - #x0d03 ]
1621: if (c < 0x0d02)
1622: return false;
1623: if (c <= 0x0d03)
1624: return true;
1625:
1626: // [ #x0d3e - #x0d43 ]
1627: if (c < 0x0d3e)
1628: return false;
1629: if (c <= 0x0d43)
1630: return true;
1631:
1632: // [ #x0d46 - #x0d48 ]
1633: if (c < 0x0d46)
1634: return false;
1635: if (c <= 0x0d48)
1636: return true;
1637:
1638: // [ #x0d4a - #x0d4d ]
1639: if (c < 0x0d4a)
1640: return false;
1641: if (c <= 0x0d4d)
1642: return true;
1643:
1644: // #x0d57
1645: if (c == 0x0d57)
1646: return true;
1647:
1648: // #x0e31
1649: if (c == 0x0e31)
1650: return true;
1651:
1652: // [ #x0e34 - #x0e3a ]
1653: if (c < 0x0e34)
1654: return false;
1655: if (c <= 0x0e3a)
1656: return true;
1657:
1658: // [ #x0e47 - #x0e4e ]
1659: if (c < 0x0e47)
1660: return false;
1661: if (c <= 0x0e4e)
1662: return true;
1663:
1664: // #x0eb1
1665: if (c == 0x0eb1)
1666: return true;
1667:
1668: // [ #x0eb4 - #x0eb9 ]
1669: if (c < 0x0eb4)
1670: return false;
1671: if (c <= 0x0eb9)
1672: return true;
1673:
1674: // [ #x0ebb - #x0ebc ]
1675: if (c < 0x0ebb)
1676: return false;
1677: if (c <= 0x0ebc)
1678: return true;
1679:
1680: // [ #x0ec8 - #x0ecd ]
1681: if (c < 0x0ec8)
1682: return false;
1683: if (c <= 0x0ecd)
1684: return true;
1685:
1686: // [ #x0f18 - #x0f19 ]
1687: if (c < 0x0f18)
1688: return false;
1689: if (c <= 0x0f19)
1690: return true;
1691:
1692: // #x0f35
1693: if (c == 0x0f35)
1694: return true;
1695:
1696: // #x0f37
1697: if (c == 0x0f37)
1698: return true;
1699:
1700: // #x0f39
1701: if (c == 0x0f39)
1702: return true;
1703:
1704: // #x0f3e
1705: if (c == 0x0f3e)
1706: return true;
1707:
1708: // #x0f3f
1709: if (c == 0x0f3f)
1710: return true;
1711:
1712: // [ #x0f71 - #x0f84 ]
1713: if (c < 0x0f71)
1714: return false;
1715: if (c <= 0x0f84)
1716: return true;
1717:
1718: // [ #x0f86 - #x0f8b ]
1719: if (c < 0x0f86)
1720: return false;
1721: if (c <= 0x0f8b)
1722: return true;
1723:
1724: // [ #x0f90 - #x0f95 ]
1725: if (c < 0x0f90)
1726: return false;
1727: if (c <= 0x0f95)
1728: return true;
1729:
1730: // #x0f97
1731: if (c == 0x0f97)
1732: return true;
1733:
1734: // [ #x0f99 - #x0fad ]
1735: if (c < 0x0f99)
1736: return false;
1737: if (c <= 0x0fad)
1738: return true;
1739:
1740: // [ #x0fb1 - #x0fb7 ]
1741: if (c < 0x0fb1)
1742: return false;
1743: if (c <= 0x0fb7)
1744: return true;
1745:
1746: // #x0fb9
1747: if (c == 0x0fb9)
1748: return true;
1749:
1750: // [ #x20d0 - #x20dc ]
1751: if (c < 0x20d0)
1752: return false;
1753: if (c <= 0x20dc)
1754: return true;
1755:
1756: // #x20e1
1757: if (c == 0x20e1)
1758: return true;
1759:
1760: // [ #x302a - #x302f ]
1761: if (c < 0x302a)
1762: return false;
1763: if (c <= 0x302f)
1764: return true;
1765:
1766: // #x3099
1767: if (c == 0x3099)
1768: return true;
1769:
1770: // #x309a
1771: if (c == 0x309a)
1772: return true;
1773:
1774: return false;
1775: }
1776:
1777: /**
1778: * @see http://www.w3.org/TR/REC-xml#NT-Digit
1779: */
1780: public static boolean isXMLDigit(int c) {
1781: // [ #x0030 - #x0039 ]
1782: if (c < 0x0030)
1783: return false;
1784: if (c <= 0x0039)
1785: return true;
1786:
1787: // [ #x0660 - #x0669 ]
1788: if (c < 0x0660)
1789: return false;
1790: if (c <= 0x0669)
1791: return true;
1792:
1793: // [ #x06f0 - #x06f9 ]
1794: if (c < 0x06f0)
1795: return false;
1796: if (c <= 0x06f9)
1797: return true;
1798:
1799: // [ #x0966 - #x096f ]
1800: if (c < 0x0966)
1801: return false;
1802: if (c <= 0x096f)
1803: return true;
1804:
1805: // [ #x09e6 - #x09ef ]
1806: if (c < 0x09e6)
1807: return false;
1808: if (c <= 0x09ef)
1809: return true;
1810:
1811: // [ #x0a66 - #x0a6f ]
1812: if (c < 0x0a66)
1813: return false;
1814: if (c <= 0x0a6f)
1815: return true;
1816:
1817: // [ #x0ae6 - #x0aef ]
1818: if (c < 0x0ae6)
1819: return false;
1820: if (c <= 0x0aef)
1821: return true;
1822:
1823: // [ #x0b66 - #x0b6f ]
1824: if (c < 0x0b66)
1825: return false;
1826: if (c <= 0x0b6f)
1827: return true;
1828:
1829: // [ #x0be7 - #x0bef ]
1830: if (c < 0x0be7)
1831: return false;
1832: if (c <= 0x0bef)
1833: return true;
1834:
1835: // [ #x0c66 - #x0c6f ]
1836: if (c < 0x0c66)
1837: return false;
1838: if (c <= 0x0c6f)
1839: return true;
1840:
1841: // [ #x0ce6 - #x0cef ]
1842: if (c < 0x0ce6)
1843: return false;
1844: if (c <= 0x0cef)
1845: return true;
1846:
1847: // [ #x0d66 - #x0d6f ]
1848: if (c < 0x0d66)
1849: return false;
1850: if (c <= 0x0d6f)
1851: return true;
1852:
1853: // [ #x0e50 - #x0e59 ]
1854: if (c < 0x0e50)
1855: return false;
1856: if (c <= 0x0e59)
1857: return true;
1858:
1859: // [ #x0ed0 - #x0ed9 ]
1860: if (c < 0x0ed0)
1861: return false;
1862: if (c <= 0x0ed9)
1863: return true;
1864:
1865: // [ #x0f20 - #x0f29 ]
1866: if (c < 0x0f20)
1867: return false;
1868: if (c <= 0x0f29)
1869: return true;
1870:
1871: return false;
1872: }
1873:
1874: /**
1875: * @see http://www.w3.org/TR/REC-xml#NT-Extender
1876: */
1877: public static boolean isXMLExtender(int c) {
1878: // #x00b7
1879: if (c == 0x00b7)
1880: return true;
1881:
1882: // #x02d0
1883: if (c == 0x02d0)
1884: return true;
1885:
1886: // #x02d1
1887: if (c == 0x02d1)
1888: return true;
1889:
1890: // #x0387
1891: if (c == 0x0387)
1892: return true;
1893:
1894: // #x0640
1895: if (c == 0x0640)
1896: return true;
1897:
1898: // #x0e46
1899: if (c == 0x0e46)
1900: return true;
1901:
1902: // #x0ec6
1903: if (c == 0x0ec6)
1904: return true;
1905:
1906: // #x3005
1907: if (c == 0x3005)
1908: return true;
1909:
1910: // [ #x3031 - #x3035 ]
1911: if (c < 0x3031)
1912: return false;
1913: if (c <= 0x3035)
1914: return true;
1915:
1916: // [ #x309d - #x309e ]
1917: if (c < 0x309d)
1918: return false;
1919: if (c <= 0x309e)
1920: return true;
1921:
1922: // [ #x30fc - #x30fe ]
1923: if (c < 0x30fc)
1924: return false;
1925: if (c <= 0x30fe)
1926: return true;
1927:
1928: return false;
1929: }
1930:
1931: /**
1932: * @see http://www.w3.org/TR/REC-xml-names/#NT-NCNameChar
1933: */
1934: public static boolean isXMLNCNameChar(int c) {
1935: return ((isXMLLetter(c)) || (isXMLDigit(c)) || (c == '.')
1936: || (c == '-') || (c == '_') || (isXMLCombiningChar(c)) || (isXMLExtender(c)));
1937: }
1938:
1939: /**
1940: * @see http://www.w3.org/TR/REC-xml-names/#NT-NCName
1941: */
1942: public static boolean isXMLNCNameStartChar(int c) {
1943: return ((isXMLLetter(c)) || (c == '_'));
1944: }
1945:
1946: /**
1947: * @see http://www.w3.org/TR/REC-xml#NT-PubidLiteral
1948: */
1949: public static boolean isXMLPubidLiteral(char c) {
1950: // System.out.println ("[UnicodeClasses.isXMLPubidLiteral] '" + c + "' = 0x" +
1951: // Integer.toHexString (c));
1952:
1953: // #x0020
1954: if (c == ' ')
1955: return true;
1956:
1957: // #x000d
1958: if (c == '\r')
1959: return true;
1960:
1961: // #x000a
1962: if (c == '\n')
1963: return true;
1964:
1965: // -
1966: if (c == '-')
1967: return true;
1968:
1969: // '
1970: if (c == '\'')
1971: return true;
1972:
1973: // (
1974: if (c == '(')
1975: return true;
1976:
1977: // )
1978: if (c == ')')
1979: return true;
1980:
1981: // +
1982: if (c == '+')
1983: return true;
1984:
1985: // ,
1986: if (c == ',')
1987: return true;
1988:
1989: // .
1990: if (c == '.')
1991: return true;
1992:
1993: // /
1994: if (c == '/')
1995: return true;
1996:
1997: // :
1998: if (c == ':')
1999: return true;
2000:
2001: // =
2002: if (c == '=')
2003: return true;
2004:
2005: // ?
2006: if (c == '?')
2007: return true;
2008:
2009: // ;
2010: if (c == ';')
2011: return true;
2012:
2013: // !
2014: if (c == '!')
2015: return true;
2016:
2017: // *
2018: if (c == '*')
2019: return true;
2020:
2021: // #
2022: if (c == '#')
2023: return true;
2024:
2025: // @
2026: if (c == '@')
2027: return true;
2028:
2029: // $
2030: if (c == '$')
2031: return true;
2032:
2033: // _
2034: if (c == '_')
2035: return true;
2036:
2037: // %
2038: if (c == '%')
2039: return true;
2040:
2041: // [ 0 - 9 ]
2042: if (c < '0')
2043: return false;
2044: if (c <= '9')
2045: return true;
2046:
2047: // [ A - Z ]
2048: if (c < 'A')
2049: return false;
2050: if (c <= 'Z')
2051: return true;
2052:
2053: // [ a - z ]
2054: if (c < 'a')
2055: return false;
2056: if (c <= 'z')
2057: return true;
2058:
2059: return false;
2060: }
2061:
2062: }
|