public void genericTransform(XdmNode input, Map<String, Object> parameters, Destination dest) throws SaxonApiException { if (parameters != null) { for (Map.Entry<String, Object> param : parameters.entrySet()) { this.transformer.setParameter(new QName(null, param.getKey()), new XdmAtomicValue(param.getValue().toString())); } } this.transformer.setSource(input.asSource()); this.transformer.setDestination(dest); this.transformer.transform(); if (parameters != null) { //cancel the parameters for (Map.Entry<String, Object> param : parameters.entrySet()) { this.transformer.setParameter(new QName(null, param.getKey()), null); } } }
private List<File> convertFiles(List<File> filesToLoad) throws ServletException { List<File> rdfxmlFiles = new ArrayList<File>(filesToLoad.size()); for( File file: filesToLoad){ try { //look for an example of this in S9APIExamples.java from saxon he 9 XsltTransformer t = xsltExec.load(); //this is how to set parameters: //t.setParameter(new QName("someparametername"), new XdmAtomicValue(10)); Serializer out = new Processor(false).newSerializer(); out.setOutputProperty(Serializer.Property.METHOD, "xml"); out.setOutputProperty(Serializer.Property.INDENT, "yes"); File outFile = new File(file.getAbsolutePath() + ".rdfxml"); rdfxmlFiles.add(outFile); out.setOutputFile(outFile); t.setSource(new StreamSource(file)); t.setDestination(out); t.transform(); } catch (SaxonApiException e) { log.error("could not convert " + file.getAbsolutePath() + " to RDF/XML: " + e.getMessage()); throw new ServletException("could not convert " + file.getAbsolutePath() + " to RDF/XML: " + e.getMessage()); } } return rdfxmlFiles; }
private void generateAggregatedHtmlReport(File xmlFile, File outputDir) throws SaxonApiException { Processor proc = new Processor(false); XsltCompiler comp = proc.newXsltCompiler(); InputStream xsl = getClass().getClassLoader().getResourceAsStream("spotbugs/html-aggregated.xsl"); XsltExecutable exp = comp.compile(new StreamSource(xsl)); XdmNode source = proc.newDocumentBuilder().build(new StreamSource(xmlFile)); Serializer out = proc.newSerializer(new File(outputDir, "SpotBugsAggregated.html")); out.setOutputProperty(Serializer.Property.METHOD, "html"); out.setOutputProperty(Serializer.Property.INDENT, "yes"); XsltTransformer trans = exp.load(); trans.setInitialContextNode(source); trans.setDestination(out); trans.transform(); }
/** * Check conformance to TAXII specification beyond what XML Schema provides. */ private void checkConformance(Object m, ValidationErrorHandler errorHandler) { final XsltTransformer transformer = schematronValidator.load(); transformer.setMessageListener(errorHandler); try { transformer.setSource(new JAXBSource(jaxbContext, m)); transformer.setDestination(new SAXDestination(new DefaultHandler())); transformer.transform(); } catch (SaxonApiException | JAXBException e) { errorHandler.getResults().addError("Conformance error: " + e.getMessage()); } }
public static Reader applyEventStylesheet(Binary binary, boolean onlyDetails, Map<String, String> translations, String path) throws GenericException { try ( Reader descMetadataReader = new InputStreamReader(new BOMInputStream(binary.getContent().createInputStream()))) { XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setEntityResolver(new RodaEntityResolver()); InputSource source = new InputSource(descMetadataReader); Source text = new SAXSource(xmlReader, source); XsltExecutable xsltExecutable = EVENT_CACHE.get(path); XsltTransformer transformer = xsltExecutable.load(); CharArrayWriter transformerResult = new CharArrayWriter(); transformer.setSource(text); transformer.setDestination(PROCESSOR.newSerializer(transformerResult)); // send param to filter stylesheet work transformer.setParameter(new QName("onlyDetails"), new XdmAtomicValue(Boolean.toString(onlyDetails))); for (Entry<String, String> parameter : translations.entrySet()) { QName qName = new QName(parameter.getKey()); XdmValue xdmValue = new XdmAtomicValue(parameter.getValue()); transformer.setParameter(qName, xdmValue); } transformer.transform(); return new CharArrayReader(transformerResult.toCharArray()); } catch (IOException | SAXException | ExecutionException | SaxonApiException e) { LOGGER.error(e.getMessage(), e); throw new GenericException("Could not process event binary " + binary.getStoragePath(), e); } }
public static Reader applyMetadataStylesheet(Binary binary, String basePath, String metadataType, String metadataVersion, Map<String, String> parameters) throws GenericException { try ( Reader descMetadataReader = new InputStreamReader(new BOMInputStream(binary.getContent().createInputStream()))) { XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setEntityResolver(new RodaEntityResolver()); InputSource source = new InputSource(descMetadataReader); Source text = new SAXSource(xmlReader, source); XsltExecutable xsltExecutable = CACHE.get(Triple.of(basePath, metadataType, metadataVersion)); XsltTransformer transformer = xsltExecutable.load(); CharArrayWriter transformerResult = new CharArrayWriter(); transformer.setSource(text); transformer.setDestination(PROCESSOR.newSerializer(transformerResult)); for (Entry<String, String> parameter : parameters.entrySet()) { QName qName = new QName(parameter.getKey()); XdmValue xdmValue = new XdmAtomicValue(parameter.getValue()); transformer.setParameter(qName, xdmValue); } transformer.transform(); return new CharArrayReader(transformerResult.toCharArray()); } catch (IOException | SAXException | ExecutionException | SaxonApiException e) { throw new GenericException("Could not process descriptive metadata binary " + binary.getStoragePath() + " metadata type " + metadataType + " and version " + metadataVersion, e); } }
/** * Transforms a standard SVRL report to a plain text representation that * only includes rule violations (positive or negative assertion failures). * * @param svrlSource * The source for reading the SVRL report. * @return A StreamResult holding the plain text output (as a byte stream), * or null if the transformation failed. */ StreamResult generateTextResult(Source svrlSource) { XsltCompiler compiler = processor.newXsltCompiler(); StreamResult result = null; try { XsltExecutable exec = compiler.compile(new StreamSource(getClass().getResourceAsStream("svrl2text.xsl"))); XsltTransformer transformer = exec.load(); transformer.setSource(svrlSource); Serializer serializer = new Serializer(); serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); serializer.setOutputStream(bos); transformer.setDestination(serializer); transformer.transform(); result = new StreamResult(bos); } catch (SaxonApiException e) { LOGR.warning(e.getMessage()); } return result; }
/** Retrieves the output for a given xslt transformer. * @param xsltTransformer the {@link XsltTransformer} that will receive the output * @return the output as a {@link ByteArrayOutputStream} */ public ByteArrayOutputStream getOutput(final XsltTransformer xsltTransformer) { Serializer serializer = serializerFactory.createSerializer(); serializer.setOutputProperty(Serializer.Property.METHOD, "xml"); serializer.setOutputProperty(Serializer.Property.INDENT, "no"); ByteArrayOutputStream output = byteArrayOutputStreamFactory.createByteArrayOutputStream(); serializer.setOutputStream(output); xsltTransformer.setDestination(serializer); return output; }
XsltTransformer xt = executable.load(); XdmDestination dest = new XdmDestination(); xt.setDestination(dest); if (template.usesContext() && context != null) { xt.setSource((NodeInfo) context.getContextItem());
@Test public void testGetOutputShouldSetDestination() { //GIVEN given(serializerFactory.createSerializer()).willReturn(serializer); //WHEN underTest.getOutput(xsltTransformer); //THEN verify(xsltTransformer).setDestination(serializer); }
private void writeSummaryReport(Set<String> testNames, File reportDir) { try { XsltTransformer formatter = xspecHtmlSummaryFormatterLoader.load(); formatter.setInitialTemplate(new QName("main")); formatter.setParameter(new QName("test-names"), new XdmValue( Collections2.<String,XdmItem>transform( testNames, new Function<String,XdmItem>() { public XdmItem apply(String s) { return new XdmAtomicValue(s); }}))); formatter.setParameter(new QName("report-dir"), new XdmAtomicValue(reportDir.toURI())); formatter.setDestination( serializeToFile(new File(reportDir, "index.html"))); formatter.setMessageListener(SaxonSinkReporter.INSTANCE); formatter.transform(); } catch (SaxonApiException e) { throw new RuntimeException(e); } catch (FileNotFoundException e) { throw new RuntimeException(e); } }
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(); }
@Override protected boolean doProcess2(Record inputRecord, InputStream stream) throws SaxonApiException, XMLStreamException { incrementNumRecords(); for (Fragment fragment : fragments) { Record outputRecord = inputRecord.copy(); removeAttachments(outputRecord); XdmNode document = parseXmlDocument(stream); LOG.trace("XSLT input document: {}", document); XsltTransformer evaluator = fragment.transformer; evaluator.setInitialContextNode(document); XMLStreamWriter morphlineWriter = new MorphlineXMLStreamWriter(getChild(), outputRecord); evaluator.setDestination(new XMLStreamWriterDestination(morphlineWriter)); evaluator.transform(); // run the query and push into child via RecordXMLStreamWriter } return true; }
@Override protected boolean doProcess2(Record inputRecord, InputStream stream) throws SaxonApiException, XMLStreamException { incrementNumRecords(); for (Fragment fragment : fragments) { Record outputRecord = inputRecord.copy(); removeAttachments(outputRecord); XdmNode document = parseXmlDocument(stream); LOG.trace("XSLT input document: {}", document); XsltTransformer evaluator = fragment.transformer; evaluator.setInitialContextNode(document); XMLStreamWriter morphlineWriter = new MorphlineXMLStreamWriter(getChild(), outputRecord); evaluator.setDestination(new XMLStreamWriterDestination(morphlineWriter)); evaluator.transform(); // run the query and push into child via RecordXMLStreamWriter } return true; }
public void run() throws SaxonApiException { super.run(); XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); XsltExecutable exec = compiler.compile(prettyPrint.asSource()); XsltTransformer transformer = exec.load(); transformer.setInitialContextNode(source.read()); ByteArrayOutputStream stream = new ByteArrayOutputStream(); Serializer serializer = runtime.getProcessor().newSerializer(); serializer.setOutputProperty(Serializer.Property.ENCODING, "utf-8"); serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes"); serializer.setOutputProperty(Serializer.Property.METHOD, "xml"); serializer.setOutputStream(stream); transformer.setDestination(serializer); transformer.transform(); XdmNode output = runtime.parse(new InputSource(new ByteArrayInputStream(stream.toByteArray()))); result.write(output); } }
public void run() throws SaxonApiException { super.run(); XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); XsltExecutable exec = compiler.compile(prettyPrint.asSource()); XsltTransformer transformer = exec.load(); transformer.setInitialContextNode(source.read()); ByteArrayOutputStream stream = new ByteArrayOutputStream(); Serializer serializer = runtime.getProcessor().newSerializer(); serializer.setOutputProperty(Serializer.Property.ENCODING, "utf-8"); serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes"); serializer.setOutputProperty(Serializer.Property.METHOD, "xml"); serializer.setOutputStream(stream); transformer.setDestination(serializer); transformer.transform(); XdmNode output = runtime.parse(new InputSource(new ByteArrayInputStream(stream.toByteArray()))); result.write(output); } }
private XdmNode transform(XdmNode source, SAXSource stylesheet) throws SaxonApiException { XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); compiler.setSchemaAware(schemaAware); compiler.setURIResolver(new UResolver()); XsltExecutable exec = compiler.compile(stylesheet); XsltTransformer schemaCompiler = exec.load(); schemaCompiler.setInitialContextNode(source); XdmDestination result = new XdmDestination(); schemaCompiler.setDestination(result); schemaCompiler.transform(); return result.getXdmNode(); }
private XdmNode transform(XdmNode source, SAXSource stylesheet) throws SaxonApiException { XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); compiler.setSchemaAware(schemaAware); compiler.setURIResolver(new UResolver()); XsltExecutable exec = compiler.compile(stylesheet); XsltTransformer schemaCompiler = exec.load(); schemaCompiler.setInitialContextNode(source); XdmDestination result = new XdmDestination(); schemaCompiler.setDestination(result); schemaCompiler.transform(); return result.getXdmNode(); }
protected String serialize(XdmNode doc, MediaType type) { XProcRuntime runtime = getGlobalRuntime(); String format = "text"; if (MediaType.TEXT_HTML.equals(type)) { format = "html"; } else if (MediaType.APPLICATION_XML.equals(type)) { format = "xml"; } else if (MediaType.APPLICATION_JSON.equals(type)) { format = "json"; } if (xsl() != null) { XdmDestination result = null; try { XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); XsltExecutable exec = compiler.compile(xsl().asSource()); XsltTransformer transformer = exec.load(); transformer.setParameter(_format, new XdmAtomicValue(format)); transformer.setInitialContextNode(doc); result = new XdmDestination(); transformer.setDestination(result); transformer.transform(); } catch (SaxonApiException e) { throw new XProcException(e); } doc = result.getXdmNode(); } return doc.toString(); }
protected String serialize(XdmNode doc, MediaType type) { XProcRuntime runtime = getGlobalRuntime(); String format = "text"; if (MediaType.TEXT_HTML.equals(type)) { format = "html"; } else if (MediaType.APPLICATION_XML.equals(type)) { format = "xml"; } else if (MediaType.APPLICATION_JSON.equals(type)) { format = "json"; } if (xsl() != null) { XdmDestination result = null; try { XsltCompiler compiler = runtime.getProcessor().newXsltCompiler(); XsltExecutable exec = compiler.compile(xsl().asSource()); XsltTransformer transformer = exec.load(); transformer.setParameter(_format, new XdmAtomicValue(format)); transformer.setInitialContextNode(doc); result = new XdmDestination(); transformer.setDestination(result); transformer.transform(); } catch (SaxonApiException e) { throw new XProcException(e); } doc = result.getXdmNode(); } return doc.toString(); }