RE: [xsl] Possible to pass 'empty sequence' to function?

Subject: RE: [xsl] 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

Current Thread