📄 xpath.java
字号:
public void addToken(int token) { try { fTokens[fTokenCount] = token; } catch (ArrayIndexOutOfBoundsException ex) { int[] oldList = fTokens; fTokens = new int[fTokenCount << 1]; System.arraycopy(oldList, 0, fTokens, 0, fTokenCount); fTokens[fTokenCount] = token; } fTokenCount++; }// public int getTokenCount() {// return fTokenCount;// }// public int getToken(int tokenIndex) {// return fTokens[tokenIndex];// } /** * Resets the current position to the head of the token list. */ public void rewind() { fCurrentTokenIndex=0; } /** * Returns true if the {@link #getNextToken()} method * returns a valid token. */ public boolean hasMore() { return fCurrentTokenIndex<fTokenCount; } /** * Obtains the token at the current position, then advance * the current position by one. * * If there's no such next token, this method throws * <tt>new XPathException("c-general-xpath");</tt>. */ public int nextToken() throws XPathException { if( fCurrentTokenIndex==fTokenCount ) throw new XPathException("c-general-xpath"); return fTokens[fCurrentTokenIndex++]; } /** * Obtains the token at the current position, without advancing * the current position. * * If there's no such next token, this method throws * <tt>new XPathException("c-general-xpath");</tt>. */ public int peekToken() throws XPathException { if( fCurrentTokenIndex==fTokenCount ) throw new XPathException("c-general-xpath"); return fTokens[fCurrentTokenIndex]; } /** * Obtains the token at the current position as a String. * * If there's no current token or if the current token * is not a string token, this method throws * <tt>new XPathException("c-general-xpath");</tt>. */ public String nextTokenAsString() throws XPathException { String s = getTokenString(nextToken()); if(s==null) throw new XPathException("c-general-xpath"); return s; } public void dumpTokens() { //if (DUMP_TOKENS) { for (int i = 0; i < fTokenCount; i++) { switch (fTokens[i]) { case EXPRTOKEN_OPEN_PAREN: System.out.print("<OPEN_PAREN/>"); break; case EXPRTOKEN_CLOSE_PAREN: System.out.print("<CLOSE_PAREN/>"); break; case EXPRTOKEN_OPEN_BRACKET: System.out.print("<OPEN_BRACKET/>"); break; case EXPRTOKEN_CLOSE_BRACKET: System.out.print("<CLOSE_BRACKET/>"); break; case EXPRTOKEN_PERIOD: System.out.print("<PERIOD/>"); break; case EXPRTOKEN_DOUBLE_PERIOD: System.out.print("<DOUBLE_PERIOD/>"); break; case EXPRTOKEN_ATSIGN: System.out.print("<ATSIGN/>"); break; case EXPRTOKEN_COMMA: System.out.print("<COMMA/>"); break; case EXPRTOKEN_DOUBLE_COLON: System.out.print("<DOUBLE_COLON/>"); break; case EXPRTOKEN_NAMETEST_ANY: System.out.print("<NAMETEST_ANY/>"); break; case EXPRTOKEN_NAMETEST_NAMESPACE: System.out.print("<NAMETEST_NAMESPACE"); System.out.print(" prefix=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; case EXPRTOKEN_NAMETEST_QNAME: System.out.print("<NAMETEST_QNAME"); if (fTokens[++i] != -1) System.out.print(" prefix=\"" + getTokenString(fTokens[i]) + "\""); System.out.print(" localpart=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; case EXPRTOKEN_NODETYPE_COMMENT: System.out.print("<NODETYPE_COMMENT/>"); break; case EXPRTOKEN_NODETYPE_TEXT: System.out.print("<NODETYPE_TEXT/>"); break; case EXPRTOKEN_NODETYPE_PI: System.out.print("<NODETYPE_PI/>"); break; case EXPRTOKEN_NODETYPE_NODE: System.out.print("<NODETYPE_NODE/>"); break; case EXPRTOKEN_OPERATOR_AND: System.out.print("<OPERATOR_AND/>"); break; case EXPRTOKEN_OPERATOR_OR: System.out.print("<OPERATOR_OR/>"); break; case EXPRTOKEN_OPERATOR_MOD: System.out.print("<OPERATOR_MOD/>"); break; case EXPRTOKEN_OPERATOR_DIV: System.out.print("<OPERATOR_DIV/>"); break; case EXPRTOKEN_OPERATOR_MULT: System.out.print("<OPERATOR_MULT/>"); break; case EXPRTOKEN_OPERATOR_SLASH: System.out.print("<OPERATOR_SLASH/>"); if (i + 1 < fTokenCount) { System.out.println(); System.out.print(" "); } break; case EXPRTOKEN_OPERATOR_DOUBLE_SLASH: System.out.print("<OPERATOR_DOUBLE_SLASH/>"); break; case EXPRTOKEN_OPERATOR_UNION: System.out.print("<OPERATOR_UNION/>"); break; case EXPRTOKEN_OPERATOR_PLUS: System.out.print("<OPERATOR_PLUS/>"); break; case EXPRTOKEN_OPERATOR_MINUS: System.out.print("<OPERATOR_MINUS/>"); break; case EXPRTOKEN_OPERATOR_EQUAL: System.out.print("<OPERATOR_EQUAL/>"); break; case EXPRTOKEN_OPERATOR_NOT_EQUAL: System.out.print("<OPERATOR_NOT_EQUAL/>"); break; case EXPRTOKEN_OPERATOR_LESS: System.out.print("<OPERATOR_LESS/>"); break; case EXPRTOKEN_OPERATOR_LESS_EQUAL: System.out.print("<OPERATOR_LESS_EQUAL/>"); break; case EXPRTOKEN_OPERATOR_GREATER: System.out.print("<OPERATOR_GREATER/>"); break; case EXPRTOKEN_OPERATOR_GREATER_EQUAL: System.out.print("<OPERATOR_GREATER_EQUAL/>"); break; case EXPRTOKEN_FUNCTION_NAME: System.out.print("<FUNCTION_NAME"); if (fTokens[++i] != -1) System.out.print(" prefix=\"" + getTokenString(fTokens[i]) + "\""); System.out.print(" localpart=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; case EXPRTOKEN_AXISNAME_ANCESTOR: System.out.print("<AXISNAME_ANCESTOR/>"); break; case EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF: System.out.print("<AXISNAME_ANCESTOR_OR_SELF/>"); break; case EXPRTOKEN_AXISNAME_ATTRIBUTE: System.out.print("<AXISNAME_ATTRIBUTE/>"); break; case EXPRTOKEN_AXISNAME_CHILD: System.out.print("<AXISNAME_CHILD/>"); break; case EXPRTOKEN_AXISNAME_DESCENDANT: System.out.print("<AXISNAME_DESCENDANT/>"); break; case EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF: System.out.print("<AXISNAME_DESCENDANT_OR_SELF/>"); break; case EXPRTOKEN_AXISNAME_FOLLOWING: System.out.print("<AXISNAME_FOLLOWING/>"); break; case EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING: System.out.print("<AXISNAME_FOLLOWING_SIBLING/>"); break; case EXPRTOKEN_AXISNAME_NAMESPACE: System.out.print("<AXISNAME_NAMESPACE/>"); break; case EXPRTOKEN_AXISNAME_PARENT: System.out.print("<AXISNAME_PARENT/>"); break; case EXPRTOKEN_AXISNAME_PRECEDING: System.out.print("<AXISNAME_PRECEDING/>"); break; case EXPRTOKEN_AXISNAME_PRECEDING_SIBLING: System.out.print("<AXISNAME_PRECEDING_SIBLING/>"); break; case EXPRTOKEN_AXISNAME_SELF: System.out.print("<AXISNAME_SELF/>"); break; case EXPRTOKEN_LITERAL: System.out.print("<LITERAL"); System.out.print(" value=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; case EXPRTOKEN_NUMBER: System.out.print("<NUMBER"); System.out.print(" whole=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print(" part=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; case EXPRTOKEN_VARIABLE_REFERENCE: System.out.print("<VARIABLE_REFERENCE"); if (fTokens[++i] != -1) System.out.print(" prefix=\"" + getTokenString(fTokens[i]) + "\""); System.out.print(" localpart=\"" + getTokenString(fTokens[++i]) + "\""); System.out.print("/>"); break; default: System.out.println("<???/>"); } } System.out.println(); //} } } // class Tokens /** * @xerces.internal * * @author Glenn Marcy, IBM * @author Andy Clark, IBM * * @version $Id: XPath.java,v 1.3 2005/09/26 13:02:31 sunithareddy Exp $ */ private static class Scanner { /** * 7-bit ASCII subset * * 0 1 2 3 4 5 6 7 8 9 A B C D E F * 0, 0, 0, 0, 0, 0, 0, 0, 0, HT, LF, 0, 0, CR, 0, 0, // 0 * 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1 * SP, !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, // 2 * 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, =, >, ?, // 3 * @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, // 4 * P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, // 5 * `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, // 6 * p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~, DEL // 7 */ private static final byte CHARTYPE_INVALID = 0, // invalid XML character CHARTYPE_OTHER = 1, // not special - one of "#%&;?\^`{}~" or DEL CHARTYPE_WHITESPACE = 2, // one of "\t\n\r " (0x09, 0x0A, 0x0D, 0x20) CHARTYPE_EXCLAMATION = 3, // '!' (0x21) CHARTYPE_QUOTE = 4, // '\"' or '\'' (0x22 and 0x27) CHARTYPE_DOLLAR = 5, // '$' (0x24) CHARTYPE_OPEN_PAREN = 6, // '(' (0x28) CHARTYPE_CLOSE_PAREN = 7, // ')' (0x29) CHARTYPE_STAR = 8, // '*' (0x2A) CHARTYPE_PLUS = 9, // '+' (0x2B) CHARTYPE_COMMA = 10, // ',' (0x2C) CHARTYPE_MINUS = 11, // '-' (0x2D) CHARTYPE_PERIOD = 12, // '.' (0x2E) CHARTYPE_SLASH = 13, // '/' (0x2F) CHARTYPE_DIGIT = 14, // '0'-'9' (0x30 to 0x39) CHARTYPE_COLON = 15, // ':' (0x3A) CHARTYPE_LESS = 16, // '<' (0x3C) CHARTYPE_EQUAL = 17, // '=' (0x3D) CHARTYPE_GREATER = 18, // '>' (0x3E) CHARTYPE_ATSIGN = 19, // '@' (0x40) CHARTYPE_LETTER = 20, // 'A'-'Z' or 'a'-'z' (0x41 to 0x5A and 0x61 to 0x7A) CHARTYPE_OPEN_BRACKET = 21, // '[' (0x5B) CHARTYPE_CLOSE_BRACKET = 22, // ']' (0x5D) CHARTYPE_UNDERSCORE = 23, // '_' (0x5F) CHARTYPE_UNION = 24, // '|' (0x7C) CHARTYPE_NONASCII = 25; // Non-ASCII Unicode codepoint (>= 0x80) private static final byte[] fASCIICharMap = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 1, 5, 1, 1, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 1, 16, 17, 18, 1, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 1, 22, 1, 23, 1, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 24, 1, 1, 1 }; /** * Symbol literals */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -