Re: [xsl] recursive help

Subject: Re: [xsl] recursive help
From: Mukul Gandhi <mukulgw3@xxxxxxxxx>
Date: Fri, 26 Sep 2003 12:45:29 -0700 (PDT)
It seems you can accomplish the transformation without
recursion.. Below are the templates.

<xsl:template match="/">
  <xsl:apply-templates select="//standard" />
</xsl:template>
	
<xsl:template match="//standard">
    <xsl:if test="standard">
       <h2><xsl:value-of select="@name" /></h2>
    </xsl:if>

    <xsl:if test="not(standard)">
       <a><xsl:attribute
name="href">addlinkinfol8r</xsl:attribute><xsl:value-of
select="@name" />
       </a>
    </xsl:if>
</xsl:template>

Regards,
Mukul

--- "Wagstaff, Jason" <WagstaffJ@xxxxxxxxxxxx> wrote:
> i have an xml document that needs to be transformed
> which seems to perfect for recursion. (this is my
> first attempt at trying this) it is essentialy a
> nested menu system of links. the basic logic is it
> checks to see if a node has a child, if it does
> print a header otherwise a link.    i built the xml
> document using recursion, i just can't figure out
> how to transform it useing the same technique.
> samples of both xml and xslt 
> 
> 
> xml doc:
> <?xml ?>
> <standards>
>    <standard id="1" name="test">
>         <standard id ="32" name="test" />
>         <standard id ="45" name="test>
>              <standard id ="23" name="test" />
>              <standard id ="12" name="test" />
>          </standard>
>    </standard>
> </standards>
> 
> xslt:
> <xsl:transform
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
> 
> 	<xsl:template name="buildmenu">
> 		<xsl:param name="foo" />
> 		<xsl:choose>
> 			<xsl:when test="position()!=last()">
> 				<xsl:choose>
> 					<!-- test to see if foo has children 
> 						if so print header -->
> 					<xsl:when test="count($foo) != 0">
> 						 has child print header 
> 						<h2><xsl:value-of select="@name" /></h2>
> 						 <xsl:call-template name="buildmenu">
> 							<xsl:with-param name="foo" select="$foo" />
> 						</xsl:call-template> 					
> 					</xsl:when>
> 					<xsl:otherwise>
> 						<!-- no children print link -->
> 						<a><xsl:attribute
>
name="href">addlinkinfol8r</xsl:attribute><xsl:value-of
> select="@name" /></a>
> 						 <xsl:call-template name="buildmenu">
> 							<xsl:with-param name="foo" select="$foo" />
> 						</xsl:call-template> 
> 					</xsl:otherwise>
> 				</xsl:choose>
> 			</xsl:when>
> 			<xsl:otherwise>
> 				<a><xsl:attribute
>
name="href">addlinkinfol8r</xsl:attribute><xsl:value-of
> select="@name" /></a>			
> 			</xsl:otherwise>
> 		</xsl:choose>
> 	</xsl:template>
> 	
> 	<xsl:template match="standards">
> 		<xsl:call-template name="buildmenu">
> 			<xsl:with-param name="foo" select="standard" />
> 		</xsl:call-template>
> 	</xsl:template> 
> 	
> 	 <!--<xsl:template match="standards">
> 		<xsl:for-each select="standard">
> 				<a><xsl:attribute
>
name="href">addlinkinfol8r</xsl:attribute><xsl:value-of
> select="@name" /></a>			
> 		</xsl:for-each>
> 	</xsl:template> -->
> 
> </xsl:transform>	
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

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


Current Thread