xsl-list
[Top] [All Lists]

RE: [xsl] Occurences of comma-separated values

2006-07-30 01:16:56
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>
--~--