Bonjour,

J'ai vraiment beaucoup cherché avant d'en venir à poser la question suivante :

J'ai un xml qui a cette forme :

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
 
<bien>
    <categorie_a>
        <noeud_a>valeur_a</noeud_a>
    </categorie_a>
    <categorie_b>
        <noeud_b>valeur_b</noeud_b>
    </categorie_b>
    <categorie_c>
        <noeud_c>valeur_c</noeud_c>
    </categorie_c>
</bien>
<bien>
    <categorie_a>
        <noeud_a>valeur_a</noeud_a>
    </categorie_a>
    <categorie_d>
        <noeud_d>valeur_d</noeud_d>
    </categorie_d>
    <categorie_e>
        <noeud_e>valeur_e</noeud_e>
    </categorie_e>
</bien>
En gros, certains noeuds de certaines catégories doivent être regroupé en options afin qu'en sorti on obtienne :

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
 
<bien>
    <categorie_a>
        <noeud_a>valeur_a</noeud_a>
    </categorie_a>
    <options>
        <noeud_b>valeur_b</noeud_b>
        <noeud_c>valeur_c</noeud_c>
    <options>
</bien>
<bien>
    <categorie_a>
        <noeud_a>valeur_a</noeud_a>
    </categorie_a>
    <options>
        <noeud_d>valeur_d</noeud_d>
        <noeud_e>valeur_e</noeud_e>
    <options>
</bien>
J'ai essayé avec des variables mais vu qu'on peut pas les re-modifier cela ne fonctionne pas du tout... Mon xsl ressemble à ca :

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
 
<xsl:template match="*">
    <xsl:for-each select="bien">
        <xsl:element name="bien">
            <xsl:apply-templates select="categorie_a" />
            <xsl:apply-templates select="categorie_a" />
        </xsl:element>
    </xsl:for-each>
</xsl:template>
 
<xsl:template match="categorie_a">
    <categorie_a>
        <noeud_a><xsl:value-of select="noeud_a"/></noeud_a>
    </categorie_a>
</xsl:template>
Ensuite j'ai essayé pas mal de chose avec xpath mais rien ne fonctionne

J'espère que j'ai été clair :-) Merci !