We are still using the same XML file, but added some attributes:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl" ?>
<!-- Edited with XML Spy v4.2 -->
<breakfast_menu>
<food category="new">
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
<calories>650</calories>
</food>
<food>
<name>Strawberry Belgian Waffles</name>
<price>$7.95</price>
<description>light Belgian waffles covered with strawberries and whipped cream</description>
<calories>900</calories>
</food>
<food category="new">
<name>Berry-Berry Belgian Waffles</name>
<price>$8.95</price>
<description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
<calories>900</calories>
</food>
<food category="traditional">
<name>French Toast</name>
<price>$4.50</price>
<description>thick slices made from our homemade sourdough bread</description>
<calories>600</calories>
</food>
<food>
<name>Homestyle Breakfast</name>
<price>$6.95</price>
<description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
<calories>950</calories>
</food>
</breakfast_menu>

An example of XSL file with xsl:if and xsl:choose, xsl:when, xsl:otherwise. Also uses xsl:variable

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v4.2 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="color">yellow</xsl:variable>
<xsl:template match="/">
<html>
  <body>
    <table>
    <xsl:for-each select="breakfast_menu/food[@category='new']">
    <tr>
    <xsl:choose>
    <xsl:when test="calories = 900">
    <td bgcolor="{$color}"><xsl:value-of select="*[3]"/></td>
    <td><xsl:value-of select="price"/></td>
    </xsl:when>
    <xsl:otherwise>
    <td bgcolor="lightblue"><xsl:value-of select="*[3]"/></td>
    <td><xsl:value-of select="price"/></td>
    </xsl:otherwise>
    </xsl:choose>
    </tr>
    </xsl:for-each>
    </table>
  </body>
</html>
</xsl:template>
</xsl:stylesheet>

An example of XSL file with apply-templates:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v4.2 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="color">yellow</xsl:variable>
<xsl:template match="/breakfast_menu">
<html>
  <body>
    <table>
    <xsl:apply-templates />
    </table>
  </body>
</html>
</xsl:template>

<xsl:template match="food">
<tr><xsl:apply-templates /></tr>
</xsl:template>


<xsl:template match="name">
<td><xsl:value-of select="."/></td>
</xsl:template>

<xsl:template match="description">
<td><em><xsl:value-of select="."/></em></td>
</xsl:template>

<xsl:template match="price">
</xsl:template>


<xsl:template match="calories">
</xsl:template>

</xsl:stylesheet>

Example of xsl:call-template with a parameter.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited with XML Spy v4.2 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="color">yellow</xsl:variable>
<xsl:template match="/breakfast_menu">
<html>
  <body>
    <table>
    <xsl:call-template name="temp1">
    <xsl:with-param name="size">+3</xsl:with-param>
    </xsl:call-template>
    </table>
  </body>
</html>
</xsl:template>

<xsl:template name="temp1">
<xsl:param name="size">+1</xsl:param>
<tr>
<th><FONT SIZE="{$size}" COLSPAN="3">Try our breakfast food!</FONT></th>
</tr>
<tr><xsl:apply-templates /></tr>
</xsl:template>


<xsl:template match="name">
<td><xsl:value-of select="."/></td>
</xsl:template>

<xsl:template match="description">
<td><em><xsl:value-of select="."/></em></td>
</xsl:template>

<xsl:template match="price">
</xsl:template>


<xsl:template match="calories">
</xsl:template>

</xsl:stylesheet>

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.