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 de balise


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 34
    Par défaut [XSLT] somme de balise
    Bonjour tous le monde.

    Je suis en train de développer un site internet avec java, XML et XSL et j'ai un probleme pour calculer le resultat de plusieur nodes du fichier XML.
    Voici un exemple du fichier 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?xml version="1.0" encoding="utf-8" ?>
    <NewDataSet>
    <PremierPayrollSalesrepCommission>
    <SalesRepID>500</SalesRepID>
    <SalesRepNo>WS102</SalesRepNo>
    <FirstName>William</FirstName>
    <Surname>Smith</Surname>
    <CommRate>0.04</CommRate>
    <SalesRepID1>500</SalesRepID1>
    <OrderNumber>12000</OrderNumber>
    <CustomerNo>SA124</CustomerNo>
    <TotalAmount>134.84</TotalAmount>
    <Commission>5.3936</Commission>
    </PremierPayrollSalesrepCommission>
    <PremierPayrollSalesrepCommission>
    <SalesRepID>500</SalesRepID>
    <SalesRepNo>WS102</SalesRepNo>
    <FirstName>William</FirstName>
    <Surname>Smith</Surname>
    <CommRate>0.04</CommRate>
    <SalesRepID1>500</SalesRepID1>
    <OrderNumber>12007</OrderNumber>
    <CustomerNo>SA124</CustomerNo>
    <TotalAmount>54.95</TotalAmount>
    <Commission>2.198</Commission>
    </PremierPayrollSalesrepCommission>
    <PremierPayrollSalesrepCommission>
    <SalesRepID>500</SalesRepID>
    <SalesRepNo>WS102</SalesRepNo>
    <FirstName>William</FirstName>
    <Surname>Smith</Surname>
    <CommRate>0.04</CommRate>
    <SalesRepID1>500</SalesRepID1>
    <OrderNumber>12009</OrderNumber>
    <CustomerNo>SA124</CustomerNo>
    <TotalAmount>949.95</TotalAmount>
    <Commission>25.998</Commission>
    </PremierPayrollSalesrepCommission>
    Mon but est d'additionner "TotalAmount" pour chaque "SalesRepID".

    Voici mon fichier XSL:
    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
     
    <?xml version='1.0'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
    <xsl:output method="text"/>
    <xsl:param name="RepNo" />
    <xsl:param name="CustNo" />
    <xsl:template match="/NewDataSet">
    <xsl:for-each select="//PremierPayrollSalesrepCommission" >
    <xsl:if test="SalesRepNo = $RepNo">
    <xsl:if test="CustomerNo = $CustNo">
    <xsl:value-of select="sum(number(TotalAmount))" />
    </xsl:if>
    <xsl:if>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Apparament la function "Number" ne marche pas et si je met uniquement "sum" il ne me calcule pas la somme des 3 il me les met juste a la suite (car pour lui ce n'est pas un nombre mais une chaine de caractere je pense).

    Voici l'erreur qu'il me retourne si je met "number": expression does not return a dom node number

    J'espere que je me suis bien exprimé et je vous remercie d'avance pour votre aide.
    Anthony

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par tony014 Voir le message
    Apparament la function "Number] ne marche pas
    Si si, mais justement, sum() ne prend pas en paramètre un nombre (quel intérêt de faire la somme d'un seul nombre ?), il prend en paramètre un ensemble de nœuds, qu'il convertit chacun en nombre, et dont il fait la somme des nombres obtenus.

    Citation Envoyé par tony014 Voir le message
    si je met uniquement "sum" il ne me calcule pas la somme des 3 il me les met juste a la suite (car pour lui ce n'est pas un nombre mais une chaine de caractere je pense).
    C'est normal : tu fais ça à l'intérieur du for-each. Donc, pour chaque nombre, il va calculer la somme de ce nombre et de rien d'autre, puis l'afficher.

    il te faut un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(//PremierPayrollSalesrepCommission[SalesRepNo = $RepNo and machin and truc and bidule]/TotalAmount)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 34
    Par défaut
    Merci beaucoup Thelvin!
    J'ai supprimé toutes les conditions et le for-each et j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="sum(//PremierPayrollSalesrepCommission[SalesRepNo = $RepNo and CustomerNo = $CustNo]/TotalAmount)" />
    Et tous marche bien.
    Merci encore et maintenant je vais lutter pour une partie encore plus compliqué pour moi (creer un tableau HTML avec une seule feuille xsl et 3 feuille xml).

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

Discussions similaires

  1. [XSLT] Filtrer certaines balises d'un fichier XML
    Par arthix dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 07/07/2006, 12h21
  2. [Xslt] somme
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/09/2005, 09h35
  3. [XSLT]Sortir les balise d'un namespace d'un XML
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 12/04/2005, 11h30
  4. [XSLT] somme cumultative
    Par MatMeuh dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 14/10/2004, 15h10
  5. [Documentation][XSLT][XSLFO]Les balises xslfo
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2002, 11h31

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