Illustrates use of xsl:number element
File: Data.xml
<?xml version="1.0" standalone="no" ?>
<transcript>
<student id="STU12345" name="name 1" status="active">
<home_address>35 Wall Street, Wonderland, NJ</home_address>
<interests>
<interest>interest 1</interest>
<interest>interest 2</interest>
<interest>interest 3</interest>
</interests>
</student>
<term>
<heading name="Winter 1999" />
<course>
<course-name>course 1</course-name>
<grade>A-</grade>
<credits>4</credits>
</course>
<course>
<course-name>course 2</course-name>
<grade>B+</grade>
<credits>3</credits>
</course>
</term>
<summary>summary</summary>
<comments>
comments
</comments>
</transcript>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="transcript">
<HTML>
<BODY>
<xsl:apply-templates select="student" />
<HR />
<TABLE BORDER="1" CELLPADDING="4">
<TR ALIGN="left">
<TH ALIGN="right">#</TH>
<TH>Course Name</TH>
<TH>Grade</TH>
<TH ALIGN="right">Credits</TH>
</TR>
<xsl:apply-templates select="term/course">
<xsl:sort select="course-name" />
</xsl:apply-templates>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="student">
<FONT SIZE="6">
<B>Student Transcript</B>
</FONT>
<P />
<FONT SIZE="4">
<B>
Name:
<I>
<xsl:value-of select="@name" />
</I>
<BR />
ID:
<I>
<xsl:value-of select="@id" />
</I>
</B>
</FONT>
<P />
</xsl:template>
<xsl:template match="course">
<TR>
<TD ALIGN="right">
<xsl:number value="position()" />
<xsl:text> of </xsl:text>
<xsl:number value="last()" />
</TD>
<TD>
<xsl:value-of select="course-name" />
</TD>
<TD>
<xsl:value-of select="grade" />
</TD>
<TD ALIGN="right">
<xsl:value-of select="credits" />
</TD>
</TR>
</xsl:template>
</xsl:stylesheet>
Output:
<HTML>
<BODY><FONT SIZE="6"><B>Student Transcript</B></FONT><P></P><FONT SIZE="4"><B>
Name:
<I>name 1</I><BR>
ID:
<I>STU12345</I></B></FONT><P></P>
<HR>
<TABLE BORDER="1" CELLPADDING="4">
<TR ALIGN="left">
<TH ALIGN="right">#</TH>
<TH>Course Name</TH>
<TH>Grade</TH>
<TH ALIGN="right">Credits</TH>
</TR>
<TR>
<TD ALIGN="right">1 of 2</TD>
<TD>course 1</TD>
<TD>A-</TD>
<TD ALIGN="right">4</TD>
</TR>
<TR>
<TD ALIGN="right">2 of 2</TD>
<TD>course 2</TD>
<TD>B+</TD>
<TD ALIGN="right">3</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Related examples in the same category