Your problem breaks into two halves: (a) tokenizing, and (b) grouping.
Both steps are much easier with XSLT 2.0 than 1.0. In 2.0 it's simply
<xsl:for-each-group select="list/*/@ids/tokenize(.,',')" group-by="."/>
<xsl:sort select="current-grouping-key()"/>
<xsl:value-of select="current-grouping-key()"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="count(current-group())"/>
</xsl:for-each-group>
For XSLT 1.0 you can learn about tokenizing by looking at the string
functions/templates at www.exslt.org, and you can learn about grouping at
www.jenitennison.com/xslt/grouping
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Smoother(_at_)gmx(_dot_)de [mailto:Smoother(_at_)gmx(_dot_)de]
Sent: 29 July 2006 15:08
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Occurences of comma-separated values
For instance, I have the following XML-File:
<list>
<item1 ids="a,b,c,e" />
<item2 ids="b,c,d" />
<item3 ids="a,c,d,e" />
<item4 ids="e,f" />
<item5 ids="a,c,d,e,g" />
</list>
I contemplate how to count the occurences of
(a) all ids (e.g. 'a') in the document and
(b) to count the occurences of a specific (known) id (e.g.
'f') in the document.
For case a the output should be like this:
a: 3
b: 2
c: 4
d: 3
e: 4
f: 1
g: 1
I started to learn XSL yesterday. For several other problems,
I found an easily adaptable solution on the web, numerous
time on this list here.
But for my current problem, there was no such help available.
Of course, I found here a similar posting which deals with
occurences of equal nodes
(http://www.stylusstudio.com/xsllist/200309/post20830.html),
but I don't know how to adapt it. So please find a solution
and help me and others who have the same problem.
Thanks in advance,
S. Renault
--
Echte DSL-Flatrate dauerhaft für 0,- Euro*. Nur noch kurze Zeit!
"Feel free" mit GMX DSL: http://www.gmx.net/de/go/dsl
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--