Subject: Re: [xsl] Repetitive variable definitions From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Fri, 14 Sep 2007 20:28:41 +0200 |
hth, -- Abel Braaksma
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, Whitney, Dan \(CanWe | Thread | RE: [xsl] Repetitive variable defin, Wendell Piez |
Re: [xsl] merging xml's using XSLT,, Abel Braaksma | Date | RE: [xsl] Repetitive variable defin, Bjorndahl, Brad |
Month |