Search in sources :

Example 16 with XString

use of org.apache.xpath.objects.XString 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 17 with XString

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

the class FuncSubstring 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 {
    XMLString s1 = m_arg0.execute(xctxt).xstr();
    double start = m_arg1.execute(xctxt).num();
    int lenOfS1 = s1.length();
    XMLString substr;
    if (lenOfS1 <= 0)
        return XString.EMPTYSTRING;
    else {
        int startIndex;
        if (Double.isNaN(start)) {
            // Double.MIN_VALUE doesn't work with math below 
            // so just use a big number and hope I never get caught.
            start = -1000000;
            startIndex = 0;
        } else {
            start = Math.round(start);
            startIndex = (start > 0) ? (int) start - 1 : 0;
        }
        if (null != m_arg2) {
            double len = m_arg2.num(xctxt);
            int end = (int) (Math.round(len) + start) - 1;
            // Normalize end index.
            if (end < 0)
                end = 0;
            else if (end > lenOfS1)
                end = lenOfS1;
            if (startIndex > lenOfS1)
                startIndex = lenOfS1;
            substr = s1.substring(startIndex, end);
        } else {
            if (startIndex > lenOfS1)
                startIndex = lenOfS1;
            substr = s1.substring(startIndex);
        }
    }
    // cast semi-safe
    return (XString) substr;
}
Also used : XString(org.apache.xpath.objects.XString) XMLString(org.apache.xml.utils.XMLString)

Example 18 with XString

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

the class FuncSubstringBefore 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 s1 = m_arg0.execute(xctxt).str();
    String s2 = m_arg1.execute(xctxt).str();
    int index = s1.indexOf(s2);
    return (-1 == index) ? XString.EMPTYSTRING : new XString(s1.substring(0, index));
}
Also used : XString(org.apache.xpath.objects.XString) XString(org.apache.xpath.objects.XString)

Example 19 with XString

use of org.apache.xpath.objects.XString 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 20 with XString

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

the class FuncUnparsedEntityURI 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 name = m_arg0.execute(xctxt).str();
    int context = xctxt.getCurrentNode();
    DTM dtm = xctxt.getDTM(context);
    int doc = dtm.getDocument();
    String uri = dtm.getUnparsedEntityURI(name);
    return new XString(uri);
}
Also used : XString(org.apache.xpath.objects.XString) XString(org.apache.xpath.objects.XString) DTM(org.apache.xml.dtm.DTM)

Aggregations

XString (org.apache.xpath.objects.XString)20 DTM (org.apache.xml.dtm.DTM)10 XObject (org.apache.xpath.objects.XObject)6 Properties (java.util.Properties)2 TransformerException (javax.xml.transform.TransformerException)2 QName (org.apache.xml.utils.QName)2 XMLString (org.apache.xml.utils.XMLString)2 Expression (org.apache.xpath.Expression)2 XPathContext (org.apache.xpath.XPathContext)2 WrongNumberArgsException (org.apache.xpath.functions.WrongNumberArgsException)2