Bonjour,
J'ai une liste de produits classés par catégories que je souhaite afficher dans un tableau à deux colonnes.
Chaque cellule de mon tableau comporte un titre de catégorie, suivi de plusieurs checkboxs (autant de checkboxs que de produits dans la catégorie).
Mon flux XML est le suivant:
Mon code XSLT est le 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
26
27 <Hierarchy> <Label>Mon label de top hierarchie 1</label> <Children> <Hierarchy> <Label>Mon label de hierarchie 1</label> <Children> <Hierarchy> <Label>Mon label de produit 1-1</label> </Hierarchy> <Hierarchy> <Label>Mon label de produit 1-2</label> </Hierarchy> </Children> </Hierarchy> <Hierarchy> <Label>Mon label de hierarchie 2</label> <Children> <Hierarchy> <Label>Mon label de produit 2-1</label> </Hierarchy> <Hierarchy> <Label>Mon label de produit 2-2</label> </Hierarchy> </Children> </Hierarchy> </Children> </Hierarchy>
Le code ci-dessus permet dans un premier temps en se basant sur la fonction modulo de savoir si je suis dans la première cellule de mon tableau (pour pouvoir limiter le nombre de cellules à deux sur ma ligne). Je remplis ma première cellule puis j'essaye d'atteindre le noeud frère suivant, et lorsque je boucle dessus, je récupére des produits de la catégorie précédente voir des catégories suivantes et je n'obtiens pas le résultat souhaité.
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
26
27
28 <xsl:variable name="contenuRayon" select="Children/Hierarchy"/> <xsl:for-each select ="$contenuRayon"> <xsl:if test="position() mod 2 = 1"> <tr> <td> <div class="list-produit"><h3><xsl:value-of select="Label"/></h3> <!-- Gestion des checkboxs de la première colonne --> <xsl:variable name="listeProduits" select="Children/Hierarchy"/> <xsl:for-each select="$listeProduits"> <xsl:variable name="id" select="concat('-',Id)"/> <div><input name="{Id}" id="{concat($positionRayon,$id)}" type="checkbox" /><label for="{concat($positionRayon,$id)}"><xsl:value-of select="Label"/></label></div> </xsl:for-each> </div> </td> <td> <div class="list-produit"><h3><xsl:value-of select="following-sibling::Hierarchy/Label"/></h3> <!-- Gestion des checkboxs de la deuxième colonne --> <xsl:variable name="listeProduits2" select="$listeProduits/following-sibling::Hierarchy[1]"/> --<xsl:value-of select="count($listeProduits2)"/> <xsl:for-each select="$listeProduits2"> <xsl:variable name="id" select="concat('-',Id)"/> <div><input name="{Id}" id="{concat($positionRayon,$id)}" type="checkbox" /><label for="{concat($positionRayon,$id)}"><xsl:value-of select="Label"/></label></div> </xsl:for-each> </div> </td> </tr> </xsl:if> </xsl:for-each>
Avez-vous une idée d'où peut venir le problème ?
Merci par avance pour votre aide,
Thibault
Partager