Example usage for javax.xml.transform TransformerFactory setURIResolver

List of usage examples for javax.xml.transform TransformerFactory setURIResolver

Introduction

In this page you can find the example usage for javax.xml.transform TransformerFactory setURIResolver.

Prototype

public abstract void setURIResolver(URIResolver resolver);

Source Link

Document

Set an object that is used by default during the transformation to resolve URIs used in document(), xsl:import, or xsl:include.

Usage

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);
    }
}