1:<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   2:  version="1.0">
   3:
   4:<xsl:output indent="yes" method="xml"/>
   5:
   6:<xsl:template match="/">
   7:<classList>
   8:    <xsl:for-each select="/classList/class">
   9:    <class name="{@name}">
  10:        <studentList>
  11:        <xsl:call-template name="output-tokens">
  12:            <xsl:with-param name="list"><xsl:value-of select="studentList" /></xsl:with-param>
  13:        </xsl:call-template>
  14:        </studentList>
  15:    </class>
  16:    </xsl:for-each>
  17:</classList>
  18:</xsl:template>
  19:
  20:<xsl:template name="output-tokens">
  21:    <xsl:param name="list" />
  22:    <xsl:variable name="newlist" select="concat(normalize-space($list), ' ')" />
  23:    <xsl:variable name="first" select="substring-before($newlist, ' ')" />
  24:    <xsl:variable name="remaining" select="substring-after($newlist, ' ')" />
  25:    <id><xsl:value-of select="$first" /></id>
  26:    <xsl:if test="$remaining">
  27:        <xsl:call-template name="output-tokens">
  28:            <xsl:with-param name="list" select="$remaining" />
  29:        </xsl:call-template>
  30:    </xsl:if>
  31:</xsl:template>
  32:</xsl:stylesheet>
  33:
  34: