List of usage examples for javax.xml.transform Transformer setParameter
public abstract void setParameter(String name, Object value);
From source file:org.apache.cocoon.components.xslt.TraxProcessor.java
public void transform(final Source source, final Source stylesheet, final Parameters params, final Result result) throws XSLTProcessorException { try {//from w ww . j a v a 2 s.c om if (getLogger().isDebugEnabled()) { getLogger().debug("Transform source = " + source + ", stylesheet = " + stylesheet + ", parameters = " + params + ", result = " + result); } final TransformerHandler handler = getTransformerHandler(stylesheet); if (params != null) { final Transformer transformer = handler.getTransformer(); transformer.clearParameters(); String[] names = params.getNames(); for (int i = names.length - 1; i >= 0; i--) { transformer.setParameter(names[i], params.getParameter(names[i])); } } handler.setResult(result); sourceToSAX(source, handler); if (getLogger().isDebugEnabled()) { getLogger().debug("Transform done"); } } catch (SAXException e) { // Unwrapping the exception will "remove" the real cause with // never Xalan versions and makes the exception message unusable final String message = "Error in running Transformation"; throw new XSLTProcessorException(message, e); /* * if( e.getException() == null ) { final String message = "Error in * running Transformation"; throw new XSLTProcessorException( * message, e ); } else { final String message = "Got SAXException. * Rethrowing cause exception."; getLogger().debug( message, e ); * throw new XSLTProcessorException( "Error in running * Transformation", e.getException() ); } */ } catch (Exception e) { final String message = "Error in running Transformation"; throw new XSLTProcessorException(message, e); } }
From source file:org.apache.cocoon.transformation.TraxTransformer.java
/** * Set the <code>XMLConsumer</code> that will receive XML data. *//*from w ww. jav a 2 s. c o m*/ public void setConsumer(XMLConsumer consumer) { if (this.transformerHandler == null) { try { this.transformerHandler = this.xsltProcessor.getTransformerHandler(this.inputSource); } catch (XSLTProcessorException se) { // the exception will be thrown during startDocument() this.exceptionDuringSetConsumer = new SAXException( "Unable to get transformer handler for " + this.inputSource.getURI(), se); return; } } final Map map = getLogicSheetParameters(); if (map != null) { final javax.xml.transform.Transformer transformer = this.transformerHandler.getTransformer(); final Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { final Map.Entry entry = (Entry) iterator.next(); transformer.setParameter((String) entry.getKey(), entry.getValue()); } } super.setContentHandler(this.transformerHandler); super.setLexicalHandler(this.transformerHandler); if (this.transformerHandler instanceof LogEnabled) { ((LogEnabled) this.transformerHandler).enableLogging(getLogger()); } // According to TrAX specs, all TransformerHandlers are LexicalHandlers final SAXResult result = new SAXResult(consumer); result.setLexicalHandler(consumer); this.transformerHandler.setResult(result); this.errorListener = new TraxErrorListener(getLogger(), this.inputSource.getURI()); this.transformerHandler.getTransformer().setErrorListener(this.errorListener); }
From source file:org.apache.cocoon.transformation.XSLTTransformer.java
/** * Set the <code>XMLConsumer</code> that will receive XML data. *//*www.j av a2s. com*/ public void setConsumer(XMLConsumer consumer) { if (this.transformerHandler == null) { try { this.transformerHandler = this.xsltProcessor.getTransformerHandler(this.inputSource); } catch (XSLTProcessorException se) { // the exception will be thrown during startDocument() this.exceptionDuringSetConsumer = new SAXException( "Unable to get transformer handler for " + this.inputSource.getURI(), se); return; } } final Map map = getLogicSheetParameters(); if (map != null) { final javax.xml.transform.Transformer transformer = this.transformerHandler.getTransformer(); final Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { final Map.Entry entry = (Entry) iterator.next(); transformer.setParameter((String) entry.getKey(), entry.getValue()); } } super.setContentHandler(this.transformerHandler); super.setLexicalHandler(this.transformerHandler); // Is there even single implementation of LogEnabled TransformerHandler? if (this.transformerHandler instanceof LogEnabled) { ((LogEnabled) this.transformerHandler).enableLogging(new CLLoggerWrapper(getLogger())); } // According to TrAX specs, all TransformerHandlers are LexicalHandlers final SAXResult result = new SAXResult(consumer); result.setLexicalHandler(consumer); this.transformerHandler.setResult(result); this.errorListener = new TraxErrorListener(this.inputSource.getURI()); this.transformerHandler.getTransformer().setErrorListener(this.errorListener); }
From source file:org.apache.fop.cli.InputHandler.java
/** * Transforms the input document to the input format expected by FOP using XSLT. * @param result the Result object where the result of the XSL transformation is sent to * @throws FOPException in case of an error during processing *///from www . j a v a 2 s .c o m protected void transformTo(Result result) throws FOPException { try { // Setup XSLT TransformerFactory factory = TransformerFactory.newInstance(); if (uriResolver != null) { factory.setURIResolver(uriResolver); } factory.setErrorListener(this); Transformer transformer; Source xsltSource = createXSLTSource(); if (xsltSource == null) { // FO Input transformer = factory.newTransformer(); } else { // XML/XSLT input transformer = factory.newTransformer(xsltSource); // Set the value of parameters, if any, defined for stylesheet if (xsltParams != null) { for (int i = 0; i < xsltParams.size(); i += 2) { transformer.setParameter((String) xsltParams.elementAt(i), (String) xsltParams.elementAt(i + 1)); } } } transformer.setErrorListener(this); // Create a SAXSource from the input Source file Source src = createMainSource(); // Start XSLT transformation and FOP processing transformer.transform(src, result); } catch (Exception e) { throw new FOPException(e); } }
From source file:org.apache.fop.memory.MemoryEater.java
private void eatMemory(int callIndex, File foFile, int replicatorRepeats) throws Exception { Source src = new StreamSource(foFile); Transformer transformer = replicatorTemplates.newTransformer(); transformer.setParameter("repeats", new Integer(replicatorRepeats)); OutputStream out = new NullOutputStream(); //write to /dev/nul try {/*from w w w . j a v a 2 s. com*/ FOUserAgent userAgent = fopFactory.newFOUserAgent(); userAgent.setBaseURL(foFile.getParentFile().toURI().toURL().toExternalForm()); Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out); Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(src, res); stats.notifyPagesProduced(fop.getResults().getPageCount()); if (callIndex == 0) { System.out.println(foFile.getName() + " generates " + fop.getResults().getPageCount() + " pages."); } stats.checkStats(); } finally { IOUtils.closeQuietly(out); } }
From source file:org.apache.fop.tools.EventProducerCollectorTask.java
/** * Updates the translation file with new entries for newly found event producer methods. * @param modelFile the model file to use * @throws IOException if an I/O error occurs *//*from w ww .ja va2 s.c om*/ protected void updateTranslationFile(File modelFile) throws IOException { try { boolean resultExists = getTranslationFile().exists(); SAXTransformerFactory tFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); //Generate fresh generated translation file as template Source src = new StreamSource(modelFile.toURI().toURL().toExternalForm()); StreamSource xslt1 = new StreamSource(getClass().getResourceAsStream(MODEL2TRANSLATION)); if (xslt1.getInputStream() == null) { throw new FileNotFoundException(MODEL2TRANSLATION + " not found"); } DOMResult domres = new DOMResult(); Transformer transformer = tFactory.newTransformer(xslt1); transformer.transform(src, domres); final Node generated = domres.getNode(); Node sourceDocument; if (resultExists) { //Load existing translation file into memory (because we overwrite it later) src = new StreamSource(getTranslationFile().toURI().toURL().toExternalForm()); domres = new DOMResult(); transformer = tFactory.newTransformer(); transformer.transform(src, domres); sourceDocument = domres.getNode(); } else { //Simply use generated as source document sourceDocument = generated; } //Generate translation file (with potentially new translations) src = new DOMSource(sourceDocument); //The following triggers a bug in older Xalan versions //Result res = new StreamResult(getTranslationFile()); OutputStream out = new java.io.FileOutputStream(getTranslationFile()); out = new java.io.BufferedOutputStream(out); Result res = new StreamResult(out); try { StreamSource xslt2 = new StreamSource(getClass().getResourceAsStream(MERGETRANSLATION)); if (xslt2.getInputStream() == null) { throw new FileNotFoundException(MERGETRANSLATION + " not found"); } transformer = tFactory.newTransformer(xslt2); transformer.setURIResolver(new URIResolver() { public Source resolve(String href, String base) throws TransformerException { if ("my:dom".equals(href)) { return new DOMSource(generated); } return null; } }); if (resultExists) { transformer.setParameter("generated-url", "my:dom"); } transformer.transform(src, res); if (resultExists) { log("Translation file updated: " + getTranslationFile()); } else { log("Translation file generated: " + getTranslationFile()); } } finally { IOUtils.closeQuietly(out); } } catch (TransformerException te) { throw new IOException(te.getMessage()); } }
From source file:org.apache.fop.tools.fontlist.FontListMain.java
private void generateXML(SortedMap fontFamilies, File outFile, String singleFamily) throws TransformerConfigurationException, SAXException, IOException { SAXTransformerFactory tFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); TransformerHandler handler;//from w w w.j av a 2s . com if (this.mode == GENERATE_XML) { handler = tFactory.newTransformerHandler(); } else { URL url = getClass().getResource("fonts2fo.xsl"); if (url == null) { throw new FileNotFoundException("Did not find resource: fonts2fo.xsl"); } handler = tFactory.newTransformerHandler(new StreamSource(url.toExternalForm())); } if (singleFamily != null) { Transformer transformer = handler.getTransformer(); transformer.setParameter("single-family", singleFamily); } OutputStream out = new java.io.FileOutputStream(outFile); out = new java.io.BufferedOutputStream(out); if (this.mode == GENERATE_RENDERED) { handler.setResult(new SAXResult(getFOPContentHandler(out))); } else { handler.setResult(new StreamResult(out)); } try { GenerationHelperContentHandler helper = new GenerationHelperContentHandler(handler, null); FontListSerializer serializer = new FontListSerializer(); serializer.generateSAX(fontFamilies, singleFamily, helper); } finally { IOUtils.closeQuietly(out); } }
From source file:org.apache.nifi.processors.standard.TransformXml.java
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { final FlowFile original = session.get(); if (original == null) { return;//ww w .j a v a2s . c o m } final ComponentLog logger = getLogger(); final StopWatch stopWatch = new StopWatch(true); final String path = context.getProperty(XSLT_FILE_NAME).isSet() ? context.getProperty(XSLT_FILE_NAME).evaluateAttributeExpressions(original).getValue() : context.getProperty(XSLT_CONTROLLER_KEY).evaluateAttributeExpressions(original).getValue(); final Boolean indentOutput = context.getProperty(INDENT_OUTPUT).asBoolean(); lookupService.set(context.getProperty(XSLT_CONTROLLER).asControllerService(LookupService.class)); try { FlowFile transformed = session.write(original, new StreamCallback() { @Override public void process(final InputStream rawIn, final OutputStream out) throws IOException { try (final InputStream in = new BufferedInputStream(rawIn)) { final Templates templates; if (cache != null) { templates = cache.get(path); } else { templates = newTemplates(context, path); } final Transformer transformer = templates.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, (indentOutput ? "yes" : "no")); // pass all dynamic properties to the transformer for (final Map.Entry<PropertyDescriptor, String> entry : context.getProperties() .entrySet()) { if (entry.getKey().isDynamic()) { String value = context.newPropertyValue(entry.getValue()) .evaluateAttributeExpressions(original).getValue(); transformer.setParameter(entry.getKey().getName(), value); } } // use a StreamSource with Saxon StreamSource source = new StreamSource(in); StreamResult result = new StreamResult(out); transformer.transform(source, result); } catch (final Exception e) { throw new IOException(e); } } }); session.transfer(transformed, REL_SUCCESS); session.getProvenanceReporter().modifyContent(transformed, stopWatch.getElapsed(TimeUnit.MILLISECONDS)); logger.info("Transformed {}", new Object[] { original }); } catch (ProcessException e) { logger.error("Unable to transform {} due to {}", new Object[] { original, e }); session.transfer(original, REL_FAILURE); } }
From source file:org.apache.ode.utils.xsl.XslTransformHandler.java
/** * Transforms a Source document to a result using the XSL stylesheet referenced * by the provided URI. The stylesheet MUST have been parsed previously. * @param uri referencing the stylesheet * @param source XML document//w ww.ja v a2 s . co m * @param parameters passed to the stylesheet * @param resolver used to resolve includes and imports * @return result of the transformation (XSL, HTML or text depending of the output method specified in stylesheet. */ public Object transform(QName processQName, URI uri, Source source, Map<QName, Object> parameters, URIResolver resolver) { Templates tm; synchronized (_templateCache) { tm = (Templates) _templateCache.get(processQName, uri); } if (tm == null) throw new XslTransformException("XSL sheet" + uri + " has not been parsed before transformation!"); try { Transformer tf = tm.newTransformer(); tf.setURIResolver(resolver); if (parameters != null) { for (Map.Entry<QName, Object> param : parameters.entrySet()) { tf.setParameter(param.getKey().getLocalPart(), param.getValue()); } } String method = tf.getOutputProperties().getProperty("method"); if (method == null || "xml".equals(method)) { DOMResult result = new DOMResult(); tf.transform(source, result); Node node = result.getNode(); if (node.getNodeType() == Node.DOCUMENT_NODE) node = ((Document) node).getDocumentElement(); if (__log.isDebugEnabled()) __log.debug("Returned node: type=" + node.getNodeType() + ", " + DOMUtils.domToString(node)); return node; } else { // text and html outputs are handled the same way StringWriter writerResult = new StringWriter(); StreamResult result = new StreamResult(writerResult); tf.transform(source, result); writerResult.flush(); String output = writerResult.toString(); if (__log.isDebugEnabled()) __log.debug("Returned string: " + output); return output; } } catch (TransformerConfigurationException e) { throw new XslTransformException(e); } catch (TransformerException e) { throw new XslTransformException("XSL Transformation failed!", e); } }
From source file:org.apache.synapse.mediators.transform.XSLTMediator.java
/** * Set the properties defined in the mediator as parameters on the stylesheet. * // www. j ava2 s . c o m * @param transformer Transformer instance * @param synCtx MessageContext instance * @param synLog SynapseLog instance */ private void applyProperties(Transformer transformer, MessageContext synCtx, SynapseLog synLog) { for (MediatorProperty prop : properties) { if (prop != null) { String value; if (prop.getValue() != null) { value = prop.getValue(); } else { value = prop.getExpression().stringValueOf(synCtx); } if (synLog.isTraceOrDebugEnabled()) { if (value == null) { synLog.traceOrDebug("Not setting parameter '" + prop.getName() + "'"); } else { synLog.traceOrDebug("Setting parameter '" + prop.getName() + "' to '" + value + "'"); } } if (value != null) { transformer.setParameter(prop.getName(), value); } } } }