XSLT 2.0: What's better, an example.


In XSLT 1.0:
<xsl:template match="@one-of" name="parse-one-of">
<xsl:param name="list" select="string(.)" />
<xsl:if test="$list">
<xsl:variable name="value"
select="substring-before($list, '|')" />
...
<!-- do something with $value -->
...
<!-- recursive call -->
<xsl:call-template name="parse-one-of">
<xsl:with-param name="list"
select="substring-after($list, '|')" />
</xsl:call-template>
</xsl:if>
</xsl:template>

In XSLT 2.0:

<xsl:for-each select="tokenize(@one-of, '|')">
<!-- do something with . -->
</xsl:for-each>