xmlchar.java
来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 1,064 行 · 第 1/4 页
JAVA
1,064 行
/* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999-2004 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.apache.org. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */package com.sun.org.apache.xerces.internal.util;import java.util.Arrays;/** * This class defines the basic XML character properties. The data * in this class can be used to verify that a character is a valid * XML character or if the character is a space, name start, or name * character. * <p> * A series of convenience methods are supplied to ease the burden * of the developer. Because inlining the checks can improve per * character performance, the tables of character properties are * public. Using the character as an index into the <code>CHARS</code> * array and applying the appropriate mask flag (e.g. * <code>MASK_VALID</code>), yields the same results as calling the * convenience methods. There is one exception: check the comments * for the <code>isValid</code> method for details. * * @author Glenn Marcy, IBM * @author Andy Clark, IBM * @author Eric Ye, IBM * @author Arnaud Le Hors, IBM * @author Michael Glavassevich, IBM * @author Rahul Srivastava, Sun Microsystems Inc. * * @version $Id: XMLChar.java,v 1.14 2004/02/03 20:34:27 mrglavas Exp $ */public class XMLChar { // // Constants // /** Character flags. */ private static final byte[] CHARS = new byte[1 << 16]; /** Valid character mask. */ public static final int MASK_VALID = 0x01; /** Space character mask. */ public static final int MASK_SPACE = 0x02; /** Name start character mask. */ public static final int MASK_NAME_START = 0x04; /** Name character mask. */ public static final int MASK_NAME = 0x08; /** Pubid character mask. */ public static final int MASK_PUBID = 0x10; /** * Content character mask. Special characters are those that can * be considered the start of markup, such as '<' and '&'. * The various newline characters are considered special as well. * All other valid XML characters can be considered content. * <p> * This is an optimization for the inner loop of character scanning. */ public static final int MASK_CONTENT = 0x20; /** NCName start character mask. */ public static final int MASK_NCNAME_START = 0x40; /** NCName character mask. */ public static final int MASK_NCNAME = 0x80; // // Static initialization // static { // Initializing the Character Flag Array // Code generated by: XMLCharGenerator. CHARS[9] = 35; CHARS[10] = 19; CHARS[13] = 19; CHARS[32] = 51; CHARS[33] = 49; CHARS[34] = 33; Arrays.fill(CHARS, 35, 38, (byte) 49 ); // Fill 3 of value (byte) 49 CHARS[38] = 1; Arrays.fill(CHARS, 39, 45, (byte) 49 ); // Fill 6 of value (byte) 49 Arrays.fill(CHARS, 45, 47, (byte) -71 ); // Fill 2 of value (byte) -71 CHARS[47] = 49; Arrays.fill(CHARS, 48, 58, (byte) -71 ); // Fill 10 of value (byte) -71 CHARS[58] = 61; CHARS[59] = 49; CHARS[60] = 1; CHARS[61] = 49; CHARS[62] = 33; Arrays.fill(CHARS, 63, 65, (byte) 49 ); // Fill 2 of value (byte) 49 Arrays.fill(CHARS, 65, 91, (byte) -3 ); // Fill 26 of value (byte) -3 Arrays.fill(CHARS, 91, 93, (byte) 33 ); // Fill 2 of value (byte) 33 CHARS[93] = 1; CHARS[94] = 33; CHARS[95] = -3; CHARS[96] = 33; Arrays.fill(CHARS, 97, 123, (byte) -3 ); // Fill 26 of value (byte) -3 Arrays.fill(CHARS, 123, 183, (byte) 33 ); // Fill 60 of value (byte) 33 CHARS[183] = -87; Arrays.fill(CHARS, 184, 192, (byte) 33 ); // Fill 8 of value (byte) 33 Arrays.fill(CHARS, 192, 215, (byte) -19 ); // Fill 23 of value (byte) -19 CHARS[215] = 33; Arrays.fill(CHARS, 216, 247, (byte) -19 ); // Fill 31 of value (byte) -19 CHARS[247] = 33; Arrays.fill(CHARS, 248, 306, (byte) -19 ); // Fill 58 of value (byte) -19 Arrays.fill(CHARS, 306, 308, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 308, 319, (byte) -19 ); // Fill 11 of value (byte) -19 Arrays.fill(CHARS, 319, 321, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 321, 329, (byte) -19 ); // Fill 8 of value (byte) -19 CHARS[329] = 33; Arrays.fill(CHARS, 330, 383, (byte) -19 ); // Fill 53 of value (byte) -19 CHARS[383] = 33; Arrays.fill(CHARS, 384, 452, (byte) -19 ); // Fill 68 of value (byte) -19 Arrays.fill(CHARS, 452, 461, (byte) 33 ); // Fill 9 of value (byte) 33 Arrays.fill(CHARS, 461, 497, (byte) -19 ); // Fill 36 of value (byte) -19 Arrays.fill(CHARS, 497, 500, (byte) 33 ); // Fill 3 of value (byte) 33 Arrays.fill(CHARS, 500, 502, (byte) -19 ); // Fill 2 of value (byte) -19 Arrays.fill(CHARS, 502, 506, (byte) 33 ); // Fill 4 of value (byte) 33 Arrays.fill(CHARS, 506, 536, (byte) -19 ); // Fill 30 of value (byte) -19 Arrays.fill(CHARS, 536, 592, (byte) 33 ); // Fill 56 of value (byte) 33 Arrays.fill(CHARS, 592, 681, (byte) -19 ); // Fill 89 of value (byte) -19 Arrays.fill(CHARS, 681, 699, (byte) 33 ); // Fill 18 of value (byte) 33 Arrays.fill(CHARS, 699, 706, (byte) -19 ); // Fill 7 of value (byte) -19 Arrays.fill(CHARS, 706, 720, (byte) 33 ); // Fill 14 of value (byte) 33 Arrays.fill(CHARS, 720, 722, (byte) -87 ); // Fill 2 of value (byte) -87 Arrays.fill(CHARS, 722, 768, (byte) 33 ); // Fill 46 of value (byte) 33 Arrays.fill(CHARS, 768, 838, (byte) -87 ); // Fill 70 of value (byte) -87 Arrays.fill(CHARS, 838, 864, (byte) 33 ); // Fill 26 of value (byte) 33 Arrays.fill(CHARS, 864, 866, (byte) -87 ); // Fill 2 of value (byte) -87 Arrays.fill(CHARS, 866, 902, (byte) 33 ); // Fill 36 of value (byte) 33 CHARS[902] = -19; CHARS[903] = -87; Arrays.fill(CHARS, 904, 907, (byte) -19 ); // Fill 3 of value (byte) -19 CHARS[907] = 33; CHARS[908] = -19; CHARS[909] = 33; Arrays.fill(CHARS, 910, 930, (byte) -19 ); // Fill 20 of value (byte) -19 CHARS[930] = 33; Arrays.fill(CHARS, 931, 975, (byte) -19 ); // Fill 44 of value (byte) -19 CHARS[975] = 33; Arrays.fill(CHARS, 976, 983, (byte) -19 ); // Fill 7 of value (byte) -19 Arrays.fill(CHARS, 983, 986, (byte) 33 ); // Fill 3 of value (byte) 33 CHARS[986] = -19; CHARS[987] = 33; CHARS[988] = -19; CHARS[989] = 33; CHARS[990] = -19; CHARS[991] = 33; CHARS[992] = -19; CHARS[993] = 33; Arrays.fill(CHARS, 994, 1012, (byte) -19 ); // Fill 18 of value (byte) -19 Arrays.fill(CHARS, 1012, 1025, (byte) 33 ); // Fill 13 of value (byte) 33 Arrays.fill(CHARS, 1025, 1037, (byte) -19 ); // Fill 12 of value (byte) -19 CHARS[1037] = 33; Arrays.fill(CHARS, 1038, 1104, (byte) -19 ); // Fill 66 of value (byte) -19 CHARS[1104] = 33; Arrays.fill(CHARS, 1105, 1117, (byte) -19 ); // Fill 12 of value (byte) -19 CHARS[1117] = 33; Arrays.fill(CHARS, 1118, 1154, (byte) -19 ); // Fill 36 of value (byte) -19 CHARS[1154] = 33; Arrays.fill(CHARS, 1155, 1159, (byte) -87 ); // Fill 4 of value (byte) -87 Arrays.fill(CHARS, 1159, 1168, (byte) 33 ); // Fill 9 of value (byte) 33 Arrays.fill(CHARS, 1168, 1221, (byte) -19 ); // Fill 53 of value (byte) -19 Arrays.fill(CHARS, 1221, 1223, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 1223, 1225, (byte) -19 ); // Fill 2 of value (byte) -19 Arrays.fill(CHARS, 1225, 1227, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 1227, 1229, (byte) -19 ); // Fill 2 of value (byte) -19 Arrays.fill(CHARS, 1229, 1232, (byte) 33 ); // Fill 3 of value (byte) 33 Arrays.fill(CHARS, 1232, 1260, (byte) -19 ); // Fill 28 of value (byte) -19 Arrays.fill(CHARS, 1260, 1262, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 1262, 1270, (byte) -19 ); // Fill 8 of value (byte) -19 Arrays.fill(CHARS, 1270, 1272, (byte) 33 ); // Fill 2 of value (byte) 33 Arrays.fill(CHARS, 1272, 1274, (byte) -19 ); // Fill 2 of value (byte) -19 Arrays.fill(CHARS, 1274, 1329, (byte) 33 ); // Fill 55 of value (byte) 33 Arrays.fill(CHARS, 1329, 1367, (byte) -19 ); // Fill 38 of value (byte) -19 Arrays.fill(CHARS, 1367, 1369, (byte) 33 ); // Fill 2 of value (byte) 33 CHARS[1369] = -19; Arrays.fill(CHARS, 1370, 1377, (byte) 33 ); // Fill 7 of value (byte) 33 Arrays.fill(CHARS, 1377, 1415, (byte) -19 ); // Fill 38 of value (byte) -19 Arrays.fill(CHARS, 1415, 1425, (byte) 33 ); // Fill 10 of value (byte) 33 Arrays.fill(CHARS, 1425, 1442, (byte) -87 ); // Fill 17 of value (byte) -87 CHARS[1442] = 33; Arrays.fill(CHARS, 1443, 1466, (byte) -87 ); // Fill 23 of value (byte) -87 CHARS[1466] = 33; Arrays.fill(CHARS, 1467, 1470, (byte) -87 ); // Fill 3 of value (byte) -87 CHARS[1470] = 33; CHARS[1471] = -87; CHARS[1472] = 33; Arrays.fill(CHARS, 1473, 1475, (byte) -87 ); // Fill 2 of value (byte) -87 CHARS[1475] = 33; CHARS[1476] = -87; Arrays.fill(CHARS, 1477, 1488, (byte) 33 ); // Fill 11 of value (byte) 33 Arrays.fill(CHARS, 1488, 1515, (byte) -19 ); // Fill 27 of value (byte) -19 Arrays.fill(CHARS, 1515, 1520, (byte) 33 ); // Fill 5 of value (byte) 33 Arrays.fill(CHARS, 1520, 1523, (byte) -19 ); // Fill 3 of value (byte) -19 Arrays.fill(CHARS, 1523, 1569, (byte) 33 ); // Fill 46 of value (byte) 33 Arrays.fill(CHARS, 1569, 1595, (byte) -19 ); // Fill 26 of value (byte) -19 Arrays.fill(CHARS, 1595, 1600, (byte) 33 ); // Fill 5 of value (byte) 33 CHARS[1600] = -87; Arrays.fill(CHARS, 1601, 1611, (byte) -19 ); // Fill 10 of value (byte) -19 Arrays.fill(CHARS, 1611, 1619, (byte) -87 ); // Fill 8 of value (byte) -87 Arrays.fill(CHARS, 1619, 1632, (byte) 33 ); // Fill 13 of value (byte) 33 Arrays.fill(CHARS, 1632, 1642, (byte) -87 ); // Fill 10 of value (byte) -87 Arrays.fill(CHARS, 1642, 1648, (byte) 33 ); // Fill 6 of value (byte) 33
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?