trier une structure XML sur plusieurs critères XSLT
Bonjour à tous,
Est-il possible de trier une structure XML selon plusieurs critères?
Je m'explique :
En entrée j'ai une structure comme celle-ci :
Code:
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
|
<struct>
<structure>
<type>PP</type>
<element2>123</element2>
<element3></element3>
</structure>
<structure>
<type>PP</type>
<element2>321</element2>
<element3>E</element3>
</structure>
<structure>
<type>PP</type>
<element2>121</element2>
<element3></element3>
</structure>
<structure>
<type>PQ</type>
<element2>654</element2>
<element3></element3>
</structure>
<structure>
<type>PQ</type>
<element2>456</element2>
<element3>A</element3>
</structure>
</struct> |
en sortie voici ce que je souhaiterai avoir :
Code:
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
|
<struct>
<structure>
<type>PQ</type>
<element2>456</element2>
<element3>A</element3>
</structure>
<structure>
<element1>PP</element1>
<element2>321</element2>
<element3>E</element3>
</structure>
<structure>
<type>PP</type>
<element2>121</element2>
<element3></element3>
</structure>
<structure>
<type>PP</type>
<element2>123</element2>
<element3></element3>
</structure>
<structure>
<type>PQ</type>
<element2>654</element2>
<element3></element3>
</structure>
</struct> |
Autrement dit, vérifier s'il y a un élément dans la balise <element3> et si tel est le cas trier les élément selon ce critère (dans un premier temps) afin d'avoir toutes les structures ayant un element3 en tête de structure et classé dans l'ordre de valeur de l'élément3
Ensuite trier le reste en fonction de la balise <element2> tout en ayant d'abord tous les élément de type PP et ensuite tous les élément de type PQ.
En gros, au début de la liste il me faut tout les éléments dans l'ordre croissant des <element3>
ET
ensuite les structures ne possédant pas <element3> doivent être classé en fonction de la valeur de <element2> et de leur type. PP avec element2 croissant puis PQ avec element2 de type croissant.
En espérant que quelqu'un puisse m'aider.
D'avance merci à tous
Cordialement