List of usage examples for javax.xml.transform Transformer setParameter
public abstract void setParameter(String name, Object value);
From source file:net.sourceforge.vulcan.core.support.AbstractProjectDomBuilder.java
public String transform(Document document, Map<String, ?> transformParameters, Locale locale, String format, Result result) throws SAXException, IOException, TransformerException, NoSuchTransformFormatException { final Transformer transformer = createTransformer(format); if (transformParameters != null) { for (String key : transformParameters.keySet()) { transformer.setParameter(key, transformParameters.get(key)); }//w w w . j a v a2 s . c o m } transformer.transform(new JDOMSource(document), result); return transformer.getOutputProperty(OutputKeys.MEDIA_TYPE); }
From source file:nl.b3p.catalog.xml.mdeXml2Html.java
private static Document transformIntern(Document doc, String xslName, Boolean viewMode, boolean ignoreAllowed) throws JDOMException, IOException, TransformerConfigurationException, TransformerException { log.debug("XML before transformation with '" + xslName + "':\n" + DocumentHelper.getDocumentString(doc)); Templates aTemplates = null;//from w w w . ja v a2 s . co m if (!transformerTemplates.containsKey(xslName)) { InputStream is = getXslStream(xslName); if (is != null) { if (transformerFactory == null) { transformerFactory = TransformerFactory.newInstance(); } aTemplates = transformerFactory.newTemplates(new StreamSource(is)); } transformerTemplates.put(xslName, aTemplates); } else { aTemplates = transformerTemplates.get(xslName); } if (aTemplates == null) { if (ignoreAllowed) { // ignore transformer return doc; } else { throw new TransformerConfigurationException( "Transformer [" + xslName + "] is missing from configuration!"); } } Transformer t = aTemplates.newTransformer(); Map<String, String> params = CatalogAppConfig.getConfig().getMdeConfig(); if (params != null) { for (Map.Entry<String, String> param : params.entrySet()) { t.setParameter(param.getKey(), param.getValue()); } if (viewMode != null) { t.setParameter("globalReadonly_init", viewMode.toString()); } } JDOMResult result = new JDOMResult(); t.transform(new JDOMSource(doc), result); log.debug("XML after transformation with '" + xslName + "':\n" + DocumentHelper.getDocumentString(result.getDocument())); return result.getDocument(); }
From source file:nl.clockwork.mule.common.transformer.AbstractXSLTransformer.java
@Override public Object transform(MuleMessage message, String outputEncoding) throws TransformerException { try {//from w w w. j a v a2 s. c om Transformer transformer = templates.newTransformer(); for (String name : parameters.keySet()) transformer.setParameter(name, parameters.get(name)); StreamSource xmlsource = new StreamSource(new StringReader(message.toString())); Writer writer = new StringWriter(); StreamResult output = new StreamResult(writer); transformer.transform(xmlsource, output); writer.flush(); message.setPayload(writer.toString()); return message; } catch (Exception e) { throw new TransformerException(this, e); } }
From source file:nl.nn.adapterframework.util.XmlUtils.java
/** * sets all the parameters of the transformer using a Map with parameter values. */// w w w . ja v a 2 s. c o m public static void setTransformerParameters(Transformer t, Map parameters) { t.clearParameters(); if (parameters == null) { return; } for (Iterator it = parameters.keySet().iterator(); it.hasNext();) { String name = (String) it.next(); Object value = parameters.get(name); if (value != null) { t.setParameter(name, value); log.debug("setting parameter [" + name + "] on transformer"); } else { log.info("omitting setting of parameter [" + name + "] on transformer, as it has a null-value"); } } }
From source file:org.alfresco.repo.template.XSLTProcessor.java
/** * @param templateSource/*from w w w. ja v a2 s . c o m*/ * @param model * @param out */ private void process(TemplateSource templateSource, Object model, Writer out) { if ((model == null) || !XSLTemplateModel.class.isAssignableFrom(model.getClass())) { throw new IllegalArgumentException("\"model\" must be an XSLTemplateModel object: " + model); } XSLTemplateModel xsltModel = (XSLTemplateModel) model; System.setProperty("org.apache.xalan.extensions.bsf.BSFManager", BSFManager.class.getName()); Document xslTemplate; try { xslTemplate = XMLUtil.parse(templateSource.getReader(defaultEncoding)); } catch (IOException ex) { throw new TemplateException(MSG_UNABLE_TO_READ_TEMPLATE, new Object[] { ex.getMessage() }, ex); } catch (SAXException sax) { throw new TemplateException(MSG_UNABLE_TO_PARSE_TEMPLATE, new Object[] { sax.getMessage() }, sax); } finally { try { templateSource.close(); } catch (IOException ex) { // There's little to be done here. Log it and carry on log.warn("Error while trying to close template stream", ex); } } List<String> scriptIds = addScripts(xsltModel, xslTemplate); addParameters(xsltModel, xslTemplate); final LinkedList<TransformerException> errors = new LinkedList<TransformerException>(); final ErrorListener errorListener = new ErrorListener() { public void error(final TransformerException te) throws TransformerException { log.debug("error " + te.getMessageAndLocation()); errors.add(te); } public void fatalError(final TransformerException te) throws TransformerException { log.debug("fatalError " + te.getMessageAndLocation()); throw te; } public void warning(final TransformerException te) throws TransformerException { log.debug("warning " + te.getMessageAndLocation()); errors.add(te); } }; final TemplateSource resourceSource = templateSource; final URIResolver uriResolver = new URIResolver() { public Source resolve(final String href, String base) throws TransformerException { if (log.isDebugEnabled()) { log.debug("request to resolve href " + href + " using base " + base); } InputStream in = null; try { in = resourceSource.getResource(href); if (in == null) { throw new TransformerException("unable to resolve href " + href); } Document d = XMLUtil.parse(in); if (log.isDebugEnabled()) { log.debug("loaded " + XMLUtil.toString(d)); } return new DOMSource(d); } catch (TransformerException ex) { throw ex; } catch (Exception e) { throw new TransformerException("unable to load " + href, e); } } }; Source xmlSource = this.getXMLSource(xsltModel); Transformer t = null; try { final TransformerFactory tf = TransformerFactory.newInstance(); tf.setErrorListener(errorListener); tf.setURIResolver(uriResolver); if (log.isDebugEnabled()) { log.debug("xslTemplate: \n" + XMLUtil.toString(xslTemplate)); } t = tf.newTransformer(new DOMSource(xslTemplate)); if (errors.size() != 0) { final StringBuilder msg = new StringBuilder("errors encountered creating tranformer ... \n"); for (TransformerException te : errors) { msg.append(te.getMessageAndLocation()).append("\n"); } throw new TemplateException(msg.toString()); } t.setErrorListener(errorListener); t.setURIResolver(uriResolver); t.setParameter("versionParam", "2.0"); } catch (TransformerConfigurationException tce) { log.error(tce); throw new TemplateException(tce.getMessage(), tce); } try { t.transform(xmlSource, new StreamResult(out)); } catch (TransformerException te) { log.error(te.getMessageAndLocation()); throw new TemplateException(te.getMessageAndLocation(), te); } catch (Exception e) { log.error("unexpected error " + e); throw new TemplateException(e.getMessage(), e); } finally { //Clear out any scripts that were created for this transform if (!scriptIds.isEmpty()) { XSLTProcessorMethodInvoker.removeMethods(scriptIds); } } if (errors.size() != 0) { final StringBuilder msg = new StringBuilder("errors encountered during transformation ... \n"); for (TransformerException te : errors) { msg.append(te.getMessageAndLocation()).append("\n"); } throw new TemplateException(msg.toString()); } }
From source file:org.alfresco.web.forms.XSLTRenderingEngine.java
public void render(final Map<QName, Object> model, final RenderingEngineTemplate ret, final Result result) throws IOException, RenderingEngine.RenderingException, SAXException { System.setProperty("org.apache.xalan.extensions.bsf.BSFManager", BSFManager.class.getName()); Document xslTemplate = null;/* w w w . ja v a 2 s. com*/ try { xslTemplate = XMLUtil.parse(ret.getInputStream()); } catch (final SAXException sax) { throw new RenderingEngine.RenderingException(sax); } this.addScripts(model, xslTemplate); this.addParameters(model, xslTemplate); final LinkedList<TransformerException> errors = new LinkedList<TransformerException>(); final ErrorListener errorListener = new ErrorListener() { public void error(final TransformerException te) throws TransformerException { LOGGER.debug("error " + te.getMessageAndLocation()); errors.add(te); } public void fatalError(final TransformerException te) throws TransformerException { LOGGER.debug("fatalError " + te.getMessageAndLocation()); throw te; } public void warning(final TransformerException te) throws TransformerException { LOGGER.debug("warning " + te.getMessageAndLocation()); errors.add(te); } }; // create a uri resolver to resolve document() calls to the virtualized // web application final URIResolver uriResolver = new URIResolver() { public Source resolve(final String href, String base) throws TransformerException { LOGGER.debug("request to resolve href " + href + " using base " + base); final RenderingEngine.TemplateResourceResolver trr = (RenderingEngine.TemplateResourceResolver) model .get(RenderingEngineTemplateImpl.PROP_RESOURCE_RESOLVER); InputStream in = null; try { in = trr.resolve(href); } catch (Exception e) { throw new TransformerException("unable to load " + href, e); } if (in == null) { throw new TransformerException("unable to resolve href " + href); } try { final Document d = XMLUtil.parse(in); if (LOGGER.isDebugEnabled()) LOGGER.debug("loaded " + XMLUtil.toString(d)); return new DOMSource(d); } catch (Exception e) { throw new TransformerException("unable to load " + href, e); } } }; Source xmlSource = this.getXMLSource(model); Transformer t = null; try { final TransformerFactory tf = TransformerFactory.newInstance(); tf.setErrorListener(errorListener); tf.setURIResolver(uriResolver); if (LOGGER.isDebugEnabled()) { LOGGER.debug("xslTemplate: \n" + XMLUtil.toString(xslTemplate)); } t = tf.newTransformer(new DOMSource(xslTemplate)); if (errors.size() != 0) { final StringBuilder msg = new StringBuilder("errors encountered creating tranformer ... \n"); for (TransformerException te : errors) { msg.append(te.getMessageAndLocation()).append("\n"); } throw new RenderingEngine.RenderingException(msg.toString()); } t.setErrorListener(errorListener); t.setURIResolver(uriResolver); t.setParameter("versionParam", "2.0"); } catch (TransformerConfigurationException tce) { LOGGER.error(tce); throw new RenderingEngine.RenderingException(tce); } try { t.transform(xmlSource, result); } catch (TransformerException te) { LOGGER.error(te.getMessageAndLocation()); throw new RenderingEngine.RenderingException(te); } catch (Exception e) { LOGGER.error("unexpected error " + e); throw new RenderingEngine.RenderingException(e); } if (errors.size() != 0) { final StringBuilder msg = new StringBuilder("errors encountered during transformation ... \n"); for (TransformerException te : errors) { msg.append(te.getMessageAndLocation()).append("\n"); } throw new RenderingEngine.RenderingException(msg.toString()); } }
From source file:org.ambraproject.service.xml.XMLServiceImpl.java
/** * Get a translet, compiled stylesheet, for the xslTemplate. If the doc is null * use the default template. If the doc is not null then get the DTD version. * IF the DTD version does not exist use the default template else use the * template associated with that version. * * @param doc the dtd version of document * @return Translet for the xslTemplate. * @throws javax.xml.transform.TransformerException TransformerException. *//*from w w w .j a v a2s . c o m*/ private Transformer getTranslet(Document doc) throws TransformerException, URISyntaxException, IOException { Transformer transformer; // key is "" if the Attribute does not exist String key = (doc == null) ? "default" : doc.getDocumentElement().getAttribute("dtd-version").trim(); if ((!xslTemplateMap.containsKey(key)) || (key.equalsIgnoreCase(""))) { transformer = this.translet.newTransformer(); } else { Templates translet; String templateName = xslTemplateMap.get(key); // set the Templates final TransformerFactory tFactory = TransformerFactory.newInstance(); //Because we have XSL sheets with import statements. I override the URI resolver //here so the factory knows to look inside the jar files for these files tFactory.setURIResolver(new XMLServiceURIResolver()); //TODO: (performace) We should cache the translets when this class is initialized. We don't need //to parse the XSLs for every transform. translet = tFactory.newTemplates(getResourceAsStreamSource(templateName)); transformer = translet.newTransformer(); } transformer.setParameter("pubAppContext", configuration.getString("ambra.platform.appContext", "")); return transformer; }
From source file:org.ambraproject.wombat.service.ArticleTransformServiceImpl.java
private void setCitedArticles(List<Reference> references, XMLReader xmlReader, Transformer transformer) throws IOException { References refs = new References(); refs.setReferences(references);//from w w w . ja v a 2 s.co m StringWriter sw = new StringWriter(); try { JAXBContext jaxbContext = JAXBContext.newInstance(References.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); jaxbMarshaller.marshal(refs, sw); } catch (JAXBException jaxbE) { throw new RuntimeException(jaxbE); } String metadataXml = sw.toString(); SAXSource saxSourceMeta = new SAXSource(xmlReader, new InputSource(IOUtils.toInputStream(metadataXml))); transformer.setParameter("refs", saxSourceMeta); }
From source file:org.ambraproject.wombat.service.ArticleTransformServiceImpl.java
private void setVersionLink(ArticlePointer articleId, Transformer transformer) { final String versionLinkParameter; if (articleId.isOriginalRequestVersioned()) { final String versionType; final int versionNumber; OptionalInt revisionNumber = articleId.getRevisionNumber(); if (revisionNumber.isPresent()) { versionType = DoiVersionArgumentResolver.REVISION_PARAMETER; versionNumber = revisionNumber.getAsInt(); } else {//from ww w. j a va 2 s .c om versionType = DoiVersionArgumentResolver.INGESTION_PARAMETER; versionNumber = articleId.getIngestionNumber(); } // Pre-build a snippet of a URL, meant to be concatenated onto a link in an HTML attribute. // Assumes that it will always be preceded by at least one other parameter, // else we would need a question mark instead of an ampersand. // TODO: Build the URL syntax in XSLT instead versionLinkParameter = "&" + versionType + "=" + versionNumber; } else { versionLinkParameter = ""; } transformer.setParameter("versionLinkParameter", versionLinkParameter); }
From source file:org.apache.camel.processor.cache.CacheBasedXPathReplacer.java
public void process(Exchange exchange) throws Exception { // Cache the buffer to the specified Cache against the specified key cacheManager = new CacheManagerFactory().instantiateCacheManager(); if (isValid(cacheManager, cacheName, key)) { cache = cacheManager.getCache(cacheName); if (LOG.isDebugEnabled()) { LOG.debug("Replacing XPath value " + xpath + "in Message with value stored against key " + key + " in CacheName " + cacheName); }// ww w . ja v a 2s. c o m exchange.getIn().setHeader("CACHE_KEY", key); Object body = exchange.getIn().getBody(); InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, body); try { document = exchange.getContext().getTypeConverter().convertTo(Document.class, exchange, is); } finally { IOHelper.close(is, "is", LOG); } InputStream cis = exchange.getContext().getTypeConverter().convertTo(InputStream.class, cache.get(key).getObjectValue()); try { Document cacheValueDocument = exchange.getContext().getTypeConverter().convertTo(Document.class, exchange, cis); // Create/setup the Transformer XmlConverter xmlConverter = new XmlConverter(); String xslString = IOConverter.toString(new File("./src/main/resources/xpathreplacer.xsl"), exchange); xslString = xslString.replace("##match_token##", xpath); Source xslSource = xmlConverter.toStreamSource(new StringReader(xslString)); TransformerFactory transformerFactory = xmlConverter.createTransformerFactory(); Transformer transformer = transformerFactory.newTransformer(xslSource); source = xmlConverter.toDOMSource(document); result = new DOMResult(); transformer.setParameter("cacheValue", cacheValueDocument); transformer.transform(source, result); } finally { IOHelper.close(cis, "cis", LOG); } } // DOMSource can be converted to byte[] by camel type converter mechanism DOMSource dom = new DOMSource(result.getNode()); exchange.getIn().setBody(dom, byte[].class); }