[0] You can make some variant on some splitting algorithm in xslt v1.0 - a showpiece subject on the recursion use of named template.
[1] Off-hand, I can show you a sketch like this.
[tt]
<xsl:template name="output">
<xsl

aram name="s" />
<xsl:value-of select="$s" />
</xsl:template>
<xsl:template name="split_string_return_last">
<xsl

aram name="sin" />
<xsl

aram name="separator" select="','" />
<xsl

aram name="sout" />
<xsl:variable name="candidate" select="substring-after($sin,$separator)" />
<xsl:choose>
<xsl:when test="$candidate!=''">
<xsl:call-template name="split_string_return_last">
<xsl:with-param name="sin" select="$candidate" />
<xsl:with-param name="separator" select="$separator" />
<xsl:with-param name="sout" select="''" />
</xsl:call-template>
</xsl:when>
<xsl

therwise>
<xsl:call-template name="output">
<xsl:with-param name="s" select="$sin"/>
</xsl:call-template>
</xsl

therwise>
</xsl:choose>
</xsl:template>
[/tt]
[2] To illustrate the use of it: suppose you at some moment in time you call that named template furnishing the comma-separated string (a parameter or a variable or a literal), it will output the last entry.
[tt]
<xsl:variable name="given" select="'3,2,4,3'" />
<xsl:call-template name="split_string_return_last">
<xsl:with-param name="sin" select="$given" />
<xsl:with-param name="separator" select="','" />
</xsl:call-template>
[/tt]