Bonjour,

Cella fait quelque jours que je fait face à une difficulté dans la realisation d'une application. En fait la finalité de la procédure que je doit faire c'est prendre un document XML en entrer et retourner un document XML trie respectant la schéma du fichier de base.
De ce fait j'ai décider d'utiliser XSLT pour faire le tri mais jusqu'ici ce que j'ai pu faire ne me retourne que la copie du document d'origine sans toute fois effectuer le trie.

Voila la structure de mon fichier XML
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
<?xml version="1.0" encoding="utf-8"?>
<!--liste des itinearaire d'une reponse SuperBB-->
<Itineraires>
  <!--noued d'un itineraire qui peut etre aller et retour -->
  <itineraire>
    <!--liste des segements aller -->
    <segmentaller>
      <!--segemnt du vol -->
      <segment>
        <airv></airv> <!--Code compagnie aérienne -->
        <fltnum></fltnum> <!-- Numéro du vol -->
        <opsuf></opsuf> 
        <startdt></startdt> <!-- date de départ -->
        <startairp></startairp> <!-- Code aeroport de départ-->
        <endairp></endairp> <!-- code aeroprt de destination-->
        <starttm></starttm> <!--heure de départ -->
        <endtm></endtm> <!-- heure d'arriver -->
        <daychg></daychg> <!-- indik si le vol arrive le meme jour que le jour de départ -->
        <conx></conx> <!-- Indik si le vol est connecte au prochain -->
        <airpchg></airpchg> <!-- indik le changement de l'aeroport (non applicable au premier segment de vol d'une connexion) -->
        <equip></equip> <!-- indik si le changement d'équipement a lieu a un arret en route-->
        <numstops></numstops> <!-- nombre d'arret intermdiare -->
        <opairvInd></opairvInd> <!-- indique si le transporteur ci dessus differe du transporteur qui opére effectivement le vol -->
        <linksellagrmnt></linksellagrmnt> <!-- Type d'entente entre l'hote et le transporteur -->
        <GenTrafRestriction></GenTrafRestriction> <!--Indicateur de restriction de la circulation -->
        <DaysOperates></DaysOperates> <!-- affiche le jour de la semaine du vol-->
        <JrnyTm></JrnyTm> <!-- Durée total du vol-->
        <EndDt></EndDt> <!-- date d'arriver -->
        <OpAirV></OpAirV> <!-- code des transporteurs aerien pour le transporteur qui opere effectivement le vol-->
        <OpFltDesignator></OpFltDesignator> <!-- designateur du vol -->
        <OpFltSuf></OpFltSuf> <!-- Sufixe du vol d'exploitation -->
        <StartTerminal></StartTerminal> <!-- Terminal de départ -->
        <EndTerminal></EndTerminal> <!-- Terminal d'arriver -->
        <FltTm></FltTm> <!-- temp de vol ecoule en minute -->
        <lsaind></lsaind> <!-- indique si le transporteur a la disponibilite des derniere place -->
        <GalileoAirVInd></GalileoAirVInd> 
      </segment>
    </segmentaller>
    <!--liste des segements retour -->
    <segmentretour>
      <!--segemnt du vol -->
      <segment>
        <airv></airv> <!--Code compagnie aérienne -->
        <fltnum></fltnum> <!-- Numéro du vol -->
        <opsuf></opsuf>  <!-- Reserved Currently ignored -->
        <startdt></startdt>  <!-- date de départ -->
        <startairp></startairp>  <!-- Code aeroport de départ-->
        <endairp></endairp>  <!-- code aeroprt de destination-->
        <starttm></starttm>  <!--heure de départ -->
        <endtm></endtm>  <!-- heure d'arriver -->
        <daychg></daychg>  <!-- indik si le vol arrive le meme jour que le jour de départ -->
        <conx></conx>  <!-- Indik si le vol est connecte au prochain -->
        <airpchg></airpchg>  <!-- indik le changement de l'aeroport (non applicable au premier segment de vol d'une connexion) -->
        <equip></equip>  <!-- indik si le changement d'équipement a lieu a un arret en route-->
        <numstops></numstops>  <!-- nombre d'arret intermdiare -->
        <opairvInd></opairvInd>  <!-- indique si le transporteur ci dessus differe du transporteur qui opére effectivement le vol -->
        <linksellagrmnt></linksellagrmnt>  <!-- Type d'entente entre l'hote et le transporteur -->
        <GenTrafRestriction></GenTrafRestriction>  <!--Indicateur de restriction de la circulation -->
        <DaysOperates></DaysOperates>  <!-- affiche le jour de la semaine du vol-->
        <JrnyTm></JrnyTm>  <!-- Durée total du vol-->
        <EndDt></EndDt>  <!-- date d'arriver -->
        <OpAirV></OpAirV>  <!-- code des transporteurs aerien pour le transporteur qui opere effectivement le vol-->
        <OpFltDesignator></OpFltDesignator>  <!-- designateur du vol -->
        <OpFltSuf></OpFltSuf>  <!-- Sufixe du vol d'exploitation -->
        <StartTerminal></StartTerminal>  <!-- Terminal de départ -->
        <EndTerminal></EndTerminal>  <!-- Terminal d'arriver -->
        <FltTm></FltTm>  <!-- temp de vol ecoule en minute -->
        <lsaind></lsaind>  <!-- indique si le transporteur a la disponibilite des derniere place -->
        <GalileoAirVInd></GalileoAirVInd>  <!-- indique si le transporteur est un participant galileo -->
      </segment>
    </segmentretour>
     <!-- Information sur le tarif du vol -->
    <fareinfos>
      <UniqueKey></UniqueKey> <!-- description nombre de passager -->
      <QuoteNum></QuoteNum> <!-- numero de soumission -->
      <QuoteType></QuoteType> <!-- Type de dévise en cour de traitement -->
      <LastTkDt></LastTkDt> <!-- Derniére mise a jour de soumission -->
      <QuoteDt></QuoteDt> <!-- Date de citation -->
      <IntlSaleInd></IntlSaleInd> <!-- Indicateur de vente international-->
      <BaseFareCurrency></BaseFareCurrency> <!-- Code de la devise dans laquel le tarif de base est fixé-->
      <BaseFareAmt></BaseFareAmt> <!-- tarif de base montant -->
      <EquivCurrency></EquivCurrency> <!-- Code de la devise dans laquelle le montant équivalent est spécifié-->
      <EquivAmt></EquivAmt> <!-- montant tarif de base convertir dans la devise du pays de paiement-->
      <EquivDecPos></EquivDecPos> <!-- nombre de décimal pour tarif équivalent -->
      <TotCurrency></TotCurrency> <!-- Code de la devise du montant totale -->
      <TotAmt></TotAmt> <!-- tarif de base -->
      <TotDecPos></TotDecPos> <!-- Nombre de decimal pour le prix du transporteur aérien-->
    </fareinfos>
  </itineraire>
</Itineraires>
et la c'est le fichier XSL que j'utilise

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <Itineraires>
      <xsl:for-each select="Itineraires/itineraire">
        <xsl:sort select="fareinfos/TotAmt" data-type="number" order="ascending"/>
      </xsl:for-each>
    </Itineraires>
  </xsl:template>
  <xsl:template match="/">
    <xsl:copy-of select="."/>
  </xsl:template>
</xsl:stylesheet>
donc j'aimerais effectuer un tri en fonction du montant qui est entre les balises <TotAmt>. Je ne comprend vraiment pas pourquoi cella ne marche pas.

Je compte sur votre aide, merci.

@++