Subject:conditional rendering in XSL.. Author:Venkat P Date:16 Jun 2008 06:02 AM
Hi,
There is a html page in which there are multiple hyperlinks in the format:
parentnode1:
child1
child2
parentnode2:
child1
child2
and so on....
when the user clicks on child1 of any parent nodes, the child1 becomes the current parent and the corresponding child nodes are diaplayed as its children....
for this I am using the concept of templates where I have a main template which has all the html in it. With in this template I am using an 'if' condition which checks if there are any children for a context node. if so it calls the same template using call-template.
But I have to call the template when the user clicks the link which I am unable to do. Some thing link
<a href="code to call the template">......</a>
and also i am sending few parameters to the calling template whcih should be used for setting the 'select' of <xsl:for-each> since the child nodes xpath is set dynamically but iam getting an error saying the parameter is nt a node-set.
Please help in resolving this....
I request you suggest any other alternatives for this requement other than templates.
<xsl:text>Xpath value is</xsl:text>
<xsl:value-of select="$xpath"/>
<xsl:variable name="path" select="concat('x1/x2/x3/level',$xpath)"/>
<xsl:text> path value is</xsl:text>
<xsl:value-of select="$path"/>
<xsl:for-each select="here I have to set the xpath dynamically... I mean the value of 'path'">
<li><strong><a href="#"><xsl:value-of select="name"/> (12)</a></strong>
<ul>
<xsl:for-each select="level">
<li><a href="here I should call the template 'temp'"><xsl:value-of select="name"/>,</a></li>
<xsl:if test="child::node()">
<xsl:value-of select="name()"/>
<xsl:call-template name="temp">
<xsl:with-param name="xpath" select="concat($xpath,'/',name())"></xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</ul>
</li>
</xsl:for-each>
</ul>