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: