Search in sources :

Example 1 with StringVector

use of org.apache.xml.utils.StringVector in project robovm by robovm.

the class XSLTAttributeDef method processPREFIX_LIST.

/**
    * Process an attribute string of type T_PREFIXLIST into
    * a vector of prefixes that may be resolved to URLs.
    *
    * @param handler non-null reference to current StylesheetHandler that is constructing the Templates.
    * @param uri The Namespace URI, or an empty string.
    * @param name The local name (without prefix), or empty string if not namespace processing.
    * @param rawName The qualified name (with prefix).
    * @param value A list of whitespace delimited prefixes.
    *
    * @return A vector of strings that may be resolved to URLs.
    *
    * @throws org.xml.sax.SAXException if one of the prefixes can not be resolved.
    */
StringVector processPREFIX_LIST(StylesheetHandler handler, String uri, String name, String rawName, String value) throws org.xml.sax.SAXException {
    StringTokenizer tokenizer = new StringTokenizer(value, " \t\n\r\f");
    int nStrings = tokenizer.countTokens();
    StringVector strings = new StringVector(nStrings);
    for (int i = 0; i < nStrings; i++) {
        String prefix = tokenizer.nextToken();
        String url = handler.getNamespaceForPrefix(prefix);
        if (prefix.equals(Constants.ATTRVAL_DEFAULT_PREFIX) || url != null)
            strings.addElement(prefix);
        else
            throw new org.xml.sax.SAXException(XSLMessages.createMessage(XSLTErrorResources.ER_CANT_RESOLVE_NSPREFIX, new Object[] { prefix }));
    }
    return strings;
}
Also used : StringTokenizer(java.util.StringTokenizer) StringVector(org.apache.xml.utils.StringVector)

Example 2 with StringVector

use of org.apache.xml.utils.StringVector in project robovm by robovm.

the class FuncId 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 = xctxt.getCurrentNode();
    DTM dtm = xctxt.getDTM(context);
    int docContext = dtm.getDocument();
    if (DTM.NULL == docContext)
        error(xctxt, XPATHErrorResources.ER_CONTEXT_HAS_NO_OWNERDOC, null);
    XObject arg = m_arg0.execute(xctxt);
    int argType = arg.getType();
    XNodeSet nodes = new XNodeSet(xctxt.getDTMManager());
    NodeSetDTM nodeSet = nodes.mutableNodeset();
    if (XObject.CLASS_NODESET == argType) {
        DTMIterator ni = arg.iter();
        StringVector usedrefs = null;
        int pos = ni.nextNode();
        while (DTM.NULL != pos) {
            DTM ndtm = ni.getDTM(pos);
            String refval = ndtm.getStringValue(pos).toString();
            pos = ni.nextNode();
            usedrefs = getNodesByID(xctxt, docContext, refval, usedrefs, nodeSet, DTM.NULL != pos);
        }
    // ni.detach();
    } else if (XObject.CLASS_NULL == argType) {
        return nodes;
    } else {
        String refval = arg.str();
        getNodesByID(xctxt, docContext, refval, null, nodeSet, false);
    }
    return nodes;
}
Also used : NodeSetDTM(org.apache.xpath.NodeSetDTM) StringVector(org.apache.xml.utils.StringVector) NodeSetDTM(org.apache.xpath.NodeSetDTM) DTM(org.apache.xml.dtm.DTM) XObject(org.apache.xpath.objects.XObject) XNodeSet(org.apache.xpath.objects.XNodeSet) DTMIterator(org.apache.xml.dtm.DTMIterator)

Example 3 with StringVector

use of org.apache.xml.utils.StringVector in project robovm by robovm.

the class FuncId method getNodesByID.

/**
   * Fill in a list with nodes that match a space delimited list if ID 
   * ID references.
   *
   * @param xctxt The runtime XPath context.
   * @param docContext The document where the nodes are being looked for.
   * @param refval A space delimited list of ID references.
   * @param usedrefs List of references for which nodes were found.
   * @param nodeSet Node set where the nodes will be added to.
   * @param mayBeMore true if there is another set of nodes to be looked for.
   *
   * @return The usedrefs value.
   */
private StringVector getNodesByID(XPathContext xctxt, int docContext, String refval, StringVector usedrefs, NodeSetDTM nodeSet, boolean mayBeMore) {
    if (null != refval) {
        String ref = null;
        //      DOMHelper dh = xctxt.getDOMHelper();
        StringTokenizer tokenizer = new StringTokenizer(refval);
        boolean hasMore = tokenizer.hasMoreTokens();
        DTM dtm = xctxt.getDTM(docContext);
        while (hasMore) {
            ref = tokenizer.nextToken();
            hasMore = tokenizer.hasMoreTokens();
            if ((null != usedrefs) && usedrefs.contains(ref)) {
                ref = null;
                continue;
            }
            int node = dtm.getElementById(ref);
            if (DTM.NULL != node)
                nodeSet.addNodeInDocOrder(node, xctxt);
            if ((null != ref) && (hasMore || mayBeMore)) {
                if (null == usedrefs)
                    usedrefs = new StringVector();
                usedrefs.addElement(ref);
            }
        }
    }
    return usedrefs;
}
Also used : StringTokenizer(java.util.StringTokenizer) StringVector(org.apache.xml.utils.StringVector) NodeSetDTM(org.apache.xpath.NodeSetDTM) DTM(org.apache.xml.dtm.DTM)

Example 4 with StringVector

use of org.apache.xml.utils.StringVector in project j2objc by google.

the class XSLTAttributeDef method processSTRINGLIST.

/**
   * Process an attribute string of type T_STRINGLIST into
   * a vector of XPath match patterns.
   *
   * @param handler non-null reference to current StylesheetHandler that is constructing the Templates.
   * @param uri The Namespace URI, or an empty string.
   * @param name The local name (without prefix), or empty string if not namespace processing.
   * @param rawName The qualified name (with prefix).
   * @param value a whitespace delimited list of string values.
   *
   * @return A StringVector of the tokenized strings.
   */
StringVector processSTRINGLIST(StylesheetHandler handler, String uri, String name, String rawName, String value) {
    StringTokenizer tokenizer = new StringTokenizer(value, " \t\n\r\f");
    int nStrings = tokenizer.countTokens();
    StringVector strings = new StringVector(nStrings);
    for (int i = 0; i < nStrings; i++) {
        strings.addElement(tokenizer.nextToken());
    }
    return strings;
}
Also used : StringTokenizer(java.util.StringTokenizer) StringVector(org.apache.xml.utils.StringVector)

Example 5 with StringVector

use of org.apache.xml.utils.StringVector in project j2objc by google.

the class XSLTAttributeDef method processPREFIX_LIST.

/**
    * Process an attribute string of type T_PREFIXLIST into
    * a vector of prefixes that may be resolved to URLs.
    *
    * @param handler non-null reference to current StylesheetHandler that is constructing the Templates.
    * @param uri The Namespace URI, or an empty string.
    * @param name The local name (without prefix), or empty string if not namespace processing.
    * @param rawName The qualified name (with prefix).
    * @param value A list of whitespace delimited prefixes.
    *
    * @return A vector of strings that may be resolved to URLs.
    *
    * @throws org.xml.sax.SAXException if one of the prefixes can not be resolved.
    */
StringVector processPREFIX_LIST(StylesheetHandler handler, String uri, String name, String rawName, String value) throws org.xml.sax.SAXException {
    StringTokenizer tokenizer = new StringTokenizer(value, " \t\n\r\f");
    int nStrings = tokenizer.countTokens();
    StringVector strings = new StringVector(nStrings);
    for (int i = 0; i < nStrings; i++) {
        String prefix = tokenizer.nextToken();
        String url = handler.getNamespaceForPrefix(prefix);
        if (prefix.equals(Constants.ATTRVAL_DEFAULT_PREFIX) || url != null)
            strings.addElement(prefix);
        else
            throw new org.xml.sax.SAXException(XSLMessages.createMessage(XSLTErrorResources.ER_CANT_RESOLVE_NSPREFIX, new Object[] { prefix }));
    }
    return strings;
}
Also used : StringTokenizer(java.util.StringTokenizer) StringVector(org.apache.xml.utils.StringVector)

Aggregations

StringVector (org.apache.xml.utils.StringVector)10 StringTokenizer (java.util.StringTokenizer)8 DTM (org.apache.xml.dtm.DTM)4 NodeSetDTM (org.apache.xpath.NodeSetDTM)4 DTMIterator (org.apache.xml.dtm.DTMIterator)2 XNodeSet (org.apache.xpath.objects.XNodeSet)2 XObject (org.apache.xpath.objects.XObject)2