Re: [xsl] Is there any way to make this faster

Subject: Re: [xsl] Is there any way to make this faster
From: "Ritu" <rkama@xxxxxxxxxxx>
Date: Wed, 12 Feb 2003 09:03:27 -0600
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@xxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of TP
> Sent: Wednesday, February 12, 2003 8:51 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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


Current Thread