Subject: RE: Possible to pass 'empty sequence' to function?
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Thu, 31 Mar 2005 12:48:22 +0100
|
> > > <xsl:variable name="y" as="string?">hello</xsl:variable>
> > >
> > > $x is (a sequence of one) string with value "hello"
> >
> >
> > Is this really the case? Does it really mean that the
> > processor doesn't
> > construct the temporary tree (and then atomise it?) - if so
> then it's
> > really useful.
>
> The semantics are that the processor creates a text node and
> then atomizes it to a string.
>
> What happens internally is of course up to the optimizer.
So, just to be clear about this:
<xsl:variable name="foo" as="xs:string?">Hello</xsl:variable>
<xsl:variable name="bar">World</xsl:variable>
<xsl:value-of select="concat($foo,' ',$bar)"/>
Here at the point of the concat() $foo is -already- a string and $bar is
a nodeset? That is, $foo is never a nodeset and $bar is nodeset that
gets implicitly cast to a string?
If so, this would mean it's possible to make a choice between long
if-then-elses in the select attribute and choose/whens in the body based
on readability/maintainability etc and not on performance.
cheers
andrew
|