Bonjour à tous,
Je sollicite votre aide car débutant avec XSL, je n'ai pas trouvé d'exemples se rapprochant de mon cas précis.
J'ai essayé plusieurs choses, for-each-group, muench, key, récursivité, mais je n'arrive à rien, je ne sais pas vers quelle methode me tourner.
J'ai en entrée un XML formé d'une succession d'éléments "contenu" possédant tous un attribut "class".
Cet attribut correspond à un style appliqué au différentes parties du texte : les différentes valeurs de cet attribut apparaissent donc dans un ordre complètement aléatoire.
Exemple :
Voici ce que je dois obtenir :
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 <document> <contenu class="classeA">texte A...</contenu> <contenu class="classeA">texte B...</contenu> <contenu class="classeA">texte C...</contenu> <contenu class="classeC">texte D...</contenu> <contenu class="classeC">texte E...</contenu> <contenu class="classeB">texte F...</contenu> <contenu class="classeA">texte G...</contenu> <contenu class="classeD">texte H...</contenu> <contenu class="classeD">texte I...</contenu> <contenu class="classeA">texte J...</contenu> <contenu class="classeA">texte K...</contenu> <contenu class="classeB">texte L...</contenu> <contenu class="classeB">texte M...</contenu> ... </document>
Si plusieurs éléments avec la même valeur d'attribut "class" se suivent, ils doivent être regroupés dans un élément possédant le même attribut.
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 <document> <contenu class="classeA"> <contenu class="1">texte A...</span> <contenu class="2">texte B...</span> <contenu class="3">texte C...</span> </contenu> <contenu class="classeC"> <contenu class="1">texte D...</span> <contenu class="2">texte E...</span> </contenu> <contenu class="classeB">texte F...</contenu> <contenu class="classeA 1">texte G...</contenu> <contenu class="classeD"> <contenu class="1">texte H...</span> <contenu class="2">texte I...</span> </contenu> <contenu class="classeA 2"> <contenu class="1">texte J...</span> <contenu class="2">texte K...</span> </contenu> <contenu class="classeB 1"> <contenu class="1">texte L...</span> <contenu class="2">texte M...</span> </contenu> </document>
L'attribut class des éléments regroupés doit être numérotés (compteur).
Exemple :
devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <contenu class="classeA">texte A...</contenu> <contenu class="classeA">texte B...</contenu> <contenu class="classeA">texte C...</contenu>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <contenu class="classeA"> <contenu class="1">texte A...</span> <contenu class="2">texte B...</span> <contenu class="3">texte C...</span> </contenu>
Une fois ces regroupements effectués, les différentes occurences d'une même classe doivent être numérotées également :
Par exemple
<contenu class="classeA 1">texte G...</contenu>
Car on a déjà <contenu class="classeA"> au dessus.
La dernière contrainte que j'ai, c'est que l'ordre des éléments texte ne doit pas être modifié.
D'avance, un immense merci pour votre aide !
Partager