Bonjour,
J'ai un fichier XML semblable à un flux RSS tel que celui-ci :
Grâce à une XSLT, je désire obtenir le résultat suivant:
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>
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 :
Problème, je n'arriver pas à numéroter le titre des sources.
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>
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 ?
Partager