RE: [xsl] [design question]

Subject: RE: [xsl] [design question]
From: "Martinez, Brian" <brian.martinez@xxxxxxxx>
Date: Wed, 5 Feb 2003 08:05:13 -0700
> From: TP [mailto:tpass001@xxxxxxxxxxx]
> Sent: Wednesday, February 05, 2003 6:59 AM
> Subject: Re: [xsl] [design question]
> 
> < snip >
>
> >
> > Could I use import/include to put all the javascript in a 
> separate .js
> file
> > and include it when the stylesheet loads. Would this slow 
> down or fasten
> the
> > process.

I don't know about the impact on performance, but putting client-side
scripts in external files certainly helps in terms of maintenance.  Plus the
browser will typically cache those files locally.

When we need to combine XSLT with our JavaScript, we have found that we can
put them in a separate stylesheet and call it with an HTML <script> tag:

<script language="javascript" src="/trs/trip/home/js_home.xsl"/>

To my embarassment, I had no idea we could invoke our servlet and do
transformations via a src attribute in the <script> tag.  This has made our
lives much easier when writing script that works with a variety of different
site settings.  

Performance depends on a lot of things: the optimizations your processor
uses, how expensive your Xpath is (i.e., are you using a lot of '//' in your
syntax, especially high on the input tree'?  Are you doing this:

<xsl:variable name="foo"><xsl:value-of select="@bar"/></xsl:variable>

and generating a lot of result tree fragments?) and on your app server
setup.  If you cache stylesheets server-side, for example, that will help
reduce disk I/O but not necessarily processing performance.

> > Could I do the same for templates in the stylesheets, for 
> example, each
> > stylesheet has a status bar, I could put that in a status.xsl and
> > include/import on it later.

Yes, your status bar, if its design is consistent from page to page, could
be rendered via a single template, which you could import into each
stylesheet that needs it.

If your page layout is consistent, you could build a "master layout"
stylesheet that creates all the common navigational elements and the basic
HTML framework for each page.  Then you would import (or include) this
stylesheet in your other, page-specific stylesheets.  Note that you'll want
to group related templates together, but don't throw all of them into a
massive library and then import or include it on every stylesheet.  That
will almost certainly degrade performance.

> > Notice that I use import/include because I dont know what 
> the difference
> is.

xsl:include works as a textual inclusion: it inserts the contents of the
included stylesheet into the local stylesheet.  xsl:import is more dynamic,
in that it is possible to override templates and top-level variables by
redefining them locally (since the local elements will take precedence over
those that are imported).  So it is possible to write:

<xsl:variable name="page-layout" select="'standard'"/>

in an imported stylesheet, then write this in your local stylesheet:

<xsl:variable name="page-layout" select="'custom'"/>

Even though both $page-layout definitions are technically in the same scope,
the value of the last definition will be bound to the variable.

I know these are very generalized comments but I hope they help.

cheers,
b.

| brian martinez                              brian.martinez@xxxxxxxx |
| senior gui programmer                                  303.708.7248 |
| trip network, inc.                                 fax 303.790.9350 |
| 6436 s. racine cir.                             englewood, co 80111 |
| http://www.cheaptickets.com/                   http://www.trip.com/ |

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


Current Thread