Subject: Re: outputting unknown amount of child elements
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Mon, 9 Feb 2004 13:02:22 +0000
|
Hi David,
> I should have stressed that not only do I want to ouput all the
> elements using recursion but I also want, effectively to know how
> many ancestors they each have in order to structure the output so it
> makes clear the hierarchical structure of the data.
You can do that in two ways. You can count the number of ancestors of
the <item> element that you're on using:
count(ancestor::item)
Alternatively, you can pass a parameter into the template, adding one
on each recursion, as in:
<xsl:template match="item">
<xsl:param name="ancestors" select="0" />
...
<xsl:apply-templates>
<xsl:with-param name="ancestors" select="$ancestors + 1" />
</xsl:apply-templates>
</xsl:template>
If you're dealing with very deep hierarchies, using a parameter will
probably be speedier.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|