XSLT <xsl:choose> Element
The <xsl:choose> element is used in conjunction with <xsl:when>
and <xsl:otherwise> to express multiple
conditional tests.
The <xsl:choose> Element
Syntax
<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
|
Where to put the Choose Condition
To insert a multiple conditional test against the XML file, add
the <xsl:choose>, <xsl:when>, and <xsl:otherwise> elements to
the XSL file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
|
The code above will add a pink background-color to the "Artist" column WHEN the
price of the CD is higher than 10.
The result of the transformation will look like this:
My CD Collection
| Title |
Artist |
| Empire Burlesque |
Bob Dylan |
| Hide your heart |
Bonnie Tyler |
| Greatest Hits |
Dolly Parton |
| Still got the blues |
Gary Moore |
| Eros |
Eros Ramazzotti |
| One night only |
Bee Gees |
| Sylvias Mother |
Dr.Hook |
| Maggie May |
Rod Stewart |
| Romanza |
Andrea Bocelli |
| When a man loves a woman |
Percy Sledge |
| Black angel |
Savage Rose |
| 1999 Grammy Nominees |
Many |
| For the good times |
Kenny Rogers |
| Big Willie style |
Will Smith |
| Tupelo Honey |
Van Morrison |
| Soulsville |
Jorn Hoel |
| The very best of |
Cat Stevens |
| Stop |
Sam Brown |
| Bridge of Spies |
T`Pau |
| Private Dancer |
Tina Turner |
| Midt om natten |
Kim Larsen |
| Pavarotti Gala Concert |
Luciano Pavarotti |
| The dock of the bay |
Otis Redding |
| Picture book |
Simply Red |
| Red |
The Communards |
| Unchain my heart |
Joe Cocker |
View the XML file,
View the XSL file, and
View the result
Another Example
Here is another example that contains two <xsl:when> elements:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:when test="price > 9">
<td bgcolor="#cccccc">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
|
The code above will add a pink background color to the "Artist" column WHEN the
price of the CD is higher than 10, and a grey background-color WHEN the price of
the CD is higher than 9 and lower or equal to 10.
The result of the transformation will look like this:
My CD Collection
| Title |
Artist |
| Empire Burlesque |
Bob Dylan |
| Hide your heart |
Bonnie Tyler |
| Greatest Hits |
Dolly Parton |
| Still got the blues |
Gary Moore |
| Eros |
Eros Ramazzotti |
| One night only |
Bee Gees |
| Sylvias Mother |
Dr.Hook |
| Maggie May |
Rod Stewart |
| Romanza |
Andrea Bocelli |
| When a man loves a woman |
Percy Sledge |
| Black angel |
Savage Rose |
| 1999 Grammy Nominees |
Many |
| For the good times |
Kenny Rogers |
| Big Willie style |
Will Smith |
| Tupelo Honey |
Van Morrison |
| Soulsville |
Jorn Hoel |
| The very best of |
Cat Stevens |
| Stop |
Sam Brown |
| Bridge of Spies |
T`Pau |
| Private Dancer |
Tina Turner |
| Midt om natten |
Kim Larsen |
| Pavarotti Gala Concert |
Luciano Pavarotti |
| The dock of the bay |
Otis Redding |
| Picture book |
Simply Red |
| Red |
The Communards |
| Unchain my heart |
Joe Cocker |
View the XML file,
View the XSL file, and
View the result
Want To Be A Web Master?
If you want to be a Web Master, you will have to host your web site with an ISP (Internet Service Provider).
MaximumASP offers seven different configurations of dedicated servers to meet your Windows and .NET hosting needs.
Hosted on our multi-tiered Enterprise Class network, these servers provide the performance, security and reliability
you need to host your high end web sites and applications.
Visit MaximumASP
|