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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] copy-of and apply-templat, Michael Kay mike@xxx | Thread | [xsl] Are xsl:accumulator-rules exc, Christophe Marchand |
Re: [xsl] XSLT 2.0 courses?, Liam R. E. Quin liam | Date | Re: [xsl] XSLT 2.0 courses?, Graydon graydon@xxxx |
Month |