Nic Miloslav     Example 33    KEYWORDS      EXAMPLES      AUTHORS     

Stylesheet 1 and Stylesheet 3 demonstrate different ways of setting xsl:variable, Stylesheet 2 and Stylesheet 4 of setting xsl:param.


     XML     HOME     XSL 1     XSL 2     XSL 3     XSL 4      
<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="count(//chapter)"/>
</xsl:variable>
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:value-of select="."/>
<xsl:text> (</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text> /</xsl:text>
<xsl:value-of select="$totalChapters"/>
<xsl:text> )</xsl:text>
</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>Chapter A (1/4)</TD></TR>
<TR>
<TD>Chapter B (2/4)</TD></TR>
<TR>
<TD>Chapter C (3/4)</TD></TR>
<TR>
<TD>Chapter D (4/4)</TD></TR></TABLE> </BODY> </HTML>

     OUTPUT 1     HOME     XML     XSL 1     HTML 1     
Chapter A (1/4)
Chapter B (2/4)
Chapter C (3/4)
Chapter D (4/4)

     XSL 2     HOME     XML     HTML 2     OUTPUT 2     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:param name="totalChapters">
<xsl:value-of select="count(//chapter)"/>
</xsl:param>
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:value-of select="."/>
<xsl:text> (</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text> /</xsl:text>
<xsl:value-of select="$totalChapters"/>
<xsl:text> )</xsl:text>
</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 A (1/4)</TD></TR>
<TR>
<TD>Chapter B (2/4)</TD></TR>
<TR>
<TD>Chapter C (3/4)</TD></TR>
<TR>
<TD>Chapter D (4/4)</TD></TR></TABLE> </BODY> </HTML>

     OUTPUT 2     HOME     XML     XSL 2     HTML 2     
Chapter A (1/4)
Chapter B (2/4)
Chapter C (3/4)
Chapter D (4/4)

     XSL 3     HOME     XML     HTML 3     OUTPUT 3     
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:variable name="totalChapters" select='count(//chapter)'/>
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//chapter">
<TR><TD>
<xsl:value-of select="."/>
<xsl:text> (</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text> /</xsl:text>
<xsl:value-of select="$totalChapters"/>
<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 (1/4)</TD></TR>
<TR>
<TD>Chapter B (2/4)</TD></TR>
<TR>
<TD>Chapter C (3/4)</TD></TR>
<TR>
<TD>Chapter D (4/4)</TD></TR></TABLE> </BODY> </HTML>

     OUTPUT 3     HOME     XML     XSL 3     HTML 3     
Chapter A (1/4)
Chapter B (2/4)
Chapter C (3/4)
Chapter D (4/4)

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

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

     OUTPUT 4     HOME     XML     XSL 4     HTML 4     
Chapter A (1/4)
Chapter B (2/4)
Chapter C (3/4)
Chapter D (4/4)