[Home] [By Thread] [By Date] [Recent Entries]
Here is the XSLT 1.0 stylesheet for this (using an extension function, node-set): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:common="http://exslt.org/common"> <xsl:output method="text" /> <xsl:key name="x" match="token" use="." /> <xsl:template match="/list">
<xsl:variable name="rtf">
<xsl:for-each select="*">
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="@ids" />
<xsl:with-param name="delim" select="','" />
</xsl:call-template>
</xsl:for-each>
</xsl:variable> <xsl:for-each select="common:node-set($rtf)/token[generate-id() =
generate-id(key('x', .)[1])]">
<xsl:sort select="." />
<xsl:value-of select="." />: <xsl:value-of select="count(key('x',
.))" /><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template><xsl:template name="tokenize"> <xsl:param name="string" /> <xsl:param name="delim" /> <xsl:choose>
<xsl:when test="contains($string, $delim)">
<token><xsl:value-of select="substring-before($string, $delim)" /></token>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string,
$delim)" />
<xsl:with-param name="delim" select="$delim" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<token><xsl:value-of select="$string" /></token>
</xsl:otherwise>
</xsl:choose>
</xsl:template></xsl:stylesheet> With XSLT 2.0, the solution will be simpler. Regards, Mukul http://gandhimukul.tripod.com On 7/29/06, Smoother@xxxxxx <Smoother@xxxxxx> wrote: For instance, I have the following XML-File:
|

Cart



