Example usage for javax.xml.transform Transformer setParameter

List of usage examples for javax.xml.transform Transformer setParameter

Introduction

In this page you can find the example usage for javax.xml.transform Transformer setParameter.

Prototype

public abstract void setParameter(String name, Object value);

Source Link

Document

Add a parameter for the transformation.

Usage

From source file:org.codehaus.enunciate.modules.docs.DocumentationDeploymentModule.java

protected void doXSLT(URL xsltURL) throws IOException, EnunciateException {
    debug("Using stylesheet %s", xsltURL);
    StreamSource source = new StreamSource(xsltURL.openStream());

    try {/*from   w ww .j a v a2  s . c om*/
        Transformer transformer = SAXTransformerFactory.newInstance().newTransformer(source);
        transformer.setURIResolver(new URIResolver() {
            public Source resolve(String href, String base) throws TransformerException {
                return new StreamSource(new File(getGenerateDir(), href));
            }
        });
        transformer.setParameter("downloads-exists", new File(getGenerateDir(), "downloads.xml").exists());
        debug("Extra downloads exist: %b", transformer.getParameter("downloads-exists"));

        File docsXml = new File(getGenerateDir(), "docs.xml");
        File buildDir = getDocsBuildDir();
        buildDir.mkdirs();
        transformer.setParameter("output-dir", buildDir.getAbsolutePath() + File.separator);
        transformer.setParameter("api-relative-path", getRelativePathToRootDir());
        transformer.setParameter("index-page-name", getIndexPageName());
        transformer.setParameter("disable-rest-mountpoint", isDisableRestMountpoint());
        transformer.setParameter("group-rest-resources", getGroupRestResources());
        File indexPage = new File(buildDir, getIndexPageName());
        debug("Transforming %s to %s.", docsXml, indexPage);
        transformer.transform(new StreamSource(docsXml), new StreamResult(indexPage));
    } catch (TransformerException e) {
        throw new EnunciateException("Error during transformation of the documentation (stylesheet " + xsltURL
                + ", document " + new File(getGenerateDir(), "docs.xml") + ")", e);
    }
}

From source file:org.cruk.mga.CreateReport.java

/**
 * Writes the alignment summary report./*from   ww  w  .  ja  va 2  s  .  co m*/
 *
 * @param multiGenomeAlignmentSummaries
 * @param runProperties
 * @param out
 * @param imageFilename
 * @param xmlFilename
 * @param htmlFilename
 * @throws IOException
 * @throws TransformerException
 */
private void writeReport(Collection<MultiGenomeAlignmentSummary> multiGenomeAlignmentSummaries,
        OrderedProperties runProperties, PrintStream out, String imageFilename, String xmlFilename,
        String htmlFilename) throws IOException, TransformerException {
    Element root = new Element("MultiGenomeAlignmentSummaries");

    addElement(root, "RunId", runId);

    addProperties(root, runProperties);

    if (trimStart != null)
        addElement(root, "TrimStart", trimStart);
    if (trimLength != null)
        addElement(root, "TrimLength", trimLength);

    Set<String> referenceGenomeIds = new HashSet<String>();

    for (MultiGenomeAlignmentSummary multiGenomeAlignmentSummary : multiGenomeAlignmentSummaries) {
        Element multiGenomeAlignmentSummaryElement = new Element("MultiGenomeAlignmentSummary");
        root.appendChild(multiGenomeAlignmentSummaryElement);

        String datasetId = multiGenomeAlignmentSummary.getDatasetId();
        String datasetDisplayLabel = datasetDisplayLabels.get(datasetId);

        addElement(multiGenomeAlignmentSummaryElement, "DatasetId", datasetDisplayLabel);
        addElement(multiGenomeAlignmentSummaryElement, "SequenceCount",
                Long.toString(multiGenomeAlignmentSummary.getSequenceCount()));
        addElement(multiGenomeAlignmentSummaryElement, "SampledCount",
                multiGenomeAlignmentSummary.getSampledCount());
        addElement(multiGenomeAlignmentSummaryElement, "AdapterCount",
                multiGenomeAlignmentSummary.getAdapterCount());
        addElement(multiGenomeAlignmentSummaryElement, "UnmappedCount",
                multiGenomeAlignmentSummary.getUnmappedCount());

        Element alignmentSummariesElement = new Element("AlignmentSummaries");
        multiGenomeAlignmentSummaryElement.appendChild(alignmentSummariesElement);

        for (AlignmentSummary alignmentSummary : multiGenomeAlignmentSummary.getAlignmentSummaries()) {
            Element alignmentSummaryElement = new Element("AlignmentSummary");
            alignmentSummariesElement.appendChild(alignmentSummaryElement);

            String referenceGenomeId = alignmentSummary.getReferenceGenomeId();
            referenceGenomeIds.add(referenceGenomeId);
            Element referenceGenomeElement = new Element("ReferenceGenome");
            alignmentSummaryElement.appendChild(referenceGenomeElement);
            referenceGenomeElement.addAttribute(new Attribute("id", referenceGenomeId));
            referenceGenomeElement
                    .addAttribute(new Attribute("name", getReferenceGenomeName(referenceGenomeId)));

            addElement(alignmentSummaryElement, "AlignedCount", alignmentSummary.getAlignedCount());
            addElement(alignmentSummaryElement, "ErrorRate",
                    String.format("%.5f", alignmentSummary.getErrorRate()));
            addElement(alignmentSummaryElement, "UniquelyAlignedCount",
                    alignmentSummary.getUniquelyAlignedCount());
            addElement(alignmentSummaryElement, "UniquelyAlignedErrorRate",
                    String.format("%.5f", alignmentSummary.getUniquelyAlignedErrorRate()));
            addElement(alignmentSummaryElement, "PreferentiallyAlignedCount",
                    alignmentSummary.getPreferentiallyAlignedCount());
            addElement(alignmentSummaryElement, "PreferentiallyAlignedErrorRate",
                    String.format("%.5f", alignmentSummary.getPreferentiallyAlignedErrorRate()));
            addElement(alignmentSummaryElement, "AssignedCount", alignmentSummary.getAssignedCount());
            addElement(alignmentSummaryElement, "AssignedErrorRate",
                    String.format("%.5f", alignmentSummary.getAssignedErrorRate()));
        }

        Element samplesElement = new Element("Samples");
        multiGenomeAlignmentSummaryElement.appendChild(samplesElement);

        for (OrderedProperties sampleProperties : multiGenomeAlignmentSummary.getSampleProperties()) {
            Element sampleElement = new Element("Sample");
            samplesElement.appendChild(sampleElement);
            addProperties(sampleElement, sampleProperties);
        }
    }

    Element referenceGenomesElement = new Element("ReferenceGenomes");
    root.appendChild(referenceGenomesElement);
    for (String referenceGenomeId : referenceGenomeIds) {
        Element referenceGenomeElement = new Element("ReferenceGenome");
        referenceGenomesElement.appendChild(referenceGenomeElement);
        referenceGenomeElement.addAttribute(new Attribute("id", referenceGenomeId));
        referenceGenomeElement.addAttribute(new Attribute("name", getReferenceGenomeName(referenceGenomeId)));
    }

    Document document = new Document(root);

    Serializer serializer = new Serializer(out, "ISO-8859-1");
    serializer.setIndent(2);
    serializer.setLineSeparator("\n");
    serializer.write(document);
    out.close();

    if (xslStyleSheetFilename != null) {
        File imageFile = new File(imageFilename);
        FileInputStream imageInputStream = new FileInputStream(imageFile);
        byte imageByteArray[] = new byte[(int) imageFile.length()];
        imageInputStream.read(imageByteArray);
        imageInputStream.close();

        String imageBase64String = Base64.encodeBase64String(imageByteArray);
        TransformerFactory factory = TransformerFactory.newInstance();
        Source xslt = new StreamSource(new File(xslStyleSheetFilename));
        Transformer transformer = factory.newTransformer(xslt);
        transformer.setParameter("image", imageBase64String);
        Source xmlSource = new StreamSource(new File(xmlFilename));
        transformer.transform(xmlSource, new StreamResult(new File(htmlFilename)));
    }
}

From source file:org.cruxframework.crux.tools.schema.DefaultSchemaGenerator.java

@Override
public void generateDocumentation() throws SchemaGeneratorException {
    try {//from ww w . jav a 2s .c om
        TransformerFactory factory = TransformerFactory.newInstance();
        StreamSource xslStream = new StreamSource(getClass().getResourceAsStream("/META-INF/xs3p.xsl"));
        Transformer transformer = factory.newTransformer(xslStream);

        for (File file : destDir.listFiles()) {
            String fileName = file.getName();
            logger.info("Generating Documentation for library [" + fileName + "].");
            if (fileName.endsWith("xsd")) {
                transformer.setParameter("title", schemaMessages
                        .documentationTitle(fileName.substring(0, fileName.length() - 4).toUpperCase()));

                if (fileName.endsWith("core.xsd") || fileName.endsWith("module.xsd")
                        || fileName.endsWith("offline.xsd") || fileName.endsWith("template.xsd")
                        || fileName.endsWith("view.xsd") || fileName.endsWith("xdevice.xsd")
                        || fileName.endsWith(XHTML_XSD)) {
                    transformer.setParameter("globalDeclarationsTitle",
                            schemaMessages.globalDeclarationsTitle());
                } else {
                    transformer.setParameter("globalDeclarationsTitle",
                            schemaMessages.globalDeclarationsWidgetsTitle());
                }
                transformer.setParameter("printLegend", false);
                transformer.setParameter("printGlossary", false);
                StreamSource in = new StreamSource(new FileInputStream(file));
                StreamResult out = new StreamResult(new File(destDir, file.getName() + ".html"));
                transformer.transform(in, out);
            }
        }
        logger.info("All documentation generated.");
    } catch (Exception e) {
        throw new SchemaGeneratorException("Error generation HTML documentation for XSD files", e);
    }
}

From source file:org.dcm4che.tool.hl7rcv.HL7Rcv.java

private byte[] xslt(HL7Segment msh, byte[] msg, int off, int len) throws Exception {
    String charsetName = HL7Charset.toCharsetName(msh.getField(17, charset));
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    TransformerHandler th = factory.newTransformerHandler(tpls);
    Transformer t = th.getTransformer();
    t.setParameter("MessageControlID", HL7Segment.nextMessageControlID());
    t.setParameter("DateTimeOfMessage", HL7Segment.timeStamp(new Date()));
    if (xsltParams != null)
        for (int i = 1; i < xsltParams.length; i++, i++)
            t.setParameter(xsltParams[i - 1], xsltParams[i]);
    th.setResult(new SAXResult(new HL7ContentHandler(new OutputStreamWriter(out, charsetName))));
    new HL7Parser(th).parse(new InputStreamReader(new ByteArrayInputStream(msg, off, len), charsetName));
    return out.toByteArray();
}

From source file:org.dd4t.core.util.XSLTransformer.java

public String transformSourceFromFilesource(String source, String resource, Map<String, Object> params)
        throws TransformerException {
    // attain writer to place result in
    CharArrayWriter caw = new CharArrayWriter();
    StreamResult result = new StreamResult(caw);

    // get XSL transformer
    Transformer trans = getTransformer(resource);
    for (Map.Entry<String, Object> entry : params.entrySet()) {
        trans.setParameter(entry.getKey(), entry.getValue());
    }//from ww w  . j  a  v a 2s  . c o  m

    // if found, transform
    if (trans != null) {
        StringReader reader = new StringReader(source);
        StreamSource xmlSource = new StreamSource(reader);
        // transform
        trans.transform(xmlSource, result);
    }

    return caw.toString();
}

From source file:org.dita2indesign.cmdline.Docx2Xml.java

/**
 * @param docxFile/* w  w  w .  ja  v  a2 s.com*/
 * @param resultFile
 * @param options 
 * @throws Exception 
 */
private void generateXml(File docxFile, File resultFile, Options options) throws Exception {
    File tempDir = getTempDir(true);

    //      log.debug("Unzipping docxfile to \"" + tempDir.getAbsolutePath() + "\"...");
    unzip(docxFile, tempDir);

    File documentXml = new File(new File(tempDir, "word"), "document.xml");
    if (!documentXml.exists()) {
        throw new RuntimeException("Failed to find document.xml within DOCX package. This should not happen.");
    }

    URL xsltUrl = new URL(options.getXslt());
    //      log.debug("xsltUrl=" + xsltUrl.toExternalForm());

    TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl(); // TransformerFactory.newInstance();

    Source style = new StreamSource(xsltUrl.openStream());
    style.setSystemId(xsltUrl.toExternalForm());

    Transformer trans = factory.newTransformer(style);

    trans.setParameter("styleMapUri", options.getStyleMapUri());
    //        log.debug("Got a transformer.:");

    Source xmlSource = new StreamSource(new FileInputStream(documentXml));
    xmlSource.setSystemId(documentXml.getAbsolutePath());
    //        log.debug("xmlSource.systemId=\"" + xmlSource.getSystemId() + "\"");
    Result result = new StreamResult(new FileOutputStream(resultFile));
    log.debug("Calling transform()...");
    trans.transform(xmlSource, result);
    log.debug("Transformation complete.");
    FileUtils.deleteDirectory(tempDir);
}

From source file:org.dita2indesign.idml2dita.Idml2Dita.java

/**
 * @param idmlFile//from  w  ww.  j  a va 2  s  .  co m
 * @param resultFile
 * @param options 
 * @throws Exception 
 */
private void generateDita(File idmlFile, File resultFile, Options options) throws Exception {
    File tempDir = getTempDir(true);

    //      log.debug("Unzipping IDML file to \"" + tempDir.getAbsolutePath() + "\"...");
    unzip(idmlFile, tempDir);

    File documentXml = new File(tempDir, "designmap.xml");
    if (!documentXml.exists()) {
        throw new RuntimeException("Failed to find document.xml within DOCX package. This should not happen.");
    }

    URL xsltUrl = new URL(options.getXslt());
    //      log.debug("xsltUrl=" + xsltUrl.toExternalForm());

    TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl(); // TransformerFactory.newInstance();

    Source style = new StreamSource(xsltUrl.openStream());
    style.setSystemId(xsltUrl.toExternalForm());

    Transformer trans = factory.newTransformer(style);

    trans.setParameter("styleMapUri", options.getStyleMapUri());
    //        log.debug("Got a transformer.:");

    Source xmlSource = new StreamSource(new FileInputStream(documentXml));
    xmlSource.setSystemId(documentXml.getAbsolutePath());
    //        log.debug("xmlSource.systemId=\"" + xmlSource.getSystemId() + "\"");
    Result result = new StreamResult(new FileOutputStream(resultFile));
    log.debug("Calling transform()...");
    trans.transform(xmlSource, result);
    log.debug("Transformation complete.");
    FileUtils.deleteDirectory(tempDir);
}

From source file:org.docx4j.convert.out.pdf.viaXSLFO.FopResultUtils.java

protected static void setupParameters(Transformer transformer, Map<String, Object> parameters) {
    if ((parameters != null) && (!parameters.isEmpty())) {
        for (Map.Entry<String, Object> item : parameters.entrySet()) {
            if (item.getKey() != null) {
                transformer.setParameter(item.getKey(), item.getValue());
            }//from  www  . ja va  2 s  .  c o  m
        }
    }
}

From source file:org.docx4j.XmlUtils.java

/**
 * //from  w w w  . j  a  va2  s  .co m
 * Transform an input document using XSLT
 * 
 * @param doc
 * @param xslt
 * @param transformParameters
 * @param result
 * @throws Docx4JException In case serious transformation errors occur
 */
public static void transform(javax.xml.transform.Source source, javax.xml.transform.Templates template,
        Map<String, Object> transformParameters, javax.xml.transform.Result result) throws Docx4JException {

    if (source == null) {
        Throwable t = new Throwable();
        throw new Docx4JException("Null Source doc", t);
    }

    // Use the template to create a transformer
    // A Transformer may not be used in multiple threads running concurrently. 
    // Different Transformers may be used concurrently by different threads.
    // A Transformer may be used multiple times. Parameters and output properties 
    // are preserved across transformations.      
    javax.xml.transform.Transformer xformer;
    try {
        xformer = template.newTransformer();
    } catch (TransformerConfigurationException e) {
        throw new Docx4JException("The Transformer is ill-configured", e);
    }

    log.info("Using " + xformer.getClass().getName());

    if (xformer.getClass().getName().equals("org.apache.xalan.transformer.TransformerImpl")) {

        if (Docx4jProperties.getProperty("docx4j.xalan.XALANJ-2419.workaround", false)) {
            // Use our patched serializer, which fixes Unicode astral character
            // issue. See https://issues.apache.org/jira/browse/XALANJ-2419

            log.info("Working around https://issues.apache.org/jira/browse/XALANJ-2419");

            Properties p = xformer.getOutputProperties();
            String method = p.getProperty("method");
            System.out.println("method: " + method);
            if (method == null || method.equals("xml")) {

                ((org.apache.xalan.transformer.TransformerImpl) xformer).setOutputProperty(
                        S_KEY_CONTENT_HANDLER, "org.docx4j.org.apache.xml.serializer.ToXMLStream");

            } else if (method.equals("html")) {

                ((org.apache.xalan.transformer.TransformerImpl) xformer).setOutputProperty(
                        S_KEY_CONTENT_HANDLER, "org.docx4j.org.apache.xml.serializer.ToHTMLStream");

            } else if (method.equals("text")) {

                ((org.apache.xalan.transformer.TransformerImpl) xformer).setOutputProperty(
                        S_KEY_CONTENT_HANDLER, "org.docx4j.org.apache.xml.serializer.ToTextStream");

            } else {

                log.warn("fallback for method: " + method);
                ((org.apache.xalan.transformer.TransformerImpl) xformer).setOutputProperty(
                        S_KEY_CONTENT_HANDLER, "org.docx4j.org.apache.xml.serializer.ToUnknownStream");

            }

            /* That wasn't quite enough:
             * 
               at org.docx4j.org.apache.xml.serializer.ToXMLStream.startDocumentInternal(ToXMLStream.java:143)
               at org.docx4j.org.apache.xml.serializer.SerializerBase.startDocument(SerializerBase.java:1190)
               at org.apache.xml.serializer.ToSAXHandler.startDocumentInternal(ToSAXHandler.java:97)
               at org.apache.xml.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:273)
               at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:350)
               at org.apache.xml.serializer.ToXMLSAXHandler.startPrefixMapping(ToXMLSAXHandler.java:320)
               at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1317)
             *
             * (TransformerImpl's createSerializationHandler makes a new org.apache.xml.serializer.ToXMLSAXHandler.ToXMLSAXHandler
             * and that's hard coded.)
             * 
             * But it seems to be enough now...
                        
             */
        }

    } else {

        log.error("Detected " + xformer.getClass().getName()
                + ", but require org.apache.xalan.transformer.TransformerImpl. "
                + "Ensure Xalan 2.7.x is on your classpath!");
    }
    LoggingErrorListener errorListener = new LoggingErrorListener(false);
    xformer.setErrorListener(errorListener);

    if (transformParameters != null) {
        Iterator parameterIterator = transformParameters.entrySet().iterator();
        while (parameterIterator.hasNext()) {
            Map.Entry pairs = (Map.Entry) parameterIterator.next();

            if (pairs.getKey() == null) {
                log.info("Skipped null key");
                // pairs = (Map.Entry)parameterIterator.next();
                continue;
            }

            if (pairs.getKey().equals("customXsltTemplates"))
                continue;

            if (pairs.getValue() == null) {
                log.warn("parameter '" + pairs.getKey() + "' was null.");
            } else {
                xformer.setParameter((String) pairs.getKey(), pairs.getValue());
            }
        }
    }

    /* SUPER DEBUGGING
    // http://xml.apache.org/xalan-j/usagepatterns.html#debugging
    // debugging
    // Set up a PrintTraceListener object to print to a file.
    java.io.FileWriter fw = new java.io.FileWriter("/tmp/xslt-events" + xsltCount++ + ".log");
    java.io.PrintWriter pw = new java.io.PrintWriter(fw);
    PrintTraceListener ptl = new PrintTraceListener(pw);
            
    // Print information as each node is 'executed' in the stylesheet.
    ptl.m_traceElements = true;
    // Print information after each result-tree generation event.
    ptl.m_traceGeneration = true;
    // Print information after each selection event.
    ptl.m_traceSelection = true;
    // Print information whenever a template is invoked.
    ptl.m_traceTemplates = true;
    // Print information whenever an extension is called.
    ptl.m_traceExtension = true;
    TransformerImpl transformerImpl = (TransformerImpl)xformer;
            
      // Register the TraceListener with the TraceManager associated
      // with the TransformerImpl.
      TraceManager trMgr = transformerImpl.getTraceManager();
      trMgr.addTraceListener(ptl);
            
    */
    // DEBUGGING
    // use the identity transform if you want to send wordDocument;
    // otherwise you'll get the XHTML
    // javax.xml.transform.Transformer xformer = tfactory.newTransformer();
    try {
        xformer.transform(source, result);
    } catch (TransformerException e) {
        throw new Docx4JException("Cannot perform the transformation", e);
    } finally {
        //pw.flush();
    }

}

From source file:org.eclipse.smila.search.servlet.SMILASearchServlet.java

/**
 * transform DOM documment using stylesheet.
 *
 * @param doc/*from   w ww  . ja  va  2s.  c o  m*/
 *          DOM search result document
 * @param stylesheet
 *          stylesheet name (without .xsl suffix)
 * @return HTML result
 * @throws ServletException
 *           error during transformation
 */
protected byte[] transform(final Document doc, final String stylesheet) throws ServletException {
    final DOMSource xmlDomSource = new DOMSource(doc);

    // sw recieves the transformation's result.
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    final StreamResult stream = new StreamResult(baos);

    // transform via StreamResult into the StringWriter
    InputStream is = null;
    try {
        is = ConfigUtils.getConfigStream(Activator.BUNDLE_NAME, stylesheet + ".xsl");
        final Document xslDoc = XMLUtils.parse(is, false);
        final Transformer transformer = getXSLTransformer(xslDoc);
        transformer.setParameter("stylesheet", stylesheet);
        transformer.transform(xmlDomSource, stream);
    } catch (final XMLUtilsException xue) {
        throw new ServletException("the stylesheet is not valid [" + stylesheet + ".xsl]", xue);
    } catch (final TransformerException te) {
        throw new ServletException("Error ocured while transforming!", te);
    } finally {
        IOUtils.closeQuietly(is);
    }

    return baos.toByteArray();
}