/*
* Created on Sep 13, 2003
*/
package cyrille.xml;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
/**
* @author <a href="mailto:cleclerc@pobox.com">Cyrille Le Clerc</a>
*/
public class TransformerService {
private Map templatesCache = new HashMap();
private Templates getTemplate(URL xsl) throws TransformerConfigurationException, IOException {
Templates templates = (Templates) this.templatesCache.get(xsl);
if (this.templatesCache == null) {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
templates = transformerFactory.newTemplates(new StreamSource(xsl.openStream()));
this.templatesCache.put(xsl, templates);
}
return templates;
}
public void transform(Source source, URL xsl, Result result) throws Exception {
Templates templates = getTemplate(xsl);
Transformer aliceTransformer = templates.newTransformer();
aliceTransformer.transform(source, result);
}
}