Working with xsl:choose in XSLT - Working with multiple xsl:when within xsl:choose in XSLT
(Page 5 of 6 )
In the previous sections, we dealt with only one single “xsl:when” within “xsl:choose.” Now, let us work with multiple “xsl:when” statements.
Let us again modify the business need specified in the previous section. Now, I would like to have all the employee details listed with:
- salary in red, if earnings are more than 4000.
- salary in blue, if earnings are more than 3000 and less than 4000.
The following is the entire 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() > '4000'">
<td style="color: red">
<xsl:value-of select="."/>
</td>
</xsl:when>
<xsl:when test="text() > '3000'">
<td style="color: blue">
<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>
<tr>
<td>1003</td>
<td>Winner</td>
<td style="color: blue">3700</td>
<td>10</td>
</tr>
<tr>
<td>1004</td>
<td>Dhan</td>
<td style="color: red">5000</td>
<td>20</td>
</tr>
</table>
Next: More conditions within xsl:when >>
More ASP.NET Articles
More By Jagadish Chaterjee