Nic Miloslav     Example 32    KEYWORDS      EXAMPLES      AUTHORS     

The value of function last() depends on context. You can select the last element of given type (Stylesheet 1). Difference between Stylesheet 2 and Stylesheet 3 is very instructive. In Stylesheet 2 the function is in template.The context is therefore a single chapter element. In Stylesheet 3 the function is in for-each element. The context is therefore all selected chapters.


     XML     HOME     XSL 1     XSL 2     XSL 3      
<xslTutorial >
<chapter>Chapter A</chapter>
<chapter>Chapter B</chapter>
<chapter>Chapter C</chapter>
<chapter>Chapter D</chapter>
</xslTutorial>

     XSL 1     HOME     XML     HTML 1     OUTPUT 1     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:variable name="totalChapters">
<xsl:value-of select="//chapter[last()]"/>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="$totalChapters"/>
</xsl:template>
</xsl:stylesheet>

     HTML 1     HOME     XML     XSL 1     OUTPUT 1     
<HTML>
<HEAD> </HEAD>
<BODY> Chapter D </BODY> </HTML>

     OUTPUT 1     HOME     XML     XSL 1     HTML 1     
Chapter D

     XSL 2     HOME     XML     HTML 2     OUTPUT 2     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//chapter">
<TR><TD><xsl:apply-templates select="."/></TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
<xsl:template match="chapter">
<xsl:value-of select="."/>
<xsl:text> (last = </xsl:text>
<xsl:value-of select="last()"/>
<xsl:text> )</xsl:text>
</xsl:template>
</xsl:stylesheet>

     HTML 2     HOME     XML     XSL 2     OUTPUT 2     
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE>
<TR>
<TD>Chapter A(last = 1)</TD></TR>
<TR>
<TD>Chapter B(last = 1)</TD></TR>
<TR>
<TD>Chapter C(last = 1)</TD></TR>
<TR>
<TD>Chapter D(last = 1)</TD></TR></TABLE> </BODY> </HTML>

     OUTPUT 2     HOME     XML     XSL 2     HTML 2     
Chapter A(last = 1)
Chapter B(last = 1)
Chapter C(last = 1)
Chapter D(last = 1)

     XSL 3     HOME     XML     HTML 3     OUTPUT 3     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:value-of select="."/>
<xsl:text> (last = </xsl:text>
<xsl:value-of select="last()"/>
<xsl:text> )</xsl:text> </TD></TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>

     HTML 3     HOME     XML     XSL 3     OUTPUT 3     
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE>
<TR>
<TD>Chapter A(last = 4)</TD></TR>
<TR>
<TD>Chapter B(last = 4)</TD></TR>
<TR>
<TD>Chapter C(last = 4)</TD></TR>
<TR>
<TD>Chapter D(last = 4)</TD></TR></TABLE> </BODY> </HTML>

     OUTPUT 3     HOME     XML     XSL 3     HTML 3     
Chapter A(last = 4)
Chapter B(last = 4)
Chapter C(last = 4)
Chapter D(last = 4)