Subject: RE: [xsl] Setting background colour according to contents of node|
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sun, 19 Sep 2004 09:18:23 +0100
Use <xsl:attribute name="background-color"> <xsl:apply-templates select="BREAK_3" mode="get-colour"/> </xsl:attribute> then <xsl:template match="* mode="get-colour"> <xsl:choose> <xsl:when test="FIELD_134='Y' or ...> etc. </xsl:template> In other words, but the conditional code in the piece that generates the attribute that varies, not in the piece that generates its containing element. Michael Kay > -----Original Message----- > From: Sean & Helen [mailto:scarlson65@xxxxxxx] > Sent: 19 September 2004 06:29 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Setting background colour according to contents of node > > Hi all, > I was trying to set a background colour by setting a variable > after checking > the contents of a node. I realized that this would not work > unless I used > LOTS of variables since the value of a variable cannot be > updated once set. > Does anyone have an easier way to set a colour based on data? > The only other > way I can think of is to use an <xsl:choose> but then I have > to repeat my > whole table cell code twice (which really adds up for large reports). > > This is what I currently have (which is pretty awful): > > <xsl:choose> > <xsl:when test="BREAK_3/FIELD_134=Y or BREAK_3/FIELD_135='F'"> > <fo:table-cell background-color="#9DE1DF"> .... contents > of the cell > .... </fo:table-cell> > </xsl:when> > > <xsl:otherwise> > <fo:table-cell background-color="white">...exactly the > same code for > the contents...</fo:table-cell> > </xsl:otherwise> > </xsl:choose> > > TIA for listening to my silly question, > Helen.