Bonjour,

J'ai un fichier XML semblable à un flux RSS tel que celui-ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<item>
 <source>Google News</source>
 <title>Actualité Google 1</title>
</item>
<item>
 <source>Google News</source>
 <title>Actualité Google 2</title>
</item>
<item>
 <source>Google News</source>
 <title>Actualité Google 3</title>
</item>
<item>
 <source>Yahoo</source>
 <title>Actualité Yahoo 1</title>
</item>
<item>
 <source>Yahoo</source>
 <title>Actualité Yahoo 2</title>
</item>
<item>
 <source>Yahoo</source>
 <title>Actualité Yahoo 3</title>
</item>
Grâce à une XSLT, je désire obtenir le résultat suivant:

1. Google News
------------
Actualité Google 1
Actualité Google 2
Actualité Google 3

2. Yahoo
------------
Actualité Yahoo 1
Actualité Yahoo 2
Actualité Yahoo 3

J'ai fait un regroupement grâce à la fonction preceding-sibling de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<xsl:apply-templates select="item"/>
 
<xsl:template match="item">
 <xsl:if test="not ( (preceding-sibling::*/source) = source )">
  <div><xsl:value-of select="source"/></div>
 </xsl:if>
 
 <div><xsl:value-of select="title" /></div>
</xsl:template>
Problème, je n'arriver pas à numéroter le titre des sources.
Si j'utilise position(), Yahoo se retrouve en 5 au lieu de 2

J'ai regardé la FAQ ainsi qu'un topic en utilisant "count(preceding-sibling::" mais je patauge...

Pouvez-vous m'aider ?