|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Recursively looping through a template only X number o
I'm building a table of contents from my XML file. However, I only want to display the nodes x levels deep. For now, it's 2, but perhaps we might want to change that later. As such, I'm trying to write the XSL so we can just change a variable or xsl:if test to change the depth of the TOC. Here's a sample set of templates I am using: The first template starts the parent UL and grabs each of the parent level nodes. ----------------------------------- <xsl:template match="/"> <div id="rulesListTOC"> <h2>Table of Contents:</h2> <ul> <xsl:for-each select="ruleItems"> <xsl:call-template name="rulelistTOC" /> </xsl:for-each> </ul> </div> </xsl:template> ----------------------------------- For each parent level node it finds, it calls this template: ----------------------------------- <xsl:template name="rulelistTOC"> <xsl:variable name="TOCTemplateLoopCount" select="$TOCTemplateLoopCount+1"/> <xsl:for-each select="ruleItem"> <xsl:if test="$TOCTemplateLoopCount < 3"> <xsl:variable name="id"> <xsl:number level="multiple" from="/ruleItems" /> </xsl:variable> <li><a href="#id{$id}"><xsl:value-of select="number" />: <xsl:value-of select="title" /></a> <xsl:if test="ruleItem"> <ul> <xsl:call-template name="rulelistTOC" /> </ul> </xsl:if> </li> </xsl:if> </xsl:for-each> </xsl:template> ----------------------------------- I've attempted to put an xsl:if test in there to first check to see which recursive loop it's on. If it's less than 3 (ie, first or second pass through) then go ahead and render some markup. The question I have is how to I initially set the TOCTemplateLoopCount variable? I need to set it to 0 to begin with outside of this template. However, if I do that... <xsl:variable name="TOCTemplateLoopCount" select="0" /> <xsl:template name="rulelistTOC"> <xsl:variable name="TOCTemplateLoopCount" select="$TOCTemplateLoopCount+1"/> ... </template> It seems to get re-set to '0' on each pass of the template as it is evaluated to '0 + 1' each time. I'm confused as to why that is. -Darrel
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Cast Your Vote
We need your help – Vote for DataDirect XML Products!
Winners and finalists announced at SOA World Conference in November. Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|







