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

XSL/XSLT/XPATH XML Discussion :

Besoin d'aide XML/XSL xpath function sum avec generate-id


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Besoin d'aide XML/XSL xpath function sum avec generate-id
    Je suis nouveau dans le XSLT et je souffre avec ce petit probleme. On ne doit pas utiliser la function xsl:key et on doit utiliser uniquement le XSLT 1.0
    Je me suis en sorti tant bien que mal. Mais là je vois pas et comprend pas pourquoi le resultat de sum() ne retourne pas les bonnes valeurs.

    Voici mon fichier xml:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet href="class3.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>

    ----------------------------------------
    Ce que j'ai fait (mon fichier XSL):

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform" >

    <xsl:template match="/">
    <html>
    <body>
    <table id="montableau" border="1">
    <tr>
    <th>Sigles</th><th>NbreEtudiants</th><th>TotalNotes</th><th>Moyenne du Cours</th>
    </tr>
    <!-- xsl:for-each select="universite/etudiant/cours[@*]" -->
    <xsl:apply-templates select="universite/etudiant/cours">
    </xsl:apply-templates>

    <!-- <td><xsl:value-of select="sum(//cours[@note=current()/@note][1])" /></td> -->

    </table>
    </body>
    </html>
    </xsl:template>

    <xsl:template match="cours">
    <xsl:variable name="totalEtudiants" select="count(//cours/@sigle)" />
    <xsl:variable name="totalNotes" select="sum(//cours/@note)" />
    <xsl:if test="generate-id((//cours[@sigle=current()/@sigle])[1]) = generate-id(.)">
    <tr>
    <td><xsl:value-of select="@sigle" /> </td>
    <td><xsl:value-of select="count((//cours[@sigle=current()/@sigle]))" /></td>

    <td><xsl:value-of select="sum(//cours/@note[//cours[@sigle=current()/@sigle]])" /></td>
    <td><xsl:value-of select="format-number(sum(//cours/@note[@notes[@sigle=current()/@sigle]]) div count((//cours[@sigle=current()/@sigle])),'##.0') " /></td>

    </tr>
    </xsl:if>

    </xsl:template>
    </xsl:stylesheet>
    -------------------------------------
    Le resultat que j'obtiens:
    Sigles NbreEtudiants TotalNotes Moyenne du Cours
    INF8430 3 850 0.0
    INF1030 3 850 0.0
    INF1230 4 850 0.0
    INF9430 1 850 0.0

    La fonction sum me retourne le total de toutes les notes: 850 au lieu de faire la somme de chaque sigle comme le montre le tableau ci-bas.
    -----------------------------------------

    Le resultat que je recherche devrait etre
    Sigles NbreEtudiants TotalNotes Moyenne du Cours
    INF8430 3 255 85.0
    INF1030 3 230 76.7
    INF1230 4 326 81.5
    INF9430 1 39 39.0

    .....

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si vous lisiez la formule xpath mentalement en langue parlante, vous découviriez le problème; et faites le même pour la version corrigée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!--
    <td><xsl:value-of select="sum(//cours/@note[//cours[@sigle=current()/@sigle]])" /></td>
    <td><xsl:value-of select="format-number(sum(//cours/@note[@notes[@sigle=current()/@sigle]]) div count((//cours[@sigle=current()/@sigle])),'##.0') " /></td>
    -->
    <td><xsl:value-of select="sum(//cours[@sigle=current()/@sigle]/@note)" /></td>
    <td><xsl:value-of select="format-number(sum(//cours[@sigle=current()/@sigle]/@note) div count((//cours[@sigle=current()/@sigle])),'##.0') " /></td>

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci, infiniment... Apparament j'ai renversé l'ordre de l'attribut note.. C'est sans doute la fatigue...Je devrais me concentrer un peu plus. En tout cas merci tsuji

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2008, 10h14
  2. besoin d'aide pour démarrer en asp.net avec dreamweaver
    Par lesultan2007 dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 20/05/2008, 17h35
  3. Réponses: 2
    Dernier message: 19/04/2008, 00h02
  4. [XSLT] besoin d'aide XML -> listes HTML imbriquées
    Par lasdou15 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/04/2008, 13h47
  5. [XML/XSL/XPATH]Requete XPATH pour transformation
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 04/01/2006, 17h32

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