private void doTransform(InputStream istream, File dataFile, File outputFile, String baseUrl) throws SaxonApiException, TransformerFactoryConfigurationError, TransformerException { InputStream stylesheetUri = Jats2Spar.class.getResourceAsStream(RESOURCE_JATS2SPAR_XSL); Processor proc = new Processor(false); XsltCompiler comp = proc.newXsltCompiler(); XsltExecutable exec; exec = comp.compile(new StreamSource(stylesheetUri)); XsltTransformer transformer = exec.load(); DocumentBuilder saxBuilder = proc.newDocumentBuilder(); saxBuilder.setLineNumbering(true); saxBuilder.setDTDValidation(false); XdmNode source = saxBuilder.build(new StreamSource(istream)); Serializer serializer = new Serializer(); serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); serializer.setOutputFile(outputFile); transformer.setParameter(new QName("baseUri"), new XdmAtomicValue(baseUrl)); transformer.setInitialContextNode(source); transformer.setDestination(serializer); transformer.setMessageListener( new MessageListener() { @Override public void message(XdmNode arg0, boolean arg1, SourceLocator arg2) { log.warn( String.format( "Transformation Error: %s\n Line Number: %s", arg0, arg2.getLineNumber())); } }); transformer.transform(); log.info(String.format("Finished xslt transformation for file: %s", dataFile)); }