[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to assign a sequence to a variable?


Subject: Re: [xsl] How to assign a sequence to a variable?
From: Manfred Staudinger <manfred.staudinger@xxxxxxxxx>
Date: Tue, 9 Aug 2005 16:03:43 +0200

> You need as item()+ on the variable definition, eg:
>
> <xsl:variable name="tempb" as="item()+">
Sorry, this does not seem to change anythinghelp
on my test case.

Manfred

On 8/9/05, andrew welch <andrew.j.welch@xxxxxxxxx> wrote:
> > Hi list,
> > I would like to return a sequence from a named
> > template, but I'm only getting a single string.
> > In the test only tempa gets the sequence, but how
> > to get it work for tempb and tempc?
> >
> > <?xml version="1.0" encoding="UTF-8" ?>
> > <xsl:stylesheet version="2.0"
> >         xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> > <xsl:template match="/">
> >         <xsl:variable name="tempa" select="'a1','a2','a3'"/>
> >         <xsl:message select="$tempa[3]"/>
> >         <xsl:variable name="tempb">
> >                 <xsl:value-of select="'b1','b2','b3'"/>
> >         </xsl:variable>
> >         <xsl:message select="$tempb[1]"/>
> >         <xsl:variable name="tempc">
> >                 <xsl:call-template name="processName">
> >                 </xsl:call-template>
> >         </xsl:variable>
> >         <xsl:message select="$tempc[1]"/>
> > </xsl:template>
> > <xsl:template name="processName">
> >         <xsl:value-of select="'c1','c2','c3'"/>
> > </xsl:template>
> > </xsl:stylesheet>
>
> You need as item()+ on the variable definition, eg:
>
> <xsl:variable name="tempb" as="item()+">
>   ....
>
> Otherwise you will get a tree with a single child text node with all
> the entries in the sequence concatenated together with a space between
> each.
>
> cheers
> andrew


Current Thread