String value = formatItem(item, context); String attributeName = entry.getKey(); if (result.size() > 1) { attributeName += "." + index++; if (result.size() == 0) { logger.info("Routing {} to 'unmatched'", new Object[]{flowFile}); session.transfer(flowFile, REL_NO_MATCH); continue flowFileLoop; } else if (result.size() == 1) { final XdmItem item = result.itemAt(0); flowFile = session.write(flowFile, new OutputStreamCallback() { @Override
@Override protected XdmValue makeResult(List<XdmItem> list) { return new XdmValue(list); } };
/** * @return the result of the query evaluation, as an {@link XdmItem} iterator. */ @Override public Iterator<XdmItem> iterator() { return value.iterator(); }
public int size() { return value.size(); }
XdmValue xdmvalue = parameters.get(param).getValue(); XdmAtomicValue atom = null; if (xdmvalue.size() == 1) { XdmItem item = xdmvalue.itemAt(0); if (item.isAtomicValue()) { atom = (XdmAtomicValue) item; if (atom != null && xdmvalue.size() == 1) { treeWriter.addAttribute(_value, value); treeWriter.startContent(); } else { treeWriter.startContent(); XdmSequenceIterator iter = xdmvalue.iterator(); while (iter.hasNext()) { XdmItem next = iter.next();
XdmValue value = selector.evaluate(); if (value.size() > 1) { List<String> results = new ArrayList<>(); value.forEach(i -> { String sValue = getItemStringValue(i, value); if (sValue != null) { } else if (value.size() == 0) { return Optional.empty(); XdmItem item = value.itemAt(0); return Optional.ofNullable(getItemStringValue(item, value));
/** * Get the underlying implementation object representing the value. This method allows * access to lower-level Saxon functionality, including classes and methods that offer * no guarantee of stability across releases. * * @return the underlying implementation object representing the value * @since 9.8 (previously inherited from XdmValue which returns a Sequence) */ @Override public Item<?> getUnderlyingValue() { return (Item)super.getUnderlyingValue(); }
@Override public XdmValue call(XdmValue[] arguments) throws SaxonApiException { String dir = arguments[0].itemAt(0).getStringValue(); String [] files = new File(dir).list(); if (files == null) { return XdmEmptySequence.getInstance(); } XdmItem[] items = new XdmItem[files.length]; for (int i = 0; i < files.length; i++) { items[i] = new XdmAtomicValue(files[i]); } return new XdmValue (Arrays.asList(items)); } };
@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); } };
/** * Create a new array in which one member is replaced with a new value. * * @param n the position of the member that is to be replaced, counting the first member * in the array as member zero * @param value the new value for this member * @return a new array, the same length as the original, with one member replaced * by a new value * @throws IndexOutOfBoundsException if n is less than zero or greater than or equal to the number * of members in the array */ public XdmArray put(int n, XdmValue value) throws IndexOutOfBoundsException { try { GroundedValue member = value.getUnderlyingValue(); return (XdmArray)XdmValue.wrap(getUnderlyingValue().put(n, member)); } catch (XPathException e) { throw new IndexOutOfBoundsException(); } }
/** * Make an XDM sequence from a Java {@link Iterable}. Each value delivered by the iterable * is first converted to an XDM value using the {@link #makeValue(Object)} method; * if the result is anything other than a single XDM item, it is then wrapped in an * {@link XdmArray}. * @return the result of the conversion if successful * @throws IllegalArgumentException if conversion is not possible */ public static XdmValue makeSequence(Iterable<?> list) throws IllegalArgumentException { List<Item<?>> result = new ArrayList<>(); for (Object o : list) { XdmValue v = XdmValue.makeValue(o); if (v instanceof XdmItem) { result.add((Item)v.getUnderlyingValue()); } else { result.add(new XdmArray(v).getUnderlyingValue()); } } return XdmValue.wrap(SequenceExtent.makeSequenceExtent(result)); }
/** * Static factory method to construct an XDM map by converting each entry * in a supplied Java map. The keys in the Java map must be convertible * to XDM atomic values using the {@link XdmAtomicValue#makeAtomicValue(Object)} * method. The associated values must be convertible to XDM sequences * using the {@link XdmValue#makeValue(Object)} method. * @param input the supplied map * @return the resulting XdmMap * @throws IllegalArgumentException if any value in the input map cannot be converted * to a corresponding XDM value. */ public static XdmMap makeMap(Map input) throws IllegalArgumentException { HashTrieMap result = new HashTrieMap(); for (Object entry : input.entrySet()) { Object key = ((Map.Entry)entry).getKey(); Object value = ((Map.Entry)entry).getValue(); XdmAtomicValue xKey = XdmAtomicValue.makeAtomicValue(key); XdmValue xValue = XdmValue.makeValue(value); result.initialPut(xKey.getUnderlyingValue(), xValue.getUnderlyingValue()); } return new XdmMap(result); }
return XdmValue.wrap((Sequence<?>) o); } else if (o instanceof XdmValue) { return (XdmValue) o; return XdmArray.makeArray((Object[]) o); } else if (o instanceof Iterable) { return XdmValue.makeSequence((Iterable) o); } else { return XdmAtomicValue.makeAtomicValue(o);
private String getItemStringValue(XdmItem item, XdmValue value) { if (item.getStringValue().length() == 0) { return null; } String result = autoNodeTextExtraction ? item.getStringValue() : value.toString(); return result; } }
public void aggregateSpotBugsFiles(File rootDir, int level, File outputDir) throws FileNotFoundException, IOException, SaxonApiException { List<File> spotBugsFiles = getSpotBugsFiles(rootDir, level); Processor proc = new Processor(false); XsltCompiler comp = proc.newXsltCompiler(); InputStream xsl = getClass().getClassLoader().getResourceAsStream("spotbugs/xml-aggregated.xsl"); XsltExecutable exp = comp.compile(new StreamSource(xsl)); Serializer out = proc.newSerializer(new File(outputDir, "SpotBugsAggregated.xml")); out.setOutputProperty(Serializer.Property.METHOD, "xml"); out.setOutputProperty(Serializer.Property.INDENT, "yes"); XsltTransformer trans = exp.load(); List<XdmNode> sources = createXdmNodes(spotBugsFiles, proc.newDocumentBuilder()); QName xmlFiles = new QName("xmlFiles"); XdmValue filesXdm = XdmValue.makeSequence(sources); trans.setParameter(xmlFiles, filesXdm); trans.setInitialTemplate(new QName("test")); trans.setDestination(out); trans.transform(); }
Processor proc = new Processor(); InputStream input = new FileInputStream("/tmp/g.html"); XMLReader reader = new Parser(); reader.setFeature(Parser.namespacesFeature, false); Source source = new SAXSource(parser, input); DocumentBuilder builder = proc.newDocumentBuilder(); XdmNode input = builder.build(source); XPathCompiler compiler = proc.newXPathCompiler(); XdmValue result = compiler.evaluate("//span", input); System.out.println(result.size());
XdmValue xdmvalue = parameters.get(param).getValue(); XdmAtomicValue atom = null; if (xdmvalue.size() == 1) { XdmItem item = xdmvalue.itemAt(0); if (item.isAtomicValue()) { atom = (XdmAtomicValue) item; if (atom != null && xdmvalue.size() == 1) { treeWriter.addAttribute(_value, value); treeWriter.startContent(); } else { treeWriter.startContent(); XdmSequenceIterator iter = xdmvalue.iterator(); while (iter.hasNext()) { XdmItem next = iter.next();
XdmValue value = selector.evaluate(); if (value.size() > 1) { List<String> results = new ArrayList<>(); value.forEach(i -> { String sValue = getItemStringValue(i, value); if (sValue != null) { } else if (value.size() == 0) { return Optional.empty(); XdmItem item = value.itemAt(0); return Optional.ofNullable(getItemStringValue(item, value));
/** * Get the underlying implementation object representing the value. This method allows * access to lower-level Saxon functionality, including classes and methods that offer * no guarantee of stability across releases. * * @return the underlying implementation object representing the value * @since 9.8 (previously inherited from XdmValue which returns a Sequence) */ @Override public Item<?> getUnderlyingValue() { return (Item)super.getUnderlyingValue(); }