| 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 |
|---|
| 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) |