Bonjour,
Je n'ai pas l'habitude de demander de l'aide sur des forums mais là j'ai fait toutes les recherches que je pouvais mais je n'ai pas trouvé de solution à mon problème...
J'ai un fichier XML de la forme suivante :
Et je voudrais obtenir quelque chose comme ça :
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 <?xml version="1.0" encoding="UTF-8"?> <contenu> <tableau> <autres_balises>blabla</autres_balises> </tableau> <figure> <autres_balises2>blabla2</autres_balises2> </figure> <text> <titre><autres_balises3>Letitre</autres_balises3></titre> <sous_titre><autres_balises4>Lesoustitre</autres_balises4></sous_titre> </text> <pagination>blabla</pagination> </contenu>
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 <sourceDoc> <surface> <table> <other_tag1>blabla</other_tag> </table> <figure> <other_tag2>blabla2</other_tag2> </figure> </surface> <text> <title> <other_tag3>Title</other_tag3> </title> <subtitle> <other_tag4>Subtitle</other_tag4> </subtitle> </text> <surface> <pagination>blabla</pagination> </surface> </sourceDoc>
Donc pour expliquer ce que je voudrais faire : pour certains éléments définis je veut les regrouper sous <surface>, et d'autres sous <text>, tout en maintenant le traitement des autres enfants dans chacun des élements <tableau>, <figure>, <titre>, etc. J'ai mis ces éléments dans cet ordre là pour mon exemple (tableau puis figure, puis texte, etc), mais j'aurai d'autre fichiers xml avec des ordres différents (par exemple texte contenant titre, suivi de tableau, resuivi de texte, etc). Je dois de plus garder l'ordre dans lequel apparaissent ces différents éléments dans mon nouveau fichier xml.
J'ai réfléchi la chose ainsi :
En fonction du frère précédent et du noeud courant, ex : frère précédent = <figure> et frère courant = <texte>, on ferme la balise </surface> et on ouvre <text> par exemple. Mais ce traitement est compliqué (il faut traiter le cas de la toute première balise rencontrée, ainsi que la toute dernière avant <contenu>), et surtout l'erreur que j'obtiens est :" The element type "text" must be terminated by the matching end-tag "</text>"". Donc je ne peux à priori pas séparer la balise ouvrante de fermante. De toute façon je pense que cette manière de réfléchir ne correspond pas au mode de fonctionnement de xsl...
Mais du coup je suis complètement bloquée... Est-ce que quelqu'un aurait des idées?
Je suis désolée si je n'ai pas été claire, n'hésitez pas à me demander d'autres explications s'il le faut!
Merci d'avance!
Cécile
Partager