Если вам нужно решение, которое не выводит конечный элемент <br/>
, попробуйте следующее:
<TR> <TD> Name: </TD> <TD><xsl:apply-templates select="ZNAME"/> </TD> </TR>
<xsl:template match="ZNAME" name="convertcommas">
<xsl:param name="text" select="."/>
<xsl:value-of select="substring-before(concat($text,','),',')" />
<xsl:if test="contains($text,',')">
<br />
<xsl:call-template name="convertcommas">
<xsl:with-param name="text" select="substring-after($text,',')" />
</xsl:call-template>
</xsl:if>
</xsl:template>
concat($text,',')
гарантирует, что substring-before
видит хотя бы одну запятую, тем самым выводя строку самостоятельно, если изначально не было запятых.