Bonjour à tous et merci d'avance de lire ces quelques lignes.
Donc voila depuis quelques jours je suis bloqué sur un script en xsl me permettant de trier des données xml. Voici mon xml :
J'aimerais en fait rentrer dans l'arborescence jusqu'à subs
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 <FILE NAME="toto"> <bulk xmlns:subs="sum.xsd" xmlns="config.xsd" xmlns:xn="generic.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="config.xsd config.xsd"> <config> <subs:Data> <subs:NID id="2"> blabla </subs:NID> <subs:NID id="3"> blibli </subs:NID> <subs:Ind id="1"> bloblo </subs:Ind> </subs:Data> </config> </bulk>ata et ensuite trier tous les fils. En effet même si ceux-ci on des noms(élément) différents, ils ont tous en commun un attribut id. Actuellement après plusieurs essais je suis parvenu à comprendre le système d'espace de nom pour pouvoir descendre proprement dans l'arborescence, mais j'ai deux problèmes concernant le tri.
J'ai utilisé deux méthodes pour pouvoir effectuer ce que je recherche :
La première me permet de trier mes éléments proprement mais elle ne copie pas l'arborescence en entier juste l'élément courant et la nouvelle réorganisation.
Xsl :
Resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <xsl:for-each select="conf:bulk/conf:config/subs:Data/*"> <xsl:sort data-type="number" select="@id" order="ascending"/> <xsl:copy-of select="."/> </xsl:for-each>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <subs:Ind id="1"> bloblo </subs:Ind> <subs:NID id="2"> blabla </subs:NID> <subs:NID id="3"> blibli </subs:NID>
Le tri est donc bien effectué mais je n'ai pas de recopie de l'arborescence en entier.
J'ai alors essayer de mettre cette ligne à la place de copy-of
Mais comment je m'y attendais, cela a en fait recopier l'arborescence la plus haute en écrasant le tri. J'ai quand même l'arborescence que je recherche. Je voudrais savoir donc si il y a une méthode pour mixer les deux pour que j'obtienne cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<xsl:copy-of select="../../../.."/>
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 <FILE NAME="toto"> <bulk xmlns:subs="sum.xsd" xmlns="config.xsd" xmlns:xn="generic.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="config.xsd config.xsd"> <config> <subs:Data> <subs:Ind id="1"> bloblo </subs:Ind> <subs:NID id="2"> blabla </subs:NID> <subs:NID id="3"> blibli </subs:NID> </subs:Data> </config> </bulk>
Merci d'avance d'avoir lu jusqu'ici. Je précise que je ne suis pas un dieu en xsl étant donné que j'ai commencé cela il y a 4-5 jours
.
Bonne journée
Partager