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 :

[XSLT] somme cumultative


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut [XSLT] somme cumultative
    bonjour

    j'ai un ensemble de données xml qui ressemble un peu à ca :


    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
     
    <ligne>
    <nomTiers>DESPREZ Herve</nomTiers>
    <designationArticle>MINEOL 10/20/4 S 25K</designationArticle>
    <unite>QT</unite>
    <quantiteCommande>5,00</quantiteCommande>
    </ligne>
    <ligne>
    <nomTiers>ETIENNE Georges</nomTiers>
    <designationArticle>PHYSIO PEP S T2 S BB5</designationArticle>
    <unite>QT</unite>
    <quantiteCommande>10,00</quantiteCommande>
    </ligne>
    <ligne>
    <nomTiers>RIMBAUD Arthur </nomTiers>
    <designationArticle>PHYSIO PEP S T2 S BB5</designationArticle>
    <unite>QT</unite>
    <quantiteCommande>25,00</quantiteCommande>
    </ligne>
    <ligne>
    <nomTiers>DESPREZ Herve</nomTiers>
    <designationArticle>PHYSIO PEP S T2 S BB5</designationArticle>
    <unite>QT</unite>
    <quantiteCommande>5,00</quantiteCommande>
    </ligne>
    <ligne>
    <nomTiers>MALBRUNOT Georges</nomTiers>
    <designationArticle>MINEOL 10/20/4 S 25K</designationArticle>
    <unite>QT</unite>
    <quantiteCommande>2,00</quantiteCommande>
    </ligne>
    l'ensemble est affiché dans un tableau
    grâce à mon xsl, je fais des tris "dynamiques" dessus (par n'importe quelle colonne)

    ce que j'aimerais c'est faire une colonne "quantité cumulée".

    quand on fait un tri sur designationArticle, cette colonne contiendrait le cumul par article... par exemple pour PHYSIO PEP S T2 S BB5, on aurait 10 dans la premiere ligne, puis 35 dans la deuxième et 40 dans la dernière

    comment faire ???

    merci d'avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Pas bien compris, ce n'est pas qqch dans ce genre que tu souhaites?
    http://www.developpez.net/forums/vie...=90007&start=5

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    non je ne crois pas

    à partir du xml du précédent post j'aimerais avoir un tableau du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Désignation           | Nom                   |  Qté  | Somme cumul
    -------------------------------------------------------------
    MINEOL 10/20/4 S 25K  | DESPREZ Herve         |  5,00 |  5,00 
    -------------------------------------------------------------
    MINEOL 10/20/4 S 25K  | MALBRUNOT Georges     |  2,00 |  7,00 
    -------------------------------------------------------------
    PHYSIO PEP S T2 S BB5 | ETIENNE Georges       | 10,00 | 10,00
    -------------------------------------------------------------
    PHYSIO PEP S T2 S BB5 | RIMBAUD Arthur        | 25,00 | 35,00
    -------------------------------------------------------------
    PHYSIO PEP S T2 S BB5 | DESPREZ Herve         |  5,00 | 40,00
    la première colonne est l'article, la deuxième le nomTiers, la troisième la quantiteCommande... et la dernière ma fameuse colonne "somme cumulative"
    ici, 7 est la somme de 2 et 5, les quantités de mineol
    35 est la somme de 10 et 25
    40 est la somme de 35 et 5

    ps: désolé pour l'ascii art... mais je vois pas comment mieux m'expliquer

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    pour la somme(juste l'idee a toi de formatter):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:apply-templates select="//ligne">
    <xsl:sort select="designationArticle">
    </xsl:apply-templates>
     
    <xsl:template match="ligne">
    <xsl:value-of select="designationArticle"/>,
    <xsl:value-of select="quantiteCommande"/>,
    <xsl:value-of select="sum(preceding::quantiteCommande[../designationArticle=current()/designationArticle]|quantiteCommande)"/>
     
    <br/>
    </xsl:template>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    merci bp...

    mais pour l'instant ca me fonctionne pas... doit y avoir un détail qui me dépasse...

    en fait je transforme via servlet et le message d'erreur est :

    "Erreur de type Transformer Factory javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Expected "" to terminate element starting on line 405. "

    sachant que ma ligne 405 est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="//ligne">
    --€ !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    correction... j'ai trouvé !

    c'est à cause du xsl:sort pas terminé...

    mais j'ai une erreur à laquelle je devais m'attrendre ! NaN !
    mes valeurs numériques ont une virgule et je ne peux pas changer le xml...

    j'ai vu un post la dessus, je me renseigne et on en reparle après manger ;-)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    j'ai essayé la feinte du post :

    http://www.developpez.net/forums/vie...ighlight=somme

    mais malheureusement, mon xpath doit être trop compliqué pour pouvoir utilisé cela...

    une autre idée ??

    a base de translate ??? j'ai essayé ca et ca ne marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="sum(translate((preceding::quantiteCommande[../designationArticle=current()/designationArticle]|quantiteCommande),',','.'))"/>

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    essaye avec qqch de ce style(attention pas teste et je n'est pas d'editeur donc il peut y avoir de fautes de frappes)
    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
     
               <xsl:call-template name="somme"> 
                  <xsl:with-param name="noeuds" select="preceding::quantiteCommande[../designationArticle=current()/designationArticle]|quantiteCommande"/> 
                  <xsl:with-param name="montant" select="0"/> 
               </xsl:call-template> 
     
     
    <xsl:template name="somme"> 
        <xsl:param name="noeuds"/> 
       <xsl:param name="montant"/> 
       <xsl:choose> 
          <xsl:when test="$noeuds"> 
            <xsl:call-template name="somme"> 
                       <xsl:with-param name="noeuds" select="$noeuds[position()>1]"/> 
              <xsl:with-param name="montant" select="$montant + number(translate($noeud[1],',','.'))"/>          
            </xsl:call-template> 
          </xsl:when> 
          <xsl:otherwise> 
             <xsl:value-of select="$montant"/> 
          </xsl:otherwise> 
       </xsl:choose> 
    </xsl:template>

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    Finalement, j'ai tellement tanné mon resp. qu'on a changé tous les xml et qu'on a mis des points... ;-)

    merci à tous

    a++

  10. #10
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut

    T'aurais pas pu envoyer ça 20 minutes plus tôt que je n'ai pas besoin de taper le code precedent

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    I'm completely desoled ! mais ca dépendait pas de moi... à plus de 50 ans, un informaticien, ca devient moins réactif

    encore désolé mais toujours merci !!!!

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

Discussions similaires

  1. [XSLT] somme de balise
    Par tony014 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/10/2010, 15h32
  2. Somme cumultative sens inverse
    Par bailet dans le forum Débuter
    Réponses: 2
    Dernier message: 03/05/2010, 19h48
  3. [XSLT] somme d'attributs dans des noeud différents
    Par ze_pat dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/12/2009, 13h58
  4. [XSLT] somme sur les éléments d'un sous arbre
    Par Raumfahrerralf dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/03/2007, 16h23
  5. [Xslt] somme
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/09/2005, 09h35

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