Bonjour,

Je rencontre un problème avec une transformation XSLT.

Je dispose d'un fichier xml de ce type :
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
 
<ROWSET>
    <ROW num="1">
        <category>categorie 1</BW_BU_CODE>
        <product>produit 1</BW_BU_LAB>
    </ROW>
    <ROW num="2">
        <category>categorie 1</BW_BU_CODE>
        <product>produit 2</BW_BU_LAB>
    </ROW>
    <ROW num="3">
        <category>categorie 2</BW_BU_CODE>
        <product>produit 1</BW_BU_LAB>
    </ROW>
    <ROW num="4">
        <category>categorie 2</BW_BU_CODE>
        <product>produit 1</BW_BU_LAB>
    </ROW>
    <ROW num="5">
        <category>categorie 2</BW_BU_CODE>
        <product>produit 3</BW_BU_LAB>
    </ROW>
</ROWSET>
Et je souhaiterais afficher un tableau html de la forme suivante :

categorie 1---------produit1
---------produit2
categorie 2---------produit1
----------produit3

=> Le but étant de ne pas repéter la catégorie ou le produit quand celui-ci est le même que la ligne précédente.

Pour celà, j'ai donc utilisé preceding-sibling avec une condition dans le genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<xsl:choose> 
    <xsl:when test="not(PRODUCT=preceding-sibling::ROW/PRODUCT)">
		<xsl:value-of select="PRODUCT"/>
    </xsl:when>
</xsl:choose>
-> Je n'affiche pas le produit si celui-ci apparait déjà dans une ligne avant.

Or j'obtiens un tableau html comme celà :
categorie 1---------produit1
---------produit2
categorie 2---------
----------produit3

=> Comme preceding-sibling recherche dans tous les noeuds précédents, il trouve product 1 et par conséquant ne l'affiche pas.

Ma question est donc : Est-il possible de filtrer le preceding-sibling afin de ne tester l'existence du produit uniquement dans la catégorie en cours ?

Merci d'avance pour votre aide