Re: [xsl] how to call extension function for side-effect, portably?

Subject: Re: [xsl] how to call extension function for side-effect, portably?
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 19 Jan 2005 22:03:03 +1100
On Wed, 19 Jan 2005 00:21:12 -0000, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> saxon:discard-document is deliberately designed to return the document being
> discarded, so you can wrap it round a call of document(), or any other
> reference to the document is actually being used. (It's effect isn't
> immediate, it merely marks the document as being available for garbage
> collection when no longer referenced).
> 
> In general, if you're not using the result of a function but still want it
> called, then you should try to hoodwink the optimizer into thinking that you
> are using it. If it's a Java method that returns void, call it as
> 
> <xsl:sequence select="my:call(xyz)"/>
> 
> or call it as
> 
> <xsl:if test="my:call(xyz) = -1"><a/></xsl:if>
> 
> when you know the result will never be -1.

Of course, this still doesn't guarantee any specific order of
evaluation or even if the extension function will be called only once,
or am I wrong?


Cheers,
Dimitre Novatchev

Current Thread