List of usage examples for javax.xml.transform TransformerFactory setURIResolver
public abstract void setURIResolver(URIResolver resolver);
From source file:org.apache.solr.util.xslt.TransformerProvider.java
/** Return a Templates object for the given filename */ private Templates getTemplates(ResourceLoader loader, String filename, int cacheLifetimeSeconds) throws IOException { Templates result = null;//from w ww . ja va2 s . c o m lastFilename = null; try { if (log.isDebugEnabled()) { log.debug("compiling XSLT templates:" + filename); } final String fn = "xslt/" + filename; final TransformerFactory tFactory = TransformerFactory.newInstance(); tFactory.setURIResolver(new SystemIdResolver(loader).asURIResolver()); tFactory.setErrorListener(xmllog); final StreamSource src = new StreamSource(loader.openResource(fn), SystemIdResolver.createSystemIdFromResourceName(fn)); try { result = tFactory.newTemplates(src); } finally { // some XML parsers are broken and don't close the byte stream (but they should according to spec) IOUtils.closeQuietly(src.getInputStream()); } } catch (Exception e) { log.error(getClass().getName(), "newTemplates", e); final IOException ioe = new IOException("Unable to initialize Templates '" + filename + "'"); ioe.initCause(e); throw ioe; } lastFilename = filename; lastTemplates = result; cacheExpires = System.currentTimeMillis() + (cacheLifetimeSeconds * 1000); return result; }
From source file:org.apache.struts2.views.xslt.XSLTResult.java
protected Templates getTemplates(final String path) throws TransformerException, IOException { if (path == null) throw new TransformerException("Stylesheet path is null"); Templates templates = templatesCache.get(path); if (noCache || (templates == null)) { synchronized (templatesCache) { URL resource = ServletActionContext.getServletContext().getResource(path); if (resource == null) { throw new TransformerException("Stylesheet " + path + " not found in resources."); }// w ww . j a v a 2 s. co m LOG.debug("Preparing XSLT stylesheet templates: {}", path); TransformerFactory factory = TransformerFactory.newInstance(); factory.setURIResolver(getURIResolver()); factory.setErrorListener(buildErrorListener()); templates = factory.newTemplates(new StreamSource(resource.openStream())); templatesCache.put(path, templates); } } return templates; }
From source file:org.apereo.portal.utils.cache.resource.TemplatesBuilder.java
@Override public LoadedResource<Templates> loadResource(Resource resource) throws IOException { final TransformerFactory transformerFactory = TransformerFactory.newInstance(); if (this.transformerAttributes != null) { for (final Map.Entry<String, Object> attributeEntry : this.transformerAttributes.entrySet()) { transformerFactory.setAttribute(attributeEntry.getKey(), attributeEntry.getValue()); }/*from w w w . ja va 2s.com*/ } final ResourceTrackingURIResolver uriResolver = new ResourceTrackingURIResolver(this.resourceLoader); transformerFactory.setURIResolver(uriResolver); final URI uri = resource.getURI(); final String systemId = uri.toString(); final InputStream stream = resource.getInputStream(); final Templates templates; try { final StreamSource source = new StreamSource(stream, systemId); templates = transformerFactory.newTemplates(source); } catch (TransformerConfigurationException e) { throw new IOException("Failed to parse stream into Templates", e); } finally { IOUtils.closeQuietly(stream); } final Map<Resource, Long> resolvedResources = uriResolver.getResolvedResources(); return new LoadedResourceImpl<Templates>(templates, resolvedResources); }
From source file:org.carrot2.dcs.RestProcessorServlet.java
/** * /* w ww .j a v a2 s .c o m*/ */ private void initXslt(DcsConfig config, ResourceLookup resourceLookup) { final TransformerFactory tFactory = TransformerFactory.newInstance(); tFactory.setURIResolver(new NopURIResolver()); InputStream xsltStream = null; if (StringUtils.isNotBlank(config.xslt)) { IResource resource = resourceLookup.getFirst(config.xslt); if (resource == null) { config.logger.warn( "XSLT stylesheet " + config.xslt + " not found. No XSLT transformation will be applied."); return; } try { xsltStream = resource.open(); xsltTemplates = tFactory.newTemplates(new StreamSource(xsltStream)); config.logger.info("XSL stylesheet loaded successfully from: " + config.xslt); } catch (IOException e) { config.logger.warn("Could not load stylesheet, no XSLT transform will be applied.", e); } catch (TransformerConfigurationException e) { config.logger.warn("Could not load stylesheet, no XSLT transform will be applied", e); } finally { CloseableUtils.close(xsltStream); } } }
From source file:org.carrot2.workbench.core.ui.actions.SaveAsXMLActionDelegate.java
public SaveAsXMLActionDelegate(ProcessingResult result, SearchEditor.SaveOptions options) { this.results = result; this.options = options; final TransformerFactory tFactory = TransformerFactory.newInstance(); tFactory.setURIResolver(new NopURIResolver()); final String xslt = System.getProperty("carrot2.workbench.save-as-xml.xslt"); InputStream xsltStream = null; Transformer t = null;/*www . j a v a2 s.com*/ try { if (StringUtils.isNotBlank(xslt)) { try { xsltStream = new FileInputStream(xslt); t = tFactory.newTransformer(new StreamSource(xsltStream)); } catch (FileNotFoundException e) { Utils.showError(new Status(Status.WARNING, WorkbenchCorePlugin.PLUGIN_ID, "Could not XSLT stylesheet", e)); t = tFactory.newTransformer(); } finally { CloseableUtils.close(xsltStream); } } else { t = tFactory.newTransformer(); } } catch (TransformerConfigurationException e1) { throw ExceptionUtils.wrapAsRuntimeException(e1); } transformer = t; }
From source file:org.mycore.common.content.transformer.MCRXSLTransformer.java
public synchronized void setTransformerFactory(String factoryClass) throws TransformerFactoryConfigurationError { TransformerFactory transformerFactory = Optional.ofNullable(factoryClass) .map(c -> TransformerFactory.newInstance(c, null)).orElseGet(TransformerFactory::newInstance); LOGGER.info("Transformerfactory: " + transformerFactory.getClass().getName()); transformerFactory.setURIResolver(URI_RESOLVER); transformerFactory.setErrorListener(MCRErrorListener.getInstance()); if (transformerFactory.getFeature(SAXSource.FEATURE) && transformerFactory.getFeature(SAXResult.FEATURE)) { this.tFactory = (SAXTransformerFactory) transformerFactory; } else {// w ww . ja v a2 s .c o m throw new MCRConfigurationException("Transformer Factory " + transformerFactory.getClass().getName() + " does not implement SAXTransformerFactory"); } }
From source file:org.pentaho.platform.util.xml.XmlHelper.java
/** * Use the transform specified by xslSrc and transform the document specified by docSrc, and return the resulting * document./*from w w w.j a va 2 s . co m*/ * * @param xslSrc * StreamSrc containing the xsl transform * @param docSrc * StreamSrc containing the document to be transformed * @param params * Map of properties to set on the transform * @param resolver * URIResolver instance to resolve URI's in the output document. * * @return StringBuffer containing the XML results of the transform * @throws TransformerConfigurationException * if the TransformerFactory fails to create a Transformer. * @throws TransformerException * if actual transform fails. */ protected static final StringBuffer transformXml(final StreamSource xslSrc, final StreamSource docSrc, final Map params, final URIResolver resolver) throws TransformerConfigurationException, TransformerException { StringBuffer sb = null; StringWriter writer = new StringWriter(); TransformerFactory tf = TransformerFactory.newInstance(); if (null != resolver) { tf.setURIResolver(resolver); } // TODO need to look into compiling the XSLs... Transformer t = tf.newTransformer(xslSrc); // can throw // TransformerConfigurationException // Start the transformation if (params != null) { Set keys = params.keySet(); Iterator it = keys.iterator(); String key, val; while (it.hasNext()) { key = (String) it.next(); val = (String) params.get(key); if (val != null) { t.setParameter(key, val); } } } t.transform(docSrc, new StreamResult(writer)); // can throw // TransformerException sb = writer.getBuffer(); return sb; }
From source file:org.roda.core.common.RodaUtils.java
/** * INFO 20160711 this method does not cache stylesheet related resources *//* w w w.j a v a 2s . c om*/ public static void applyStylesheet(Reader xsltReader, Reader fileReader, Map<String, String> parameters, Writer result) throws IOException, TransformerException { TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl(); factory.setURIResolver(new RodaURIFileResolver()); Source xsltSource = new StreamSource(xsltReader); Transformer transformer = factory.newTransformer(xsltSource); for (Entry<String, String> parameter : parameters.entrySet()) { transformer.setParameter(parameter.getKey(), parameter.getValue()); } try { XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setEntityResolver(new RodaEntityResolver()); InputSource source = new InputSource(fileReader); Source text = new SAXSource(xmlReader, source); transformer.transform(text, new StreamResult(result)); } catch (SAXException se) { LOGGER.error(se.getMessage(), se); } }
From source file:org.sakaiproject.tool.assessment.qti.util.XmlUtil.java
/** * Create a transformer from a stylesheet * * @param stylesheet Document// ww w . ja v a 2 s. c o m * * @return the Transformer */ public static Transformer createTransformer(Document stylesheet) { if (log.isDebugEnabled()) { log.debug("createTransformer(Document " + stylesheet + ")"); } Transformer transformer = null; TransformerFactory transformerFactory = TransformerFactory.newInstance(); URIResolver resolver = new URIResolver(); transformerFactory.setURIResolver(resolver); try { DOMSource source = new DOMSource(stylesheet); String systemId = "/xml/xsl/report"; source.setSystemId(systemId); transformer = transformerFactory.newTransformer(source); } catch (TransformerConfigurationException e) { log.error(e.getMessage(), e); } return transformer; }
From source file:org.sakaiproject.tool.assessment.qti.util.XmlUtil.java
/** * Create a transformer from a stylesheet * * @param source DOMSource/* w ww. ja v a 2 s . c o m*/ * * @return the Transformer */ public static Transformer createTransformer(DOMSource source) { if (log.isDebugEnabled()) { log.debug("createTransformer(DOMSource " + source + ")"); } Transformer transformer = null; TransformerFactory transformerFactory = TransformerFactory.newInstance(); URIResolver resolver = new URIResolver(); transformerFactory.setURIResolver(resolver); try { transformer = transformerFactory.newTransformer(source); } catch (TransformerConfigurationException e) { log.error(e.getMessage(), e); } return transformer; }