void writeformattedItem(XdmItem item, ProcessContext context, OutputStream out) throws TransformerFactoryConfigurationError, TransformerException, IOException { if (item.isAtomicValue()) { out.write(item.getStringValue().getBytes(UTF8)); } else { // item is an XdmNode XdmNode node = (XdmNode) item; switch (node.getNodeKind()) { case DOCUMENT: case ELEMENT: Transformer transformer = TransformerFactory.newInstance().newTransformer(); final Properties props = getTransformerProperties(context); transformer.setOutputProperties(props); transformer.transform(node.asSource(), new StreamResult(out)); break; default: out.write(node.getStringValue().getBytes(UTF8)); } } }
@Override protected String makeResult(List<XdmItem> list) { return list.get(0).getStringValue(); } };
/** * Obtain a predicate that tests whether the result of applying the XPath string() function to an item * is equal to a given string * * @param value the string being tested * @return a Predicate which returns true if the string value of the item being tested * is equal to the given string under Java comparison rules for comparing strings. */ public static Predicate<XdmItem> eq(String value) { return item -> item.getStringValue().equals(value); }
@Override protected String makeResult(List<XdmItem> list) { return list.get(0).getStringValue(); } };
/** * Obtain a predicate that tests whether the result of applying the XPath string() function to an item * is equal to a given string * * @param value the string being tested * @return a Predicate which returns true if the string value of the item being tested * is equal to the given string under Java comparison rules for comparing strings. */ public static Predicate<XdmItem> eq(String value) { return item -> item.getStringValue().equals(value); }
private String getItemStringValue(XdmItem item, XdmValue value) { if (item.getStringValue().length() == 0) { return null; } String result = autoNodeTextExtraction ? item.getStringValue() : value.toString(); return result; } }
/** * Obtain a predicate that tests whether the result of applying the XPath string() function to an item * matches a given regular expression * * @param regex the regular expression (this is a Java regular expression, not an XPath regular expression) * @return a Predicate which returns true if the string value of the item being tested * contains a substring that matches the given regular expression. To test the string in its entirety, * use anchors "^" and "$" in the regular expression. */ public static Predicate<XdmItem> matchesRegex(String regex) { Pattern re = Pattern.compile(regex); return item -> re.matcher(item.getStringValue()).find(); }
@Override protected Optional<String> makeResult(List<XdmItem> list) { return list.isEmpty() ? Optional.empty() : Optional.of(list.get(0).getStringValue()); } };
@Override protected Optional<String> makeResult(List<XdmItem> list) { return list.isEmpty() ? Optional.empty() : Optional.of(list.get(0).getStringValue()); } };
@Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String path = arguments[0].itemAt(0).getStringValue(); boolean result = new File(path).isDirectory(); return new XdmAtomicValue(result); } };
@Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String path = arguments[0].itemAt(0).getStringValue(); boolean result = new File(path).exists(); return new XdmAtomicValue(result); } };
Processor p = new Processor(false); XdmNode doc = p.newDocumentBuilder().build( new StreamSource(new File("searchPromotions.xml"))); XdmItem result = p.newXPathCompiler().evaluateSingle("/TestCase/count(*)", doc); System.out.println(result.getStringValue());
private String computeReplacement(XdmNode node) { Vector<XdmItem> values = evaluateXPath(node, rns, replace.getString(), atomicStepsGetNoInScopeOptions); String newValue = ""; for (XdmItem item : values) { newValue += item.getStringValue(); } return newValue; }
private String computeReplacement(XdmNode node) { Vector<XdmItem> values = evaluateXPath(node, rns, replace.getString(), atomicStepsGetNoInScopeOptions); String newValue = ""; for (XdmItem item : values) { newValue += item.getStringValue(); } return newValue; }
@Override public Stream<XdmNode> apply(XdmItem item) { if (doc.getNodeKind() != XdmNodeKind.DOCUMENT) { throw new IllegalArgumentException("id() - argument is not a document node"); } NodeInfo target = doc.getUnderlyingNode().getTreeInfo().selectID(item.getStringValue(), true); return target==null ? Stream.empty() : Stream.of((XdmNode)XdmNode.wrap(target)); } };
@Override public Stream<XdmNode> apply(XdmItem item) { if (doc.getNodeKind() != XdmNodeKind.DOCUMENT) { throw new IllegalArgumentException("id() - argument is not a document node"); } NodeInfo target = doc.getUnderlyingNode().getTreeInfo().selectID(item.getStringValue(), true); return target==null ? Stream.empty() : Stream.of((XdmNode)XdmNode.wrap(target)); } };
@Override public Stream<XdmAtomicValue> apply(XdmItem item) { UnfailingIterator<StringValue> iter = new Whitespace.Tokenizer(item.getStringValue()); return XdmSequenceIterator.ofAtomicValues(iter).stream(); } };
XdmValue matchList = xPathSelector.evaluate(); XdmItem firstItem = matchList.itemAt(0); if (firstItem instanceof XdmNode) { XdmNode xdmNode = (XdmNode) firstItem; XdmNodeKind nodeKind = xdmNode.getNodeKind(); if (nodeKind == XdmNodeKind.ELEMENT) { return xdmNode.toString(); } } return firstItem.getStringValue();
@Override public Stream<XdmAtomicValue> apply(XdmItem item) { UnfailingIterator<StringValue> iter = new Whitespace.Tokenizer(item.getStringValue()); return XdmSequenceIterator.ofAtomicValues(iter).stream(); } };
@Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { StringBuilder buf = new StringBuilder(); for (XdmValue argument : arguments) { XdmSequenceIterator iter = argument.iterator(); while (iter.hasNext()) { buf.append(iter.next().getStringValue()); } } return new XdmAtomicValue(buf.toString()); } }