<xsl:template name="one">
<xsl:param name="str"/>
<xsl:param name="max"/>
<xsl:param name="pos"/>
<xsl:param name="sofar"/>
<xsl:variable name="char" select="substring($str,1,1)"/>
<xsl:variable name="dig" select="translate($char,'0123456789','dddddddddd')"/>
<xsl:choose>
<xsl:when test="$dig = $digit">
<xsl:call-template name="two">...</xsl:call-template>
</xsl:when>
<xsl:when test="$char = $plus or $char = $minus">
<xsl:call-template name="two">...</xsl:call-template>
</xsl:when>
<xsl:when test="$char = $fullstop">
<xsl:call-template name="three">...</xsl:call-template>
</xsl:when>
<xsl:when test="$char = $separator">
<xsl:call-template name="one">...</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>