[xsl] Re: [saxon] Predicates order of evaluation

Subject: [xsl] Re: [saxon] Predicates order of evaluation
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 19 Sep 2020 07:37:17 -0000
> Bad example. Here's the real thing. I found myself having to write
>
> [A] if (parent::*) then $fRename(name(..),..) else ()
>
> instead of
>
>  [B] $fRename(name(..),..) [parent::*] at a pinch I should possibly be able
to write
>
>  [C] $fRename(name(..),..) [current()/parent::*]  in which case the
predicate is not dependent on the evaluating the expression.
>

[A] tests whether the context item has a parent node, [B] tests whether the
result of calling $Rename() has a parent node, so they are completely
different expressions.

[C] (which I've corrected to make current() a function call) is semantically
equivalent to [A] except that the spec guarantees in the case of [A] that the
call on $fRename will not be evaluated (i.e. will not have any errors or
side-effects) if the condition is false, and there is no such guarantee for
[C].

Michael Kay
Saxonica

I've taken this off the Saxon list, since having a thread on two lists with
overlapping membership must be irritating people, and is generally
disapproved.

Current Thread