Bonjour,
Je rencontre un problème avec une transformation XSLT.
Je dispose d'un fichier xml de ce type :
Et je souhaiterais afficher un tableau html de la forme suivante :
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>
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 :
-> Je n'affiche pas le produit si celui-ci apparait déjà dans une ligne avant.
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>
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
Partager