XSLT (opérations avancées) : Numérotation et ordonnancement

Tri de CDs avec xsl:sort et xsl:perform-sort

Tri de CDs

L'objectif de l'exercice est de se familiariser avec xsl:sort et xsl:perform-sort.

A partir d'un fichier XML qui dresse une liste d'albums et de leurs prix respectifs, on souhaite construire un second fichier XML n'ayant retenu que les 5 CDs les moins chers.

Remarque : si 2 CDs ont le même prix, alors les cds sont triés par nom (ordre alphabétique).

Fichier XML source :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<cds>
3
    <cd name="MagicCD">
4
        <price>7.00</price>
5
    </cd>
6
    <cd name="Electric Ladyland">
7
        <price>5.99</price>
8
    </cd>
9
    <cd name="Camembert Electrique">
10
        <price>4.50</price>
11
    </cd>
12
    <cd name="C'est du lourd">
13
        <price>6.00</price>
14
    </cd>
15
    <cd name="Couldn't Stand The Weather">
16
        <price>7.00</price>
17
    </cd>
18
    <cd name="SuperCD">
19
        <price>9.50</price>
20
    </cd>
21
</cds>
<?xml version="1.0" encoding="UTF-8"?>
<cds>
    <cd name="MagicCD">
        <price>7.00</price>
    </cd>
    <cd name="Electric Ladyland">
        <price>5.99</price>
    </cd>
    <cd name="Camembert Electrique">
        <price>4.50</price>
    </cd>
    <cd name="C'est du lourd">
        <price>6.00</price>
    </cd>
    <cd name="Couldn't Stand The Weather">
        <price>7.00</price>
    </cd>
    <cd name="SuperCD">
        <price>9.50</price>
    </cd>
</cds>

Fichier XML résultat (final) :

CTRL+C pour copier, CTRL+V pour coller
1
<?xml version="1.0" encoding="UTF-8"?>
2
<cds>
3
   <cd name="Camembert Electrique">
4
        <price>4.50</price>
5
    </cd>
6
   <cd name="Electric Ladyland">
7
        <price>5.99</price>
8
    </cd>
9
   <cd name="C'est du lourd">
10
        <price>6.00</price>
11
    </cd>
12
   <cd name="Couldn't Stand The Weather">
13
        <price>7.00</price>
14
    </cd>
15
   <cd name="MagicCD">
16
        <price>7.00</price>
17
    </cd>
18
</cds>
<?xml version="1.0" encoding="UTF-8"?>
<cds>
   <cd name="Camembert Electrique">
        <price>4.50</price>
    </cd>
   <cd name="Electric Ladyland">
        <price>5.99</price>
    </cd>
   <cd name="C'est du lourd">
        <price>6.00</price>
    </cd>
   <cd name="Couldn't Stand The Weather">
        <price>7.00</price>
    </cd>
   <cd name="MagicCD">
        <price>7.00</price>
    </cd>
</cds>

Question

Dans un premier temps, écrivez un fichier XSLT qui produira un fichier XML avec une liste de CDs triée par prix (en utilisant xsl:sort).

Rappel : Vous pouvez utiliser <xsl:copy-of> pour copier les nœuds du fichier source.

Question

Modifier votre programme pour que " si 2 CDs ont le même prix, alors les cds sont triés par nom (ordre alphabétique) "

Question

Modifier maintenant votre programme pour que le fichier résultat ne contienne que les 5 CDs les moins chers.

Question

Essayer maintenant d'obtenir le même résultat qu'à la 2ème question en utilisant l'instruction xsl:perform-sort.

A savoir : la liste des CDs triés par prix puis par nom. (pas de limite à 5).

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Benoît Villain, Thibault Brocheton, Lucas Charrier, Félix Motot, 2013-2016 (Contributions : Stéphane Crozat, les étudiants de l'UTC) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)