Re: [xsl] Problem with xslt recursion

Subject: Re: [xsl] Problem with xslt recursion
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 10 Feb 2004 16:47:04 GMT
  and i have a recursive call to a template whose
  function is to concatenate all the values with the tag

You don't need recursion to do that
<xsl:copy-of select="Type/text()"/>
is all you need.


However

<xsl:value-of select ="ResourceTypeSet/Type[$In]"/>

I assume thst isn't your actual code as $In is not defined, assuming
that you have

<xsl:value-of select ="ResourceTypeSet/Type[$Index]"/>

then your problem is that the short hand Type[3] for Type[position()=3]
only tales place if the thing in teh [] is a number.

$Index starts off as a number
<xsl:with-param name="Index" select="1"/>

but then you redeclare it to be a result tree fragment
<xsl:with-param name="Index"><xsl:value-of
select="$Index+1"/></xsl:with-param>

If you use a result tree fragment as a boolean then it is always true as
it corresponds to a non empty node set so

ResourceTypeSet/Type[$Index]

is
ResourceTypeSet/Type[true()]

which is
ResourceTypeSet/Type

ie it selects all the Tyope nodes, then 
<xsl:value-of

always returns the value of (only) the first node selected, so you will
always get the first one back.

David


-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread