| |
5. 43. 3. xsl:choose: check the value of an attribute |
|
File: Data.xml
<?xml version = "1.0"?>
<planner>
<year value = "2000">
<date month = "7" day = "15">
<note time = "1430">meeting</note>
<note time = "1620">course</note>
</date>
<date month = "7" day = "4">
<note>Independence Day</note>
</date>
<date month = "7" day = "20">
<note time = "0900">Meeting A</note>
</date>
<date month = "7" day = "20">
<note time = "1900">Meeting B</note>
</date>
<date month = "7" day = "20">
<note time = "1300">Meeting C</note>
</date>
</year>
</planner>
File: Transform.xslt
<?xml version = "1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
Appointments
<br />
<xsl:apply-templates select="planner/year" />
</body>
</html>
</xsl:template>
<xsl:template match="year">
<strong>Year:</strong>
<xsl:value-of select="@value" />
<br />
<xsl:for-each select="date/note">
<xsl:sort select="../@day" order="ascending"
data-type="number" />
<strong>
Day:
<xsl:value-of select="../@day" />
/
<xsl:value-of select="../@month" />
</strong>
<br />
<xsl:choose>
<xsl:when
test="@time > '0500' and @time < '1200'">
Morning (
<xsl:value-of select="@time" />
):
</xsl:when>
<xsl:when
test="@time > '1200' and @time < '1700'">
Afternoon (
<xsl:value-of select="@time" />
):
</xsl:when>
<xsl:when
test="@time > '1200' and @time < '1700'">
Evening (
<xsl:value-of select="@time" />
):
</xsl:when>
<xsl:when
test="@time > '1200' and @time < '1700'">
Night (
<xsl:value-of select="@time" />
):
</xsl:when>
<xsl:otherwise>Entire day:</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="." />
<xsl:if test=". = ''">n/a</xsl:if>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Output:
<html>
<body>
Appointments
<br><strong>Year:</strong>2000<br><strong>
Day:
4
/
7</strong><br>Entire day:Independence Day<br><strong>
Day:
15
/
7</strong><br>
Afternoon (
1430
):
Doctor's appointment<br><strong>
Day:
15
/
7</strong><br>
Afternoon (
1620
):
course<br><strong>
Day:
20
/
7</strong><br>
Morning (
0900
):
Meeting A<br><strong>
Day:
20
/
7</strong><br>Entire day:Party at Joe's<br><strong>
Day:
20
/
7</strong><br>
Afternoon (
1300
):
Meeting C<br></body>
</html>
|
|
|