Bonjour,
Je cherche à réaliser la transformation suivante:
XML=
XSLT=
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 <DATA> <S1> <dossier> <details> <A>1A</A> <B>1B</B> </details> <conf>conf1</conf> </dossier> <action>action1</action> </S1> <S2> <dossier> <details> <C> <test>2A</test> </C> <A>1A</A> <B>2B</B> </details> <conf>conf</conf> </dossier> </S2> </DATA>
J'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <xsl:template match="/"> <DOSSIER> <DETAILS> <xsl:copy-of select="//details/*[not(preceding::node()=node())]"/> </DETAILS> </DOSSIER> </xsl:template>
Alors que je souhaiterais obtenir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <DOSSIER> <DETAILS> <A>1A</A> <B>1B</B> <B>2B</B> </DETAILS> </DOSSIER>
En fait je ne comprends pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <DOSSIER> <DETAILS> <A>1A</A> <B>1B</B> <C> <test>2A</test> </C> </DETAILS> </DOSSIER>
1- pkoi la balise "C" est ignorée
2- comment faire en sorte que la balise B ne soit pas répétée (en fait le test "preceding::node=node()" que je fais compare le noeud dans son intégralité (c'ets pourquoi "<A>1A</A>" n'est pas répétée alors que je voudrais juste une vérification sur le nom de l'élément.
En fait de manière plus globale je souhaite "merger" tous les éléments "dossier" des différents "Sx" dasn un seul élément global "DOSSIER". Comme cela me paraissait un peu compliqué je me suis attaqué d'abord au contenu de "détails" en pensant ensuite appliquer la même logique pour les autres contenus ("conf" ici dans cet exemple mais il y en a plus dans mon scénario réel)
J'ai fait pas mal de recherche et j'ai regardé les entrées de la FAQ sur la méthode de Muench et ses variations mais j'ai pas trop réussi à l'appliquer... :/
Quelqu'un pourrait-il m'aider s'il vous plait?
Merci d'avance,
Seb!
Partager