Subject: [xsl] Nesting xsl:call-template From: Winchel 'Todd' Vincent III <winchel@xxxxxxxxxxxxxx> Date: Tue, 3 Apr 2007 11:45:27 -0400 (GMT-04:00) |
Hello All: I am nesting xsl:call-template nodes and am not getting the desired result. I'm wondering whether I have made simple mistake or whether nesting of the xsl:call-template is not supported as I assume. 1. The following works as I expect it: <tr> <xsl:call-template name="TableCell"> <xsl:with-param name="Value">This is some text.</xsl:if></xsl:with-param> <xsl:with-param name="Style">TableHeading</xsl:with-param> <xsl:with-param name="Colspan">2</xsl:with-param> </xsl:call-template> <tr> <xsl:template name="TableCell"> <xsl:param name="Value"/> <xsl:param name="Style"/> <xsl:param name="Type"/> <xsl:param name="Colspan"/> <xsl:element name="td"> <xsl:if test="not($Style = '')"> <xsl:attribute name="class"><xsl:value-of select="$Style"/></xsl:attribute> </xsl:if> <xsl:if test="not($Colspan = '')"> <xsl:attribute name="colspan"><xsl:value-of select="$Colspan"/></xsl:attribute> </xsl:if> <xsl:value-of select="$Value"/> </xsl:element> </xsl:template> The resulting output is (which is what I want): <tr> <td>This is some text.</td> </tr> 2. This, however, does not work: <xsl:template name="TableRow"> <xsl:param name="ValueRow"/> <xsl:param name="StyleRow"/> <xsl:param name="TypeRow"/> <xsl:element name="tr"> <xsl:if test="not($StyleRow = '')"> <xsl:attribute name="class"><xsl:value-of select="$StyleRow"/></xsl:attribute> </xsl:if> <xsl:value-of select="$ValueRow"/> </xsl:element> </xsl:template> <xsl:template name="TableCell"> <xsl:param name="Value"/> <xsl:param name="Style"/> <xsl:param name="Type"/> <xsl:param name="Colspan"/> <xsl:element name="td"> <xsl:if test="not($Style = '')"> <xsl:attribute name="class"><xsl:value-of select="$Style"/></xsl:attribute> </xsl:if> <xsl:if test="not($Colspan = '')"> <xsl:attribute name="colspan"><xsl:value-of select="$Colspan"/></xsl:attribute> </xsl:if> <xsl:value-of select="$Value"/> </xsl:element> </xsl:template> <xsl:call-template name="TableRow"> <xsl:with-param name="ValueRow"> <xsl:call-template name="TableCell"> <xsl:with-param name="Value">This is some text.</xsl:with-param> <xsl:with-param name="Style">TableHeading</xsl:with-param> <xsl:with-param name="Colspan">2</xsl:with-param> </xsl:call-template> </xsl:with-param> </xsl:call-template> The resulting output (which is not want I want or expect) is this: <tr> This is some text. </tr> This is XSLT 1.0. I am using XML Spy 2007 set to use MSXML 4.0. I tried using the XML Spy XSLT engine with the same results. I looked in Michael Kay's XSLT 2nd Edition, but did not see any similar examples or tips. I thought that I had created XSLT in the past that did this, but perhaps I'm mistaken. Any advice would be greatly appreciated. Thanks, Todd =========================== Winchel "Todd" Vincent III <xmlLegal> http://www.xmllegal.org/ Phone : 404.822.4668 Fax : 770.216.1633 Email : Todd.Vincent@xxxxxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] grouping, xslt 2.0, Abel Braaksma | Thread | Re: [xsl] Nesting xsl:call-template, David Carlisle |
Re: [xsl] Dreamweaver XSL Tranforms, Abel Braaksma | Date | Re: [xsl] Nesting xsl:call-template, David Carlisle |
Month |