⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpath.java

📁 java1.6众多例子参考
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                    return name.localpart;                }                case NAMESPACE: {                    if (name.prefix.length() !=0) {                        if (name.uri != null) {                            return name.prefix+":*";                        }                        return "{"+name.uri+'}'+name.prefix+":*";                    }                    return "???:*";                }                case WILDCARD: {                    return "*";                }                case NODE: {                    return "node()";                }            }            return "???";        } // toString():String        /** Returns a clone of this object. */        public Object clone() {            return new NodeTest(this);        } // clone():Object    } // class NodeTest    // xpath implementation    // NOTE: The XPath implementation classes are kept internal because    //       this implementation is just a temporary hack until a better    //       and/or more appropriate implementation can be written.    //       keeping the code in separate source files would "muddy" the    //       CVS directory when it's not needed. -Ac    /**     * List of 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 final class Tokens {        static final boolean DUMP_TOKENS = false;        /**         * [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::'         *                  | NameTest | NodeType | Operator | FunctionName         *                  | AxisName | Literal | Number | VariableReference         */        public static final int            EXPRTOKEN_OPEN_PAREN                    =   0,            EXPRTOKEN_CLOSE_PAREN                   =   1,            EXPRTOKEN_OPEN_BRACKET                  =   2,            EXPRTOKEN_CLOSE_BRACKET                 =   3,            EXPRTOKEN_PERIOD                        =   4,            EXPRTOKEN_DOUBLE_PERIOD                 =   5,            EXPRTOKEN_ATSIGN                        =   6,            EXPRTOKEN_COMMA                         =   7,            EXPRTOKEN_DOUBLE_COLON                  =   8,            //            // [37] NameTest ::= '*' | NCName ':' '*' | QName            //            // followed by symbol handle of NCName or QName            //            EXPRTOKEN_NAMETEST_ANY                  =   9,            EXPRTOKEN_NAMETEST_NAMESPACE            =  10,            EXPRTOKEN_NAMETEST_QNAME                =  11,            //            // [38] NodeType ::= 'comment' | 'text' | 'processing-instruction' | 'node'            //            EXPRTOKEN_NODETYPE_COMMENT              =  12,            EXPRTOKEN_NODETYPE_TEXT                 =  13,            EXPRTOKEN_NODETYPE_PI                   =  14,            EXPRTOKEN_NODETYPE_NODE                 =  15,            //            // [32] Operator ::= OperatorName            //                 | MultiplyOperator            //                 | '/' | '//' | '|' | '+' | '-' | '=' | '!=' | '<' | '<=' | '>' | '>='            // [33] OperatorName ::= 'and' | 'or' | 'mod' | 'div'            // [34] MultiplyOperator ::= '*'            //            EXPRTOKEN_OPERATOR_AND                  =  16,            EXPRTOKEN_OPERATOR_OR                   =  17,            EXPRTOKEN_OPERATOR_MOD                  =  18,            EXPRTOKEN_OPERATOR_DIV                  =  19,            EXPRTOKEN_OPERATOR_MULT                 =  20,            EXPRTOKEN_OPERATOR_SLASH                =  21,            EXPRTOKEN_OPERATOR_DOUBLE_SLASH         =  22,            EXPRTOKEN_OPERATOR_UNION                =  23,            EXPRTOKEN_OPERATOR_PLUS                 =  24,            EXPRTOKEN_OPERATOR_MINUS                =  25,            EXPRTOKEN_OPERATOR_EQUAL                =  26,            EXPRTOKEN_OPERATOR_NOT_EQUAL            =  27,            EXPRTOKEN_OPERATOR_LESS                 =  28,            EXPRTOKEN_OPERATOR_LESS_EQUAL           =  29,            EXPRTOKEN_OPERATOR_GREATER              =  30,            EXPRTOKEN_OPERATOR_GREATER_EQUAL        =  31,            //EXPRTOKEN_FIRST_OPERATOR                = EXPRTOKEN_OPERATOR_AND,            //EXPRTOKEN_LAST_OPERATOR                 = EXPRTOKEN_OPERATOR_GREATER_EQUAL,            //            // [35] FunctionName ::= QName - NodeType            //            // followed by symbol handle            //            EXPRTOKEN_FUNCTION_NAME                 =  32,            //            // [6] AxisName ::= 'ancestor' | 'ancestor-or-self'            //                | 'attribute'            //                | 'child'            //                | 'descendant' | 'descendant-or-self'            //                | 'following' | 'following-sibling'            //                | 'namespace'            //                | 'parent'            //                | 'preceding' | 'preceding-sibling'            //                | 'self'            //            EXPRTOKEN_AXISNAME_ANCESTOR             =  33,            EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF     =  34,            EXPRTOKEN_AXISNAME_ATTRIBUTE            =  35,            EXPRTOKEN_AXISNAME_CHILD                =  36,            EXPRTOKEN_AXISNAME_DESCENDANT           =  37,            EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF   =  38,            EXPRTOKEN_AXISNAME_FOLLOWING            =  39,            EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING    =  40,            EXPRTOKEN_AXISNAME_NAMESPACE            =  41,            EXPRTOKEN_AXISNAME_PARENT               =  42,            EXPRTOKEN_AXISNAME_PRECEDING            =  43,            EXPRTOKEN_AXISNAME_PRECEDING_SIBLING    =  44,            EXPRTOKEN_AXISNAME_SELF                 =  45,            //            // [29] Literal ::= '"' [^"]* '"' | "'" [^']* "'"            //            // followed by symbol handle for literal            //            EXPRTOKEN_LITERAL                       =  46,            //            // [30] Number ::= Digits ('.' Digits?)? | '.' Digits            // [31] Digits ::= [0-9]+            //            // followed by number handle            //            EXPRTOKEN_NUMBER                        =  47,            //            // [36] VariableReference ::= '$' QName            //            // followed by symbol handle for QName            //            EXPRTOKEN_VARIABLE_REFERENCE            =  48;        private static final String[] fgTokenNames = {            "EXPRTOKEN_OPEN_PAREN",            "EXPRTOKEN_CLOSE_PAREN",            "EXPRTOKEN_OPEN_BRACKET",            "EXPRTOKEN_CLOSE_BRACKET",            "EXPRTOKEN_PERIOD",            "EXPRTOKEN_DOUBLE_PERIOD",            "EXPRTOKEN_ATSIGN",            "EXPRTOKEN_COMMA",            "EXPRTOKEN_DOUBLE_COLON",            "EXPRTOKEN_NAMETEST_ANY",            "EXPRTOKEN_NAMETEST_NAMESPACE",            "EXPRTOKEN_NAMETEST_QNAME",            "EXPRTOKEN_NODETYPE_COMMENT",            "EXPRTOKEN_NODETYPE_TEXT",            "EXPRTOKEN_NODETYPE_PI",            "EXPRTOKEN_NODETYPE_NODE",            "EXPRTOKEN_OPERATOR_AND",            "EXPRTOKEN_OPERATOR_OR",            "EXPRTOKEN_OPERATOR_MOD",            "EXPRTOKEN_OPERATOR_DIV",            "EXPRTOKEN_OPERATOR_MULT",            "EXPRTOKEN_OPERATOR_SLASH",            "EXPRTOKEN_OPERATOR_DOUBLE_SLASH",            "EXPRTOKEN_OPERATOR_UNION",            "EXPRTOKEN_OPERATOR_PLUS",            "EXPRTOKEN_OPERATOR_MINUS",            "EXPRTOKEN_OPERATOR_EQUAL",            "EXPRTOKEN_OPERATOR_NOT_EQUAL",            "EXPRTOKEN_OPERATOR_LESS",            "EXPRTOKEN_OPERATOR_LESS_EQUAL",            "EXPRTOKEN_OPERATOR_GREATER",            "EXPRTOKEN_OPERATOR_GREATER_EQUAL",            "EXPRTOKEN_FUNCTION_NAME",            "EXPRTOKEN_AXISNAME_ANCESTOR",            "EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF",            "EXPRTOKEN_AXISNAME_ATTRIBUTE",            "EXPRTOKEN_AXISNAME_CHILD",            "EXPRTOKEN_AXISNAME_DESCENDANT",            "EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF",            "EXPRTOKEN_AXISNAME_FOLLOWING",            "EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING",            "EXPRTOKEN_AXISNAME_NAMESPACE",            "EXPRTOKEN_AXISNAME_PARENT",            "EXPRTOKEN_AXISNAME_PRECEDING",            "EXPRTOKEN_AXISNAME_PRECEDING_SIBLING",            "EXPRTOKEN_AXISNAME_SELF",            "EXPRTOKEN_LITERAL",            "EXPRTOKEN_NUMBER",            "EXPRTOKEN_VARIABLE_REFERENCE"        };        /**         *         */        private static final int INITIAL_TOKEN_COUNT = 1 << 8;        private int[] fTokens = new int[INITIAL_TOKEN_COUNT];        private int fTokenCount = 0;    // for writing        private SymbolTable fSymbolTable;        // REVISIT: Code something better here. -Ac        private java.util.Hashtable fSymbolMapping = new java.util.Hashtable();        // REVISIT: Code something better here. -Ac        private java.util.Hashtable fTokenNames = new java.util.Hashtable();        /**         * Current position in the token list.          */        private int fCurrentTokenIndex;                //        // Constructors        //        public Tokens(SymbolTable symbolTable) {            fSymbolTable = symbolTable;            final String[] symbols = {                "ancestor",     "ancestor-or-self",     "attribute",                "child",        "descendant",           "descendant-or-self",                "following",    "following-sibling",    "namespace",                "parent",       "preceding",            "preceding-sibling",                "self",            };            for (int i = 0; i < symbols.length; i++) {                fSymbolMapping.put(fSymbolTable.addSymbol(symbols[i]), new Integer(i));            }            fTokenNames.put(new Integer(EXPRTOKEN_OPEN_PAREN), "EXPRTOKEN_OPEN_PAREN");            fTokenNames.put(new Integer(EXPRTOKEN_CLOSE_PAREN), "EXPRTOKEN_CLOSE_PAREN");            fTokenNames.put(new Integer(EXPRTOKEN_OPEN_BRACKET), "EXPRTOKEN_OPEN_BRACKET");            fTokenNames.put(new Integer(EXPRTOKEN_CLOSE_BRACKET), "EXPRTOKEN_CLOSE_BRACKET");            fTokenNames.put(new Integer(EXPRTOKEN_PERIOD), "EXPRTOKEN_PERIOD");            fTokenNames.put(new Integer(EXPRTOKEN_DOUBLE_PERIOD), "EXPRTOKEN_DOUBLE_PERIOD");            fTokenNames.put(new Integer(EXPRTOKEN_ATSIGN), "EXPRTOKEN_ATSIGN");            fTokenNames.put(new Integer(EXPRTOKEN_COMMA), "EXPRTOKEN_COMMA");            fTokenNames.put(new Integer(EXPRTOKEN_DOUBLE_COLON), "EXPRTOKEN_DOUBLE_COLON");            fTokenNames.put(new Integer(EXPRTOKEN_NAMETEST_ANY), "EXPRTOKEN_NAMETEST_ANY");            fTokenNames.put(new Integer(EXPRTOKEN_NAMETEST_NAMESPACE), "EXPRTOKEN_NAMETEST_NAMESPACE");            fTokenNames.put(new Integer(EXPRTOKEN_NAMETEST_QNAME), "EXPRTOKEN_NAMETEST_QNAME");            fTokenNames.put(new Integer(EXPRTOKEN_NODETYPE_COMMENT), "EXPRTOKEN_NODETYPE_COMMENT");            fTokenNames.put(new Integer(EXPRTOKEN_NODETYPE_TEXT), "EXPRTOKEN_NODETYPE_TEXT");            fTokenNames.put(new Integer(EXPRTOKEN_NODETYPE_PI), "EXPRTOKEN_NODETYPE_PI");            fTokenNames.put(new Integer(EXPRTOKEN_NODETYPE_NODE), "EXPRTOKEN_NODETYPE_NODE");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_AND), "EXPRTOKEN_OPERATOR_AND");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_OR), "EXPRTOKEN_OPERATOR_OR");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_MOD), "EXPRTOKEN_OPERATOR_MOD");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_DIV), "EXPRTOKEN_OPERATOR_DIV");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_MULT), "EXPRTOKEN_OPERATOR_MULT");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_SLASH), "EXPRTOKEN_OPERATOR_SLASH");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_DOUBLE_SLASH), "EXPRTOKEN_OPERATOR_DOUBLE_SLASH");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_UNION), "EXPRTOKEN_OPERATOR_UNION");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_PLUS), "EXPRTOKEN_OPERATOR_PLUS");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_MINUS), "EXPRTOKEN_OPERATOR_MINUS");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_EQUAL), "EXPRTOKEN_OPERATOR_EQUAL");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_NOT_EQUAL), "EXPRTOKEN_OPERATOR_NOT_EQUAL");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_LESS), "EXPRTOKEN_OPERATOR_LESS");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_LESS_EQUAL), "EXPRTOKEN_OPERATOR_LESS_EQUAL");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_GREATER), "EXPRTOKEN_OPERATOR_GREATER");            fTokenNames.put(new Integer(EXPRTOKEN_OPERATOR_GREATER_EQUAL), "EXPRTOKEN_OPERATOR_GREATER_EQUAL");            fTokenNames.put(new Integer(EXPRTOKEN_FUNCTION_NAME), "EXPRTOKEN_FUNCTION_NAME");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_ANCESTOR), "EXPRTOKEN_AXISNAME_ANCESTOR");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF), "EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_ATTRIBUTE), "EXPRTOKEN_AXISNAME_ATTRIBUTE");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_CHILD), "EXPRTOKEN_AXISNAME_CHILD");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_DESCENDANT), "EXPRTOKEN_AXISNAME_DESCENDANT");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF), "EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_FOLLOWING), "EXPRTOKEN_AXISNAME_FOLLOWING");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING), "EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_NAMESPACE), "EXPRTOKEN_AXISNAME_NAMESPACE");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_PARENT), "EXPRTOKEN_AXISNAME_PARENT");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_PRECEDING), "EXPRTOKEN_AXISNAME_PRECEDING");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_PRECEDING_SIBLING), "EXPRTOKEN_AXISNAME_PRECEDING_SIBLING");            fTokenNames.put(new Integer(EXPRTOKEN_AXISNAME_SELF), "EXPRTOKEN_AXISNAME_SELF");            fTokenNames.put(new Integer(EXPRTOKEN_LITERAL), "EXPRTOKEN_LITERAL");            fTokenNames.put(new Integer(EXPRTOKEN_NUMBER), "EXPRTOKEN_NUMBER");            fTokenNames.put(new Integer(EXPRTOKEN_VARIABLE_REFERENCE), "EXPRTOKEN_VARIABLE_REFERENCE");        }        //        // Public methods        ////        public String getTokenName(int token) {//            if (token < 0 || token >= fgTokenNames.length)//                return null;//            return fgTokenNames[token];//        }//        public String getTokenString(int token) {            return (String)fTokenNames.get(new Integer(token));        }        public void addToken(String tokenStr) {            Integer tokenInt = (Integer)fTokenNames.get(tokenStr);            if (tokenInt == null) {                tokenInt = new Integer(fTokenNames.size());                fTokenNames.put(tokenInt, tokenStr);            }            addToken(tokenInt.intValue());        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -