xsl-list
[Top] [All Lists]

Re: Is there any way to make this faster

2003-02-12 08:03:27
Hi,

You are exactly right. In the init you can load all the XSL in some form of
cache in memory and use them for each transform. The pre-compiled XSLs will
be much faster than the current approach.

The way to do it is as follows:

//Init
//Initialization  - assuming that Length contains the number of XSLs to
cache
TransformerFactory tfactory = TransformerFactory.newInstance();
Templates templates[]=new Templates[Length];

//For each XSL
templates[i]=tfactory.newTemplates(new StreamSource(__xslt));

//Run
//For each transformation
try {
        transformer = templates[i].newTransformer();
        StringWriter output=new StringWriter();
   transformer.transform(streamsource[i],new StreamResult(output));

} catch (Exception e) {
        System.out.println(e.toString());


I hope this helps.

Ritu Kama
Sarvega Inc
745, McLintock Dr
Burr Ridge
IL - 60527
----- Original Message -----
From: "Bill Chmura" <Bill(_at_)Explosivo(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Wednesday, February 12, 2003 8:21 AM
Subject: RE: [xsl] Is there any way to make this faster



I'd be interested in an answer to this one also...

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
TP
Sent: Wednesday, February 12, 2003 8:51 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Is there any way to make this faster


I use xalan with servlets. In every doGet I invoke the following code to
transform my xml into html

////////////////////////////////////////////////////////////////////////
////
//////////////////////////////
  TransformerFactory tFactory = TransformerFactory.newInstance();
  final String documentRoot =
getServletConfig().getServletContext().getRealPath("/");
  URIResolverImpl resolver = new URIResolverImpl(documentRoot +
"/WEB-INF/xslt/");
  tFactory.setURIResolver(resolver);
  Source xmlSource = new StreamSource(new StringReader(xml));
  Source xslSource = new StreamSource(new URL("file:" +
finalxsl).openStream());
  javax.xml.transform.Transformer transformer =
tFactory.newTransformer(xslSource);
  transformer.transform(xmlSource, new StreamResult(out));
  cat.debug("RMSServlet:transformToHTML, transformed and leaving");
////////////////////////////////////////////////////////////////////////
////
//////////////////////////////

What i want to know for knowledge sake is what happens when these set of
operations are invoked. What my goal is to figure out, that is there any
way to make this code perform better. For example would it hurt or help
if during init() I get all the xsl into memory and then invoke them my a
hashtable reference during the transform.

Please let me know.

Thanks.

TP.

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list