Working with xsl:choose in XSLT - Emitting HTML together with CSS using XSLT
(Page 4 of 6 )
In all of the previous examples, I simply emitted HTML. In fact, you can not only emit HTML; you can also emit CSS based on your needs!
Let us modify the business need specified in the previous section. Now, I would like to have all the employee details listed with the salaries in red, if earnings are more than 3500. The following is the modified XSLT which accomplishes the same:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="1">
<xsl:apply-templates select="SQLData/Rows" />
</table>
</xsl:template>
<xsl:template match="SQLData/Rows">
<tr>
<td>
<xsl:value-of select="Empno"/>
</td>
<td>
<xsl:value-of select="Ename"/>
</td>
<xsl:apply-templates select="Sal" />
<td>
<xsl:value-of select="Deptno"/>
</td>
</tr>
</xsl:template>
<xsl:template match="Sal">
<xsl:choose>
<xsl:when test="text() > '3500'">
<td style="color: red">
<xsl:value-of select="."/>
</td>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:value-of select="."/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
When the above code gets executed, you are likely to get the following transformation:
<table border="1">
<tr>
<td>1001</td>
<td>Jag</td>
<td style="color: red">4400</td>
<td>10</td>
</tr>
<tr>
<td>1002</td>
<td>Chat</td>
<td>2800</td>
<td>20</td>
</tr>
.
.
.
</table>
The only trick I used from all of the above code is that I emitted the TD tag of “Sal” within its own template, together with CSS wherever appropriate!
Next: Working with multiple xsl:when within xsl:choose in XSLT >>
More ASP.NET Articles
More By Jagadish Chaterjee