Re: XSL processor authors - how about this approach?
Eric van der Vlist wrote: > Dylan Walsh wrote: > > > > >Date: Wed, 08 Mar 2000 12:41:47 +0100 > > >From: Eric van der Vlist <vdv@xxxxxxxxxxxx> > > >Subject: Re: NewBie Question - Dynamic XSL > > > > <snip> > > > > >In this architecture, the operation which is taking most of the cycles > > >is the parsing of the XSLT sheet (which can take several seconds) and is > > >most of the time cached. > > > > Has anyone considered this kind of solution for server-side XSL? : > > Take the stylesheet, parse it and generate a custom servlet to perform this > > transformation. Then everytime XML needs to be transformed, this servlet > > could be run. This approach is a bit like JSP. You can do thorough > > optimisation when creating the servlet. It may even be possible to identify > > sheets that don't need random access, and switch to serial mode for those, > > saving memory. > > I would think that having custom generated Java code to move the data around > > would be faster than trying to figure out the stylesheet at run time. Great > > potential here for a performance boost? > > You're right. > > I think I have seen similar approaches mentioned by Resin > (http://www.caucho.com/products/resin/index.html) and also in the Cocoon > mailing list (but I don't think Cocoon is implementing this yet). Well, Resin does load the generated stylesheet class directly and only recompiles it if the XSL sources change. But, as Mike Kay points out, the performance gain is pretty minimal. After all, you only need to compile the stylesheet once when the server starts and most of the stylesheet processing time is spent doing other work. The dynamic XSL idea would be pretty slow (at least for Resin), especially if it's on a per-user preference basis. Instead, with Resin (or Cocoon), you would probably use XML/XSL to generate a JSP page/Servlet to do the database lookup. Part of the stylesheet might look something like: <xsl:template match='/'> <jsp:useBean id='userPref' class='caucho.UserPrefBean'/> <jsp:scriptlet>userPref.init(request)</jsp:scriptlet> <xsl:apply-templates/> </xsl:template> <xsl:template match='author'> <font> <xsl:attribute name='color'><%= userPref.getFavoriteColor() %></xsl:attribute> <xsl:apply-templates/> </font> </xsl:template> userPref.init(request) does whatever database lookup is needed. The generated JSP file looks like: <jsp:useBean id='userPref' class='caucho.UserPrefBean'/> <jsp:scriptlet>userPref.init(request)</jsp:scriptlet> ... <font color='<%= userPref.getFavoriteColor()'>Kurt Vonnegut</font> Once that's compiled into a servlet, it will run as fast as if you created the JSP by hand, bypassing any further XSL processing. Scott Ferguson Caucho Technology XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format