Subject: RE: [xsl] Repetitive variable definitions From: "Whitney, Dan \(CanWest Interactive\)" <DWhitney@xxxxxxxxxxx> Date: Fri, 14 Sep 2007 13:07:03 -0500 |
Charles, Thanks for the fast response, however the noofcols variable is always empty. Dan ________________________________ Daniel Whitney CanWest Interactive, a division of CanWest MediaWorks Publications Inc. 1450 Don Mills Rd Don Mills ON M3B 2X7 Tel: (416) 442-2957 Fax: (416) 442-2968 Email: dwhitney@xxxxxxxxxxx -----Original Message----- From: cknell@xxxxxxxxxx [mailto:cknell@xxxxxxxxxx] Sent: Friday, September 14, 2007 1:36 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] Repetitive variable definitions <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:variable name="noofcols" select="/table/tr/td[last()]/@col"/> <xsl:variable name="bg-color"> <xsl:choose> <xsl:when test="$noofcols = 1" select="'red'"> <xsl:when test="$noofcols = 3 select="'blue'"> <xsl:otherwise/> </xsl:choose> <xsl:variable> <xsl:template match="table"> <table border="1"> <tr> <td align="center" colspan="{$noofcols}"> <xsl:value-of select="@desc"/> </td> </tr> <xsl:apply-templates select="tr"/> </table> </xsl:template> <xsl:template match="tr"> <tr bgcolor="{$bg-color}"> <xsl:apply-templates select="td"/> </tr> </xsl:template> <xsl:template match="td"> <td bgcolor="{$bg-color}"> td col variable = <xsl:value-of select="$noofcols"/> </td> </xsl:template> </xsl:stylesheet> -- Charles Knell cknell@xxxxxxxxxx - email -----Original Message----- From: Whitney, Dan \(CanWest Interactive\) <DWhitney@xxxxxxxxxxx> Sent: Fri, 14 Sep 2007 12:24:24 -0500 To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: [xsl] Repetitive variable definitions I have a question of a general nature concerning variables and xsl templates. I like to break my XSL down into templates as I find them much easier to work with, but I find it very limiting when I have to keep redefining the same variables over and over in different templates with different contexts. In my very simplistic example, I have had to define a variable "noofcols" once in each template for a total of 3 times. I would love to only define it once and have it "cascade" down the child templates without making the XSL a single template. I don't think this is possible, but you never know until you ask. So my question is - can I define the "noofcols" only once whether variable, parameter template or any other method, or am I stuck with defining it as shown? Thanks in advance, Dan Whitney XML: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="example.xsl"?> <example> <table desc="Example: 1 col table"> <tr> <td col="1">col 1</td> </tr> </table> <table desc="Example: 2 col table"> <tr> <td col="1">col 1</td> <td col="2">col 2</td> </tr> </table> <table desc="Example: 3 col table"> <tr> <td col="1">col 1</td> <td col="2">col 2</td> <td col="3">col 2</td> </tr> </table> </example> XSL: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="table"> <xsl:variable name="noofcols" select="tr/td[last()]/@col"/> <table border="1"> <tr> <td align="center" colspan="{$noofcols}"> <xsl:value-of select="@desc"/> </td> </tr> <xsl:apply-templates select="tr"/> </table> </xsl:template> <xsl:template match="tr"> <xsl:variable name="noofcols" select="self::tr[1]/td[last()]/@col"/> <tr> <xsl:choose> <xsl:when test="$noofcols = 1"> <xsl:attribute name="bgcolor">red</xsl:attribute> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> <xsl:apply-templates select="td"/> </tr> </xsl:template> <xsl:template match="td"> <xsl:variable name="noofcols" select="parent::tr[1]/td[last()]/@col"/> <td> <xsl:choose> <xsl:when test="$noofcols = 3"> <xsl:attribute name="bgcolor">blue</xsl:attribute> </xsl:when> </xsl:choose> td col variable = <xsl:value-of select="$noofcols"/> </td> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Repetitive variable defin, cknell | Thread | Re: [xsl] Repetitive variable defin, Abel Braaksma |
RE: [xsl] Repetitive variable defin, cknell | Date | Re: [xsl] merging xml's using XSLT,, Abel Braaksma |
Month |