Are you still using .NET 1.x? Otherwise you should not use the obsolete XslTransform but rather XslCompiledTransform instead. With that my stylesheet works.
If you want to continue to use XslTransform then you can't use exsl:node-set as it does not support that. Instead you need to use a different namespace:
Code:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
version="1.0"
exclude-result-prefixes="str msxsl">
<xsl:include href="http://www.exslt.org/str/functions/tokenize/str.tokenize.template.xsl"/>
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="market">
<xsl:copy>
<xsl:variable name="tokens">
<xsl:call-template name="str:tokenize">
<xsl:with-param name="string" select="."/>
<xsl:with-param name="delimiters" select="'|'"/>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="msxsl:node-set($tokens)/token">
<m>
<xsl:value-of select="."/>
</m>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
--
Martin Honnen
Microsoft MVP - XML