List of usage examples for javax.xml.transform TransformerFactory setURIResolver
public abstract void setURIResolver(URIResolver resolver);
From source file:Main.java
/** * Use the transform specified by xslSrc and transform the document specified by docSrc, and return the resulting * document./*ww w .java 2 s . c o m*/ * * @param xslSrc * StreamSrc containing the xsl transform * @param docSrc * StreamSrc containing the document to be transformed * @param params * Map of properties to set on the transform * @param resolver * URIResolver instance to resolve URI's in the output document. * * @return StringBuffer containing the XML results of the transform * @throws TransformerConfigurationException * if the TransformerFactory fails to create a Transformer. * @throws TransformerException * if actual transform fails. */ protected static final StringBuffer transformXml(final StreamSource xslSrc, final StreamSource docSrc, final Map params, final URIResolver resolver) throws TransformerConfigurationException, TransformerException { StringBuffer sb = null; StringWriter writer = new StringWriter(); TransformerFactory tf = TransformerFactory.newInstance(); if (null != resolver) { tf.setURIResolver(resolver); } // TODO need to look into compiling the XSLs... Transformer t = tf.newTransformer(xslSrc); // can throw // TransformerConfigurationException // Start the transformation if (params != null) { Set<?> keys = params.keySet(); Iterator<?> it = keys.iterator(); String key, val; while (it.hasNext()) { key = (String) it.next(); val = (String) params.get(key); if (val != null) { t.setParameter(key, val); } } } t.transform(docSrc, new StreamResult(writer)); // can throw // TransformerException sb = writer.getBuffer(); return sb; }
From source file:Main.java
private static void transformInternal(final URIResolver xslResolver, final StreamSource xml, final InputSource xsl, final Map<String, Object> parameters, final StreamResult result) throws IOException, ParserConfigurationException, SAXException, TransformerConfigurationException, TransformerException {/* w w w. j av a 2 s .c o m*/ final TransformerFactory tfactory = TransformerFactory.newInstance(); tfactory.setURIResolver(xslResolver); // Does this factory support SAX features? if (tfactory.getFeature(SAXSource.FEATURE)) { // if so, we can safely cast final SAXTransformerFactory stfactory = ((SAXTransformerFactory) tfactory); // create a Templates ContentHandler to handle parsing of the // stylesheet final javax.xml.transform.sax.TemplatesHandler templatesHandler = stfactory.newTemplatesHandler(); templatesHandler.setDocumentLocator(emptyDocumentLocator); final XMLFilter filter = new XMLFilterImpl(); filter.setParent(makeXMLReader()); filter.setContentHandler(templatesHandler); // parse the stylesheet templatesHandler.setSystemId(xsl.getSystemId()); filter.parse(xsl); // set xslt parameters final Transformer autobot = templatesHandler.getTemplates().newTransformer(); if (parameters != null) { final Iterator<String> keys = parameters.keySet().iterator(); while (keys.hasNext()) { final String name = keys.next(); final Object value = parameters.get(name); autobot.setParameter(name, value); } } // set saxon parameters if (parameters != null) { final Iterator<String> keys = parameters.keySet().iterator(); while (keys.hasNext()) { String name = keys.next(); if (name.startsWith("saxon-")) { final String value = parameters.get(name).toString(); name = name.replaceFirst("saxon\\-", ""); autobot.setOutputProperty(name, value); } } } // do the transform // logger.debug("SAX resolving systemIDs relative to: " + // templatesHandler.getSystemId()); autobot.transform(xml, result); } else { throw new IllegalStateException("Factory doesn't implement SAXTransformerFactory"); } }
From source file:de.awtools.xml.TransformerUtils.java
/** * Eine <code>InputStream</code> mit XSL Daten. * * @param xsltStream <code>InputStream</code> mit XSL Daten. * @param resolver Ein <code>URIResolver</code>. Darf <code>null</code> * sein.//w ww .j av a 2 s . c o m * @return Ein <code>Transformer</code> */ public static Transformer getTransformer(final InputStream xsltStream, final URIResolver resolver) { Validate.notNull(xsltStream, "xsltStream not set"); Source source = new StreamSource(xsltStream); TransformerFactory factory = TransformerFactory.newInstance(); if (resolver != null) { factory.setURIResolver(resolver); } try { return factory.newTransformer(source); } catch (TransformerConfigurationException ex) { log.debug("Fehler:", ex); throw new UnhandledException(ex); } }
From source file:com.eucalyptus.gen2ools.WsdlDocument.java
static byte[] transformXml(String xslFile, StreamSource xmlSS) throws TransformerException { TransformerFactory tf = TransformerFactory.newInstance(); tf.setURIResolver(new XslFileResolver("..")); ByteArrayOutputStream xmlOS = new ByteArrayOutputStream(); Transformer t = tf.newTransformer(new StreamSource(XsdSchema.class.getResourceAsStream(xslFile))); t.transform(xmlSS, new StreamResult(xmlOS)); return xmlOS.toByteArray(); }
From source file:Main.java
public static Node applyXslToDocument2(Source xslt, Source doc, URIResolver resolver, Properties transformerProperties, HashMap<String, String> params, String transformerClassName) throws ClassNotFoundException, IllegalAccessException, InstantiationException, IOException, NoSuchMethodException, TransformerConfigurationException, TransformerException { TransformerFactory transformerFactory = null; if (transformerClassName == null) transformerFactory = TransformerFactory.newInstance(); else {//from ww w.j av a2s . c om Class transformerClass = Class.forName(transformerClassName); Constructor defaultConstructor = transformerClass.getConstructor(null); transformerFactory = (TransformerFactory) transformerClass.newInstance(); } if (resolver != null) transformerFactory.setURIResolver(resolver); Transformer transformer = transformerFactory.newTransformer(xslt); if (transformerFactory != null) transformer.setOutputProperties(transformerProperties); if (params != null) { for (Map.Entry<String, String> cursor : params.entrySet()) { transformer.setParameter(cursor.getKey(), cursor.getValue()); } } DOMResult result = new DOMResult(); transformer.transform(doc, result); return (result.getNode()); }
From source file:Main.java
public static String applyXslToDocument(Source xslt, Source doc, URIResolver resolver, Properties transformerProperties, HashMap<String, String> params, String transformerClassName) throws ClassNotFoundException, IllegalAccessException, InstantiationException, IOException, NoSuchMethodException, TransformerConfigurationException, TransformerException { TransformerFactory transformerFactory = null; if (transformerClassName == null) transformerFactory = TransformerFactory.newInstance(); else {// ww w .ja v a 2s . com Class transformerClass = Class.forName(transformerClassName); Constructor defaultConstructor = transformerClass.getConstructor(null); transformerFactory = (TransformerFactory) transformerClass.newInstance(); } if (resolver != null) transformerFactory.setURIResolver(resolver); Transformer transformer = transformerFactory.newTransformer(xslt); if (transformerFactory != null) transformer.setOutputProperties(transformerProperties); if (params != null) { for (Map.Entry<String, String> cursor : params.entrySet()) { transformer.setParameter(cursor.getKey(), cursor.getValue()); } } StringWriter strWriter = new StringWriter(); StreamResult result = new StreamResult(strWriter); transformer.transform(doc, result); return (strWriter.toString()); }
From source file:gov.nih.nci.integration.transformer.TransformerConfig.java
/** * {@inheritDoc}/*from w w w . ja va 2s . com*/ */ @Bean public TransformerFactory xslTransformerFactory() { final TransformerFactory tf = TransformerFactory.newInstance(); tf.setURIResolver(xslUriResolver()); return tf; }
From source file:io.github.kahowell.xformsvc.util.TransformUtil.java
public String transform(String transformationName, String source) throws TransformerConfigurationException, TransformerException, UnsupportedEncodingException { TransformerFactory factory = TransformerFactory.newInstance(); factory.setURIResolver(getURIResolver()); Transformer transformer = factory.newTransformer(lookupTransformer(transformationName)); transformer.setOutputProperty(OutputKeys.INDENT, prettyPrint ? "yes" : "no"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); ByteArrayOutputStream out = new ByteArrayOutputStream(); transformer.transform(new StreamSource(new ByteArrayInputStream(source.getBytes("UTF-8"))), new StreamResult(out)); return out.toString("UTF-8"); }
From source file:org.jboss.windup.decorator.xml.XSLTDecorator.java
@Override public void afterPropertiesSet() { LOG.debug("Getting XSLT Location: " + xsltLocation); Source xsltSource = new StreamSource( Thread.currentThread().getContextClassLoader().getResourceAsStream(xsltLocation)); try {//w w w .j a v a 2 s . co m TransformerFactory tf = TransformerFactory.newInstance(); tf.setURIResolver(new URIResolver() { @Override public Source resolve(String href, String base) throws TransformerException { // fetch local only, for speed reasons. if (StringUtils.contains(href, "http://")) { LOG.warn("Trying to fetch remote URL for XSLT. This is not possible; for speed reasons: " + href + ": " + base); return null; } return new StreamSource( Thread.currentThread().getContextClassLoader().getResourceAsStream(href)); } }); xsltTransformer = tf.newTransformer(xsltSource); if (xsltParameters != null) { for (String key : xsltParameters.keySet()) { if (LOG.isDebugEnabled()) { LOG.debug("Setting property: " + key + " -> " + xsltParameters.get(key)); } xsltTransformer.setParameter(key, xsltParameters.get(key)); } } if (LOG.isDebugEnabled()) { LOG.debug("Created XSLT successfully: " + xsltLocation); } } catch (Exception e) { LOG.error("Exception creating XSLT: " + xsltLocation, e); } }
From source file:com.idiominc.ws.opentopic.fo.i18n.PreprocessorTask.java
@Override public void execute() throws BuildException { checkParameters();/* ww w .j a v a2 s.c om*/ log("Processing " + input + " to " + output, Project.MSG_INFO); OutputStream out = null; try { final DocumentBuilder documentBuilder = XMLUtils.getDocumentBuilder(); documentBuilder.setEntityResolver(xmlcatalog); final Document doc = documentBuilder.parse(input); final Document conf = documentBuilder.parse(config); final MultilanguagePreprocessor preprocessor = new MultilanguagePreprocessor(new Configuration(conf)); final Document document = preprocessor.process(doc); final TransformerFactory transformerFactory = TransformerFactory.newInstance(); transformerFactory.setURIResolver(xmlcatalog); final Transformer transformer; if (style != null) { log("Loading stylesheet " + style, Project.MSG_INFO); transformer = transformerFactory.newTransformer(new StreamSource(style)); } else { transformer = transformerFactory.newTransformer(); } transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperty(OutputKeys.INDENT, "no"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); if (doc.getDoctype() != null) { transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doc.getDoctype().getPublicId()); transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doc.getDoctype().getSystemId()); } out = new FileOutputStream(output); final StreamResult streamResult = new StreamResult(out); transformer.transform(new DOMSource(document), streamResult); } catch (final RuntimeException e) { throw e; } catch (final Exception e) { throw new BuildException(e); } finally { IOUtils.closeQuietly(out); } }