Subject: Re: How to assign a sequence to a variable?
From: andrew welch <andrew.j.welch@xxxxxxxxx>
Date: Tue, 9 Aug 2005 14:45:16 +0100
|
> 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
|