Search in sources :

Example 96 with XObject

use of org.apache.xpath.objects.XObject in project robovm by robovm.

the class StepPattern method execute.

/**
   * Execute an expression in the XPath runtime context, and return the
   * result of the expression.
   *
   *
   * @param xctxt The XPath runtime context.
   * @param currentNode The currentNode.
   * @param dtm The DTM of the current node.
   * @param expType The expanded type ID of the current node.
   *
   * @return The result of the expression in the form of a <code>XObject</code>.
   *
   * @throws javax.xml.transform.TransformerException if a runtime exception
   *         occurs.
   */
public XObject execute(XPathContext xctxt, int currentNode, DTM dtm, int expType) throws javax.xml.transform.TransformerException {
    if (m_whatToShow == NodeTest.SHOW_BYFUNCTION) {
        if (null != m_relativePathPattern) {
            return m_relativePathPattern.execute(xctxt);
        } else
            return NodeTest.SCORE_NONE;
    }
    XObject score;
    score = super.execute(xctxt, currentNode, dtm, expType);
    if (score == NodeTest.SCORE_NONE)
        return NodeTest.SCORE_NONE;
    if (getPredicateCount() != 0) {
        if (!executePredicates(xctxt, dtm, currentNode))
            return NodeTest.SCORE_NONE;
    }
    if (null != m_relativePathPattern)
        return m_relativePathPattern.executeRelativePathPattern(xctxt, dtm, currentNode);
    return score;
}
Also used : XObject(org.apache.xpath.objects.XObject)

Example 97 with XObject

use of org.apache.xpath.objects.XObject in project robovm by robovm.

the class FuncQname method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    int context = getArg0AsNode(xctxt);
    XObject val;
    if (DTM.NULL != context) {
        DTM dtm = xctxt.getDTM(context);
        String qname = dtm.getNodeNameX(context);
        val = (null == qname) ? XString.EMPTYSTRING : new XString(qname);
    } else {
        val = XString.EMPTYSTRING;
    }
    return val;
}
Also used : XString(org.apache.xpath.objects.XString) XString(org.apache.xpath.objects.XString) DTM(org.apache.xml.dtm.DTM) XObject(org.apache.xpath.objects.XObject)

Example 98 with XObject

use of org.apache.xpath.objects.XObject in project robovm by robovm.

the class FuncRound method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    final XObject obj = m_arg0.execute(xctxt);
    final double val = obj.num();
    if (val >= -0.5 && val < 0)
        return new XNumber(-0.0);
    if (val == 0.0)
        return new XNumber(val);
    return new XNumber(java.lang.Math.floor(val + 0.5));
}
Also used : XNumber(org.apache.xpath.objects.XNumber) XObject(org.apache.xpath.objects.XObject)

Example 99 with XObject

use of org.apache.xpath.objects.XObject in project robovm by robovm.

the class FuncSystemProperty method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':');
    String result;
    String propName = "";
    // List of properties where the name of the
    // property argument is to be looked for.
    Properties xsltInfo = new Properties();
    loadPropertyFile(XSLT_PROPERTIES, xsltInfo);
    if (indexOfNSSep > 0) {
        String prefix = (indexOfNSSep >= 0) ? fullName.substring(0, indexOfNSSep) : "";
        String namespace;
        namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
        propName = (indexOfNSSep < 0) ? fullName : fullName.substring(indexOfNSSep + 1);
        if (namespace.startsWith("http://www.w3.org/XSL/Transform") || namespace.equals("http://www.w3.org/1999/XSL/Transform")) {
            result = xsltInfo.getProperty(propName);
            if (null == result) {
                warn(xctxt, XPATHErrorResources.WG_PROPERTY_NOT_SUPPORTED, //"XSL Property not supported: "+fullName);
                new Object[] { fullName });
                return XString.EMPTYSTRING;
            }
        } else {
            warn(xctxt, XPATHErrorResources.WG_DONT_DO_ANYTHING_WITH_NS, new Object[] { namespace, //"Don't currently do anything with namespace "+namespace+" in property: "+fullName);
            fullName });
            try {
                result = System.getProperty(propName);
                if (null == result) {
                    // result = System.getenv(propName);
                    return XString.EMPTYSTRING;
                }
            } catch (SecurityException se) {
                warn(xctxt, XPATHErrorResources.WG_SECURITY_EXCEPTION, //"SecurityException when trying to access XSL system property: "+fullName);
                new Object[] { fullName });
                return XString.EMPTYSTRING;
            }
        }
    } else {
        try {
            result = System.getProperty(fullName);
            if (null == result) {
                // result = System.getenv(fullName);
                return XString.EMPTYSTRING;
            }
        } catch (SecurityException se) {
            warn(xctxt, XPATHErrorResources.WG_SECURITY_EXCEPTION, //"SecurityException when trying to access XSL system property: "+fullName);
            new Object[] { fullName });
            return XString.EMPTYSTRING;
        }
    }
    if (propName.equals("version") && result.length() > 0) {
        try {
            // Needs to return the version number of the spec we conform to.
            return new XString("1.0");
        } catch (Exception ex) {
            return new XString(result);
        }
    } else
        return new XString(result);
}
Also used : XString(org.apache.xpath.objects.XString) XObject(org.apache.xpath.objects.XObject) XString(org.apache.xpath.objects.XString) Properties(java.util.Properties)

Example 100 with XObject

use of org.apache.xpath.objects.XObject in project robovm by robovm.

the class FuncExtFunction method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    if (xctxt.isSecureProcessing())
        throw new javax.xml.transform.TransformerException(XPATHMessages.createXPATHMessage(XPATHErrorResources.ER_EXTENSION_FUNCTION_CANNOT_BE_INVOKED, new Object[] { toString() }));
    XObject result;
    Vector argVec = new Vector();
    int nArgs = m_argVec.size();
    for (int i = 0; i < nArgs; i++) {
        Expression arg = (Expression) m_argVec.elementAt(i);
        XObject xobj = arg.execute(xctxt);
        /*
       * Should cache the arguments for func:function
       */
        xobj.allowDetachToRelease(false);
        argVec.addElement(xobj);
    }
    //dml
    ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
    Object val = extProvider.extFunction(this, argVec);
    if (null != val) {
        result = XObject.create(val, xctxt);
    } else {
        result = new XNull();
    }
    return result;
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) XNull(org.apache.xpath.objects.XNull) Expression(org.apache.xpath.Expression) XObject(org.apache.xpath.objects.XObject) Vector(java.util.Vector) XObject(org.apache.xpath.objects.XObject)

Aggregations

XObject (org.apache.xpath.objects.XObject)102 TransformerException (javax.xml.transform.TransformerException)24 DTM (org.apache.xml.dtm.DTM)24 XPathContext (org.apache.xpath.XPathContext)24 XNodeSet (org.apache.xpath.objects.XNodeSet)14 DTMIterator (org.apache.xml.dtm.DTMIterator)12 VariableStack (org.apache.xpath.VariableStack)10 Vector (java.util.Vector)8 QName (org.apache.xml.utils.QName)8 Expression (org.apache.xpath.Expression)8 Node (org.w3c.dom.Node)7 DTMAxisTraverser (org.apache.xml.dtm.DTMAxisTraverser)6 XMLString (org.apache.xml.utils.XMLString)6 org.apache.xpath (org.apache.xpath)6 XString (org.apache.xpath.objects.XString)6 ArrayList (java.util.ArrayList)4 Hashtable (java.util.Hashtable)4 QName (javax.xml.namespace.QName)4 XPathFunction (javax.xml.xpath.XPathFunction)4 XPathFunctionException (javax.xml.xpath.XPathFunctionException)4