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 :

Regrouper les noeuds en fonction de leurs éléments qui se ressemblent en XSLT.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Regrouper les noeuds en fonction de leurs éléments qui se ressemblent en XSLT.
    Bonjour à tous,
    Je galère depuis quelques jours à effectuer une transformation XSLT pour transformer ces données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <feuille>
      <ligne>
        <code>101</code>
        <prix>10</prix>
      </ligne>
      <ligne>
        <code>102</code>
        <prix>10</prix>
      </ligne>
      <ligne>
        <code>101</code>
        <prix>100</prix>
      </ligne>
    </feuille>
    en données comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <feuille>
      <ligne>
        <code>101</code>
        <prix>110</prix>
      </ligne>
      <ligne>
        <code>102</code>
        <prix>10</prix>
      </ligne>
    </feuille>
    Donc en gros, pour chaque ligne, on regarde le code et si le code est le même, on additionne les prix.
    Je n'ai rien trouvé pour faire cela en XSLT que ce soit avec des for-each.
    En réalité je n'arrive pas à réaffecter une variable xslt. (Pour faire la somme des prix par exemple) et n'afficher qu'une fois, la ligne avec un code 101 par exemple !
    Merci beaucoup pour votre aide ou pour toute explication.

    Cordialement

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    En réalité je n'arrive pas à réaffecter une variable xslt.
    En fait, moi non plus, ... ni personne d'ailleurs, mais c'est normal puisque XSL ne le permet pas .

    Aussi, tu peux faire un regroupement à l'aide de xsl:key sur l'ensemble des ligne/code puis faire tes sommes.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par yovieirada Voir le message
    Donc en gros, pour chaque ligne, on regarde le code et si le code est le même, on additionne les prix.
    Je n'ai rien trouvé pour faire cela en XSLT que ce soit avec des for-each.
    Parce que c'est effectivement compliqué. Il s'agit d'un regroupement par valeurs. Voir la FAQ à propos de la méthode Muench.

    À savoir qu'en XSLT 2.0, for-each-group résout le problème.

    Citation Envoyé par yovieirada Voir le message
    En réalité je n'arrive pas à réaffecter une variable xslt. (Pour faire la somme des prix par exemple) et n'afficher qu'une fois, la ligne avec un code 101 par exemple !
    En XSLT on ne change pas la valeur d'une variable (oui, je sais, c'est ironique.)
    Pour regrouper, méthode Muench avec le lien fourni au-dessus.
    Pour faire la somme, fonction XPath sum().

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En XSLT on ne change pas la valeur d'une variable (oui, je sais, c'est ironique.)
    Pour regrouper, méthode Muench avec le lien fourni au-dessus.
    Pour faire la somme, fonction XPath sum().
    Merci pour la réponse

    C'est vrai que c'est dommage de ne pas pouvoir réaffecter une variable. Cela simplifierai énormément!

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par yovieirada Voir le message
    C'est vrai que c'est dommage de ne pas pouvoir réaffecter une variable. Cela simplifierai énormément!
    Je suis mitigé. Déclarer des variables réassignables, ça commence à ressembler diablement à de la programmation.
    Si je veux programmer, je préférerais utiliser un langage de programmation, plutôt que d'être encouragé à le faire en XML. D'un autre côté, si on en limitait l'usage aux seuls cas où ça se justifie, ça simplifierait pas mal de choses.

  6. #6
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Cela simplifierai énormément!
    Pas forcément ! Par exemple cela évite d'écrire x:=y puis x:=z ... qui peut être une source d'erreur dans un programme.

    D'un autre côté, si on en limitait l'usage aux seuls cas où ça se justifie, ça simplifierait pas mal de choses.
    Oui, c'est bien vrai ca, thelvin. Et, il n'est pas toujours facile de le faire comprendre et accepter. Aussi, dans quels cas peut-on bien utiliser XSL ?

Discussions similaires

  1. XSLT - Trier/regrouper des noeuds en fonction de leur position
    Par Rackamm dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 10/03/2014, 15h58
  2. [Toutes versions] Rapprocher les valeurs en fonction de leur rapprochement
    Par peygase83 dans le forum Excel
    Réponses: 4
    Dernier message: 27/07/2010, 17h34
  3. [XSLT] Regrouper les noeuds en fonction d'un attribut
    Par Creuvard dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2008, 11h31
  4. Regrouper les procédures et fonctions
    Par yuan dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/08/2007, 15h17
  5. [XSLT] Regrouper les noeuds qui se ressemblent
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/10/2006, 16h51

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