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;
}
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;
}
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;
}
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;
}
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;
}
Aggregations