IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

XML/XSLT ranger par ordre alphabétique


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Par défaut XML/XSLT ranger par ordre alphabétique
    Bonjour à tous,
    j’étudie actuellement une partie de mon cours qui traite le XSLT et on me demande dans un exercice, à partir d'un document xml, d'afficher le noms des élèves dans l'ordre alphabétique ainsi que leur moyenne.
    Je m'attaque déjà à la partie qui permet de ranger dans l'ordre les noms, le soucis c'est que les noms s'affichent mais pas du tout dans l'ordre et je comprend pas pourquoi.

    code 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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
     <?xml-stylesheet href="class.xsl" type="text/xsl" ?>
     <universite>
     <etudiant><nom>Réjean Tremblay</nom>
     <cours sigle="INF8430" note="89" />
     <cours sigle="INF1030" note="69" />
     <cours sigle="INF1230" note="75" /></etudiant>
     <etudiant><nom>Martin Lambert</nom>
     <cours sigle="INF8430" note="75" />
     <cours sigle="INF1030" note="72" />
     <cours sigle="INF1230" note="73" /></etudiant>
     <etudiant><nom>Luc Alain</nom>
     <cours sigle="INF9430" note="39" />
     <cours sigle="INF1030" note="89" />
     <cours sigle="INF1230" note="79" /></etudiant>
     <etudiant><nom>Olive Saint-Amant</nom>
     <cours sigle="INF8430" note="91" />
      <cours sigle="INF1230" note="99" /></etudiant>
     </universite>
    voici ce que je suis en train de faire:
    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
    <?xml version="1.0" ?>
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="etudiant">
     <html>
     <body>
     <table border="1">
     <tr>
     <td>Étudiant </td>
     <td> Moyenne </td>
     </tr>
     </table>
     </body>
     </html>
     <xsl:apply-templates select="nom" >
     <xsl:value-of select="nom"/>
     <xsl:sort select="substring-after(nom,' ')" order="ascending"/>
     </xsl:apply-templates>
     
     </xsl:template>
    </xsl:stylesheet>
    voici ce que j'obtient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><table border="1"><tbody><tr> <td>Étudiant </td> <td> Moyenne </td> </tr></tbody></table>Réjean Tremblay <table border="1"><tbody><tr> <td>Étudiant </td> <td> Moyenne </td> </tr></tbody></table>Martin Lambert <table border="1"><tbody><tr> <td>Étudiant </td> <td> Moyenne </td> </tr></tbody></table>Luc Alain <table border="1"><tbody><tr> <td>Étudiant </td> <td> Moyenne </td> </tr></tbody></table>Olive Saint-Amant </body></html>
    Merci d'avance pour votre aide.
    While.dede

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:apply-templates select="nom" >
     <xsl:value-of select="nom"/>
     <xsl:sort select="substring-after(nom,' ')" order="ascending"/>
    </xsl:apply-templates>
    Deux erreurs sérieuses déjà.
    [1] xsl:value-of comme enfant de xsl:apply-templates, ce n'est pas permise.
    [2] xsl:sort select="substring-after(nom,' ')", l'idée n'est pas mal, mais ça n'a un sens et n'est effectif que pour une structure du genre comme ceci, qui évidemment n'est pas le cas.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <nom>
        <nom>abc yyy</nom>
        <nom>def xxx</nom>
        <nom>ghi zzz</nom>
    </nom>

    Si vous voulez voir un effet souhaîté, un prototype du genre comme ça.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="universite">
        <xsl:apply-templates select="etudiant">
            <xsl:sort select="substring-after(nom, ' ')" order="ascending" />
        </xsl:apply-templates>
    </xsl:template>
    <xsl:template match="etudiant">
        <etudiant>
            <xsl:value-of select="nom" />
        </etudiant>
    </xsl:template>

    Le reste, attention, c'est encore loin d'une solution sensible.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Par défaut
    Je vous remercie de votre aide tsuji.
    je vais essayer de faire fonctionner cette partie en m'appuyant sur le prototype que vous m'avez donné et je reviens vers vous dès que ça marche, ou alors et je m'en excuse d'avance, parce que je serais bloqué par un problème.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Par défaut
    C'est bon ça marche, maintenant je m'attaque à la partie moyenne.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Par défaut
    Petite difficulté supplémentaire on me demande de ne pas utiliser les crochets.
    Pour calculer la moyenne il faut que je fasse comme cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="(count(//cours/@note[@sigle=current()/@sigle]))div(count(//cours[@sigle=current()/@sigle]))"/>

  6. #6
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    @note[@sigle=...], ça ne se fait jamais parce que ça s'implique un attribut sigle comme un enfant de l'attribut note.

    Plutôt comme ça à la première vue en supposant sans complication de toutes sortes.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="sum(//cours[@sigle=current()/@sigle]/@note) div count(//cours[@sigle=current()/@sigle])"/>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Tri par ordre alphabétique
    Par Xenna dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/06/2009, 17h00
  2. ranger par ordre alphabétique
    Par dev0712 dans le forum Débuter
    Réponses: 12
    Dernier message: 20/12/2008, 19h54
  3. ADO + ACCESS : Ranger par ordre alphabétique
    Par kurkaine dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/06/2006, 10h05
  4. Tri par ordre alphabétique
    Par orus8 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2003, 19h27
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo