| Nic Miloslav Example 34 | KEYWORDS EXAMPLES AUTHORS |
|---|
A stylesheet can contain several variables of the same name. Stylesheet 1 demonstrates a way how to recover the value of global variable which has the same name as a local one. The Stylesheet 2 demonstrates an incorrect approach. The value of local variable is bounded to xsl:when element. The rest of template therefore sees only the global variable.
| XML | HOME XSL 1 XSL 2 |
|---|
| <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="text">Chapter</xsl:variable> |
| <xsl:template match="/"> |
| <TABLE> |
| <xsl:for-each select="//chapter"> |
| <TR><TD> |
| <xsl:variable name="text"> |
| <xsl:choose> |
| <xsl:when test='position() = 1'>First chapter</xsl:when> |
| <xsl:when test='position()=last()'>Last chapter</xsl:when> |
| <xsl:otherwise> <xsl:value-of select="$text"/></xsl:otherwise> |
| </xsl:choose> |
| </xsl:variable> |
| <xsl:value-of select="$text"/> |
| <xsl:text> : </xsl:text> |
| <xsl:value-of select="."/> |
| </TD></TR> |
| </xsl:for-each> |
| </TABLE> |
| </xsl:template> |
| </xsl:stylesheet> |
| HTML 1 | HOME XML XSL 1 OUTPUT 1 |
|---|
| <HTML> |
| <HEAD> </HEAD> |
| <BODY> |
| <TABLE> |
| <TR> |
| <TD>First chapter : Chapter A</TD></TR> |
| <TR> |
| <TD>Chapter : Chapter B</TD></TR> |
| <TR> |
| <TD>Chapter : Chapter C</TD></TR> |
| <TR> |
| <TD>Last chapter : Chapter D</TD></TR></TABLE> </BODY> </HTML> |
| OUTPUT 1 | HOME XML XSL 1 HTML 1 |
|---|
| First chapter : Chapter A |
| Chapter : Chapter B |
| Chapter : Chapter C |
| Last chapter : 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:variable name="text">Chapter</xsl:variable> |
| <xsl:template match="/"> |
| <TABLE> |
| <xsl:for-each select="//chapter"> |
| <TR><TD> |
| <xsl:choose> |
| <xsl:when test='position() = 1'> |
| <xsl:variable name="text">First chapter</xsl:variable> |
| </xsl:when> |
| <xsl:when test='position()=last()'> |
| <xsl:variable name="text">Last chapter</xsl:variable> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:variable name="text"><xsl:value-of select="$text"/></xsl:variable> |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:value-of select="$text"/> |
| <xsl:text> : </xsl:text> |
| <xsl:value-of select="."/> |
| </TD></TR> |
| </xsl:for-each> |
| </TABLE> |
| </xsl:template> |
| </xsl:stylesheet> |
| HTML 2 | HOME XML XSL 2 OUTPUT 2 |
|---|
| <HTML> |
| <HEAD> </HEAD> |
| <BODY> |
| <TABLE> |
| <TR> |
| <TD>Chapter : Chapter A</TD></TR> |
| <TR> |
| <TD>Chapter : Chapter B</TD></TR> |
| <TR> |
| <TD>Chapter : Chapter C</TD></TR> |
| <TR> |
| <TD>Chapter : Chapter D</TD></TR></TABLE> </BODY> </HTML> |
| OUTPUT 2 | HOME XML XSL 2 HTML 2 |
|---|
| Chapter : Chapter A |
| Chapter : Chapter B |
| Chapter : Chapter C |
| Chapter : Chapter D |