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

📄 xpathfunctioncontext.java

📁 XML的解析、编译、查询等技术的JAVA源代码。
💻 JAVA
字号:
/* * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/XPathFunctionContext.java,v 1.29 2006/11/08 13:59:38 elharo Exp $ * $Revision: 1.29 $ * $Date: 2006/11/08 13:59:38 $ * * ==================================================================== * * Copyright 2000-2002 bob mcwhirter & James Strachan. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: *  *   * Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. *  *   * 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. *  *   * Neither the name of the Jaxen Project nor the names of its *     contributors may be used to endorse or promote products derived  *     from this software without specific prior written permission. *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS 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 COPYRIGHT OWNER * OR 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 Jaxen Project and was originally  * created by bob mcwhirter <bob@werken.com> and  * James Strachan <jstrachan@apache.org>.  For more information on the  * Jaxen Project, please see <http://www.jaxen.org/>. *  * $Id: XPathFunctionContext.java,v 1.29 2006/11/08 13:59:38 elharo Exp $ */package org.jaxen;import org.jaxen.function.BooleanFunction;import org.jaxen.function.CeilingFunction;import org.jaxen.function.ConcatFunction;import org.jaxen.function.ContainsFunction;import org.jaxen.function.CountFunction;import org.jaxen.function.FalseFunction;import org.jaxen.function.FloorFunction;import org.jaxen.function.IdFunction;import org.jaxen.function.LangFunction;import org.jaxen.function.LastFunction;import org.jaxen.function.LocalNameFunction;import org.jaxen.function.NameFunction;import org.jaxen.function.NamespaceUriFunction;import org.jaxen.function.NormalizeSpaceFunction;import org.jaxen.function.NotFunction;import org.jaxen.function.NumberFunction;import org.jaxen.function.PositionFunction;import org.jaxen.function.RoundFunction;import org.jaxen.function.StartsWithFunction;import org.jaxen.function.StringFunction;import org.jaxen.function.StringLengthFunction;import org.jaxen.function.SubstringAfterFunction;import org.jaxen.function.SubstringBeforeFunction;import org.jaxen.function.SubstringFunction;import org.jaxen.function.SumFunction;import org.jaxen.function.TranslateFunction;import org.jaxen.function.TrueFunction;import org.jaxen.function.ext.EndsWithFunction;import org.jaxen.function.ext.EvaluateFunction;import org.jaxen.function.ext.LowerFunction;import org.jaxen.function.ext.UpperFunction;import org.jaxen.function.xslt.DocumentFunction;/** A <code>FunctionContext</code> implementing the core XPath *  function library, plus Jaxen extensions. * *  <p> *  The core XPath function library is provided through this *  implementation of <code>FunctionContext</code>.  Additionally, *  extension functions have been provided, as enumerated below. *  </p> * *  <p> *  This class is re-entrant and thread-safe.  If using the *  default instance, it is inadvisable to call  *  {@link #registerFunction(String, String, Function)} *  as that will extend the global function context, affecting other *  users.  *  </p> * *  <p> *  Extension functions: *  </p> * *  <ul> *     <li>evaluate(..)</li> *     <li>upper-case(..)</li> *     <li>lower-case(..)</li> *     <li>ends-with(..)</li> *  </ul> * *  @see FunctionContext *  @see org.jaxen.function *  @see org.jaxen.function.xslt *  @see org.jaxen.function.ext * *  @author <a href="mailto:bob@werken.com">bob mcwhirter</a> */public class XPathFunctionContext extends SimpleFunctionContext{    private static XPathFunctionContext instance = new XPathFunctionContext();    /** Retrieve the default function context     *     *  @return the default function context     */    public static FunctionContext getInstance()    {        return instance;    }    /** Create a new XPath function context.     *  All core XPath and Jaxen extension functions are registered.     */    public XPathFunctionContext()    {        this(true);    }    /** Create a new XPath function context.     *  All core XPath functions are registered.     *       * @param includeExtensionFunctions if true extension functions are included;     *     if false, they aren't     */    public XPathFunctionContext(boolean includeExtensionFunctions)    {        registerXPathFunctions();        if (includeExtensionFunctions) {            registerXSLTFunctions();            registerExtensionFunctions();        }    }    private void registerXPathFunctions() {        registerFunction( null,  // namespace URI                          "boolean",                          new BooleanFunction() );        registerFunction( null,  // namespace URI                          "ceiling",                          new CeilingFunction() );        registerFunction( null,  // namespace URI                          "concat",                          new ConcatFunction() );        registerFunction( null,  // namespace URI                          "contains",                          new ContainsFunction() );                registerFunction( null,  // namespace URI                          "count",                          new CountFunction() );        registerFunction( null,  // namespace URI                          "false",                          new FalseFunction() );        registerFunction( null,  // namespace URI                          "floor",                          new FloorFunction() );        registerFunction( null,  // namespace URI                          "id",                          new IdFunction() );        registerFunction( null,  // namespace URI                          "lang",                          new LangFunction() );        registerFunction( null,  // namespace URI                          "last",                          new LastFunction() );        registerFunction( null,  // namespace URI                          "local-name",                          new LocalNameFunction() );        registerFunction( null,  // namespace URI                          "name",                          new NameFunction() );        registerFunction( null,  // namespace URI                          "namespace-uri",                          new NamespaceUriFunction() );        registerFunction( null,  // namespace URI                          "normalize-space",                          new NormalizeSpaceFunction() );        registerFunction( null,  // namespace URI                          "not",                          new NotFunction() );        registerFunction( null,  // namespace URI                          "number",                          new NumberFunction() );        registerFunction( null,  // namespace URI                          "position",                          new PositionFunction() );        registerFunction( null,  // namespace URI                          "round",                          new RoundFunction() );        registerFunction( null,  // namespace URI                          "starts-with",                          new StartsWithFunction() );        registerFunction( null,  // namespace URI                          "string",                          new StringFunction() );        registerFunction( null,  // namespace URI                          "string-length",                          new StringLengthFunction() );        registerFunction( null,  // namespace URI                          "substring-after",                          new SubstringAfterFunction() );        registerFunction( null,  // namespace URI                          "substring-before",                          new SubstringBeforeFunction() );        registerFunction( null,  // namespace URI                          "substring",                          new SubstringFunction() );        registerFunction( null,  // namespace URI                          "sum",                          new SumFunction() );        registerFunction( null,  // namespace URI                          "true",                          new TrueFunction() );                registerFunction( null,  // namespace URI                          "translate",                          new TranslateFunction() );    }    private void registerXSLTFunctions() {        // extension functions defined in XSLT        registerFunction( null,  // namespace URI                          "document",                          new DocumentFunction() );    }    private void registerExtensionFunctions() {        // extension functions should go into a namespace, but which one?        // for now, keep them in default namespace to not break any code        registerFunction( null,  // namespace URI                          "evaluate",                          new EvaluateFunction() );                registerFunction( null,  // namespace URI                          "lower-case",                          new LowerFunction() );                registerFunction( null,  // namespace URI                          "upper-case",                          new UpperFunction() );                registerFunction( null,  // namespace URI                          "ends-with",                          new EndsWithFunction() );    }    }

⌨️ 快捷键说明

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