Example usage for javax.xml.transform TransformerFactory getURIResolver

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

Introduction

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

Prototype

public abstract URIResolver getURIResolver();

Source Link

Document

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

Usage

From source file:edu.mayo.xsltserver.Transformer.java

/**
 * Transform.//from w w w.j  a  v  a  2s .  c om
 *
 * @param xmlInputStream the xml input stream
 * @param xsltInputStream the xslt input stream
 * @param outputStream the output stream
 * @param parameters the parameters
 */
public void transform(InputStream xmlInputStream, InputStream xsltInputStream, OutputStream outputStream,
        Map<String, String> parameters) {
    try {
        // Source XML File
        StreamSource xmlFile = new StreamSource(xmlInputStream);

        // Source XSLT Stylesheet
        StreamSource xsltFile = new StreamSource(xsltInputStream);
        TransformerFactory xsltFactory = TransformerFactory.newInstance();

        final URIResolver decoratedResolver = xsltFactory.getURIResolver();

        xsltFactory.setURIResolver(new URIResolver() {

            @Override
            public Source resolve(String href, String base) throws TransformerException {
                Source source = decoratedResolver.resolve(href,
                        fileService.getStorageDirectory() + File.separator);

                return source;
            }

        });

        javax.xml.transform.Transformer transformer = xsltFactory.newTransformer(xsltFile);

        if (parameters != null) {
            for (Entry<String, String> entry : parameters.entrySet()) {
                transformer.setParameter(entry.getKey(), entry.getValue());
            }
        }

        // Send transformed output to the console
        StreamResult resultStream = new StreamResult(outputStream);

        // Apply the transformation
        transformer.transform(xmlFile, resultStream);
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}