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:<testroot> 8: <xsl:call-template name="output-tokens"> 9: <xsl:with-param name="list">1,2,3,4,5</xsl:with-param> 10: <xsl:with-param name="delimiter">,</xsl:with-param> 11: </xsl:call-template> 12:</testroot></xsl:template> 13: 14:<xsl:template name="output-tokens"> 15: <xsl:param name="list" /> 16: <xsl:param name="delimiter" /> 17: <xsl:variable name="newlist"> 18: <xsl:choose> 19: <xsl:when test="contains($list, $delimiter)"><xsl:value-of select="normalize-space($list)" /></xsl:when> 20: 21: <xsl:otherwise><xsl:value-of select="concat(normalize-space($list), $delimiter)"/></xsl:otherwise> 22: </xsl:choose> 23: </xsl:variable> 24: <xsl:variable name="first" select="substring-before($newlist, $delimiter)" /> 25: <xsl:variable name="remaining" select="substring-after($newlist, $delimiter)" /> 26: <num><xsl:value-of select="$first" /></num> 27: <xsl:if test="$remaining"> 28: <xsl:call-template name="output-tokens"> 29: <xsl:with-param name="list" select="$remaining" /> 30: <xsl:with-param name="delimiter"><xsl:value-of select="$delimiter"/></xsl:with-param> 31: </xsl:call-template> 32: </xsl:if> 33:</xsl:template> 34:</xsl:stylesheet> 35: 36: