Re: [xsl] null call of document function

Subject: Re: [xsl] null call of document function
From: Steve <subsume@xxxxxxxxx>
Date: Mon, 9 Apr 2007 09:36:19 -0400
Ok, thanks anywho.

Could you elaborate on the phrase "optimize away"? I understood it all
up until there.

-Steve

On 4/8/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
Sorry, but advising on application design is much harder than advising on
coding or debugging, and I really don't like doing it without knowing a lot
more than this about your requirements and constraints. And it then becomes
a consultancy assignment rather than a simple question+answer on a forum.

It's easy to spot when someone is doing things the wrong way, it's sometimes
much harder to identify the right way.

Michael Kay
http://www.saxonica.com/


> -----Original Message----- > From: Steve [mailto:subsume@xxxxxxxxx] > Sent: 08 April 2007 01:47 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] null call of document function > > Maybe you could give me some additional guidance? My > situation is this: > > I have a sql table 'alerts' which contains system messages to > be delivered to the user. > > A call to my xsl template "getAlerts" calls a script which > serves these alerts up as XML and then clears them from the table. > > In some cases I want a file my user is viewing to generate an alert. > My idea was to use the document function to insert the alert, > and then later in the script it would be available for the > getAlerts template. > > Are you suggesting it would be wiser to insert this Alert in > my processing script pre-transform? Some other suggestion? > > -Steve > > On 4/7/07, Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > What if I want to make a call to the document() function > but I don't > > > expect any value? > > > > That presumably means you expect the call to have side-effects. > > > > A call on the document function is analagous to an HTTP GET > request, > > and it's considered bad form for GET requests to have side effects: > > > > http://www.w3.org/2001/tag/doc/whenToUseGet.html > > > > At the XSLT level, calling document() and expecting > side-effects has > > all the problems associated with extensions functions that > have side > > effects, notably that the call is liable to be optimized > away if the > > result isn't used. In fact it's worse than extension > functions, because: > > > > (a) with extension functions, the optimizer might if you're > lucky take > > into account the possibility that the call has > side-effects; with the > > document() function this is unlikely > > > > (b) the semantics of the document() function essentially > say that if > > you make the same call twice with the same URI, it only > gets executed once. > > > > In short - don't do it. > > > > Michael Kay > > http://www.saxonica.com/

Current Thread