List of usage examples for javax.xml.transform Templates newTransformer
Transformer newTransformer() throws TransformerConfigurationException;
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; if (!transformerTemplates.containsKey(xslName)) { InputStream is = getXslStream(xslName); if (is != null) { if (transformerFactory == null) { transformerFactory = TransformerFactory.newInstance(); }// w w w.j a v a 2s .c om 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: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 a 2 s.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.apache.axis2.util.XMLPrettyPrinter.java
/** * Pretty prints contents of the xml file. * * @param file// w w w . jav a2s .c om */ public static void prettify(final File file) { InputStream inputStream = null; FileOutputStream outputStream = null; byte[] byteArray = null; try { FileInputStream fin = new FileInputStream(file); byteArray = IOUtils.getStreamAsByteArray(fin); fin.close(); inputStream = new ByteArrayInputStream(byteArray); outputStream = new FileOutputStream(file); Source stylesheetSource = new StreamSource(new ByteArrayInputStream(prettyPrintStylesheet.getBytes())); Source xmlSource = new StreamSource(inputStream); TransformerFactory tf = TransformerFactory.newInstance(); Templates templates = tf.newTemplates(stylesheetSource); Transformer transformer = templates.newTransformer(); transformer.setErrorListener(new ErrorListener() { public void warning(TransformerException exception) throws TransformerException { log.warn("Exception occurred while trying to pretty print file " + file, exception); } public void error(TransformerException exception) throws TransformerException { log.error("Exception occurred while trying to pretty print file " + file, exception); } public void fatalError(TransformerException exception) throws TransformerException { log.error("Exception occurred while trying to pretty print file " + file, exception); } }); transformer.transform(xmlSource, new StreamResult(outputStream)); inputStream.close(); outputStream.close(); log.debug("Pretty printed file : " + file); } catch (Throwable t) { log.debug("Exception occurred while trying to pretty print file " + file, t); /* if outputStream is already created, close them, because we are going reassign * different value to that. It will leak the file handle (specially in windows, since * deleting is going to be an issue) */ if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { log.debug(e.getMessage(), e); } } try { if (byteArray != null) { outputStream = new FileOutputStream(file); outputStream.write(byteArray); } } catch (IOException e) { log.debug(e.getMessage(), e); } } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { log.debug(e.getMessage(), e); } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { log.debug(e.getMessage(), e); } } } }
From source file:org.apache.axis2.util.XMLPrettyPrinter.java
public static void prettify(OMElement wsdlElement, OutputStream out) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); wsdlElement.serialize(baos);//w ww . j av a 2 s .co m Source stylesheetSource = new StreamSource(new ByteArrayInputStream(prettyPrintStylesheet.getBytes())); Source xmlSource = new StreamSource(new ByteArrayInputStream(baos.toByteArray())); TransformerFactory tf = TransformerFactory.newInstance(); Templates templates = tf.newTemplates(stylesheetSource); Transformer transformer = templates.newTransformer(); transformer.transform(xmlSource, new StreamResult(out)); }
From source file:org.apache.fop.intermediate.AreaTreeParserTestCase.java
/** {@inheritDoc} */ protected Document buildIntermediateDocument(Templates templates) throws Exception { Transformer transformer = templates.newTransformer(); setErrorListener(transformer);// w ww . jav a 2s . c om //Set up XMLRenderer to render to a DOM TransformerHandler handler = testAssistant.getTransformerFactory().newTransformerHandler(); DOMResult domResult = new DOMResult(); handler.setResult(domResult); FOUserAgent userAgent = createUserAgent(); //Create an instance of the target renderer so the XMLRenderer can use its font setup Renderer targetRenderer = userAgent.getRendererFactory().createRenderer(userAgent, getTargetMIME()); XMLRenderer renderer = new XMLRenderer(userAgent); renderer.mimicRenderer(targetRenderer); renderer.setContentHandler(handler); userAgent.setRendererOverride(renderer); Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_AREA_TREE, userAgent); Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(new DOMSource(testDoc), res); return (Document) domResult.getNode(); }
From source file:org.apache.fop.threading.FOProcessorImpl.java
/** {@inheritDoc} */ public void process(Source src, Templates templates, OutputStream out) throws org.apache.fop.apps.FOPException, java.io.IOException { FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); foUserAgent.setBaseURL(src.getSystemId()); try {//w w w . jav a2 s. com URL url = new URL(src.getSystemId()); String filename = FilenameUtils.getName(url.getPath()); foUserAgent.getEventBroadcaster().addEventListener(new AvalonAdapter(getLogger(), filename)); } catch (MalformedURLException mfue) { throw new RuntimeException(mfue); } Fop fop = fopFactory.newFop(this.mime, foUserAgent, out); try { Transformer transformer; if (templates == null) { transformer = factory.newTransformer(); } else { transformer = templates.newTransformer(); } Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(src, res); } catch (TransformerException e) { throw new FOPException(e); } }
From source file:org.apache.fop.threading.IFProcessorImpl.java
/** {@inheritDoc} * @throws IFException *//*from w ww . j a va 2s . c o m*/ public void process(Source src, Templates templates, OutputStream out) throws org.apache.fop.apps.FOPException, java.io.IOException, IFException { FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); foUserAgent.setBaseURL(src.getSystemId()); try { URL url = new URL(src.getSystemId()); String filename = FilenameUtils.getName(url.getPath()); foUserAgent.getEventBroadcaster().addEventListener(new AvalonAdapter(getLogger(), filename)); } catch (MalformedURLException mfue) { throw new RuntimeException(mfue); } //Setup target handler IFDocumentHandler targetHandler = fopFactory.getRendererFactory().createDocumentHandler(foUserAgent, mime); //Setup fonts IFUtil.setupFonts(targetHandler); targetHandler.setResult(new StreamResult(out)); try { Transformer transformer; if (templates == null) { transformer = factory.newTransformer(); } else { transformer = templates.newTransformer(); } IFParser parser = new IFParser(); ContentHandler contentHandler = parser.getContentHandler(targetHandler, foUserAgent); Result res = new SAXResult(contentHandler); transformer.transform(src, res); } catch (TransformerException e) { throw new FOPException(e); } }
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;//from w w w.j a v a 2 s . 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/*from www.j a v a 2 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.struts2.views.xslt.XSLTResult.java
public void execute(ActionInvocation invocation) throws Exception { long startTime = System.currentTimeMillis(); String location = getStylesheetLocation(); if (location == null) { throw new IllegalArgumentException("Parameter 'stylesheetLocation' cannot be null!"); }/*from ww w.jav a2 s.c o m*/ if (parse) { ValueStack stack = ActionContext.getContext().getValueStack(); location = TextParseUtil.translateVariables(location, stack); } try { HttpServletResponse response = ServletActionContext.getResponse(); response.setStatus(status); response.setCharacterEncoding(encoding); PrintWriter writer = response.getWriter(); // Create a transformer for the stylesheet. Templates templates = null; Transformer transformer; if (location != null) { templates = getTemplates(location); transformer = templates.newTransformer(); } else { transformer = TransformerFactory.newInstance().newTransformer(); } transformer.setURIResolver(getURIResolver()); transformer.setErrorListener(buildErrorListener()); String mimeType; if (templates == null) { mimeType = "text/xml"; // no stylesheet, raw xml } else { mimeType = templates.getOutputProperties().getProperty(OutputKeys.MEDIA_TYPE); } if (mimeType == null) { // guess (this is a servlet, so text/html might be the best guess) mimeType = "text/html"; } response.setContentType(mimeType); Object result = invocation.getAction(); if (exposedValue != null) { ValueStack stack = invocation.getStack(); result = stack.findValue(exposedValue); } Source xmlSource = getDOMSourceForStack(result); // Transform the source XML to System.out. LOG.debug("xmlSource = {}", xmlSource); transformer.transform(xmlSource, new StreamResult(writer)); writer.flush(); // ...and flush... LOG.debug("Time: {}ms", (System.currentTimeMillis() - startTime)); } catch (Exception e) { LOG.error("Unable to render XSLT Template, '{}'", location, e); throw e; } }