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