xsl-list
[Top] [All Lists]

RE: [xsl] null call of document function

2007-04-08 14:55:59
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(_at_)gmail(_dot_)com] 
Sent: 08 April 2007 01:47
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)saxonica(_dot_)com> 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/



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--