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] fonction number()


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Par défaut [XSLT] fonction number()
    Bonjour.
    J'ai à nouveau une petite question rapide.
    Je me fait toujours les dents sur des données issues de sites de poker, pour jouer un peu avec xslt.

    voilà mon problème particulier :

    les données sont écrites dans un fichier xml, qui ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <round no="1">
    <action no="4" player="raumfahrerr" type="4" sum="$0"/>
    <action no="10" player="raumfahrerr" type="3" sum="$0.04"/>
    <action no="5" player="Kertim" type="0" sum="$0"/>
    <action no="6" player="tbvletbvletbvle" type="0" sum="$0"/>
    <action no="7" player="Karnouk" type="3" sum="$0.02"/>
    <action no="11" player="Karnouk" type="0" sum="$0"/>
    <action no="8" player="cococa80" type="6" sum="$0.03"/>
    <action no="12" player="cococa80" type="3" sum="$0.02"/>
    </round>
    Je réalise une somme des attributs "sum" sur toutes les actions dont l'attribut "no" est inférieur à une valeur données. (la valeur du pot quoi)
    Ma fonction de somme est un véritable plagiat de la fonction définie ici :
    http://xml.developpez.com/sources/?page=calcul

    La différence c'est que mon attribut "sum", c'est un nombre qui est à chaque fois précédé du symbole "$".

    Donc je me suis dit que j'allais décapiter le string "sum" de son premier caractère, le convertir en nombre, l'ajouter à mon sous total suivant.

    Voilà mon un bout de xslt que j'utilise pour débugger ma fonction de somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ****<br/>
    ++ action 
    <xsl:value-of select="$ActionNodes[1]/@no"/><br/>
    ++ adding
    <xsl:value-of select="number(substring($ActionNodes[1]/@sum,2,string-length($ActionNodes[1]/@sum)))"/><br/>
    ++ to pot 
    <xsl:value-of select="$pot_total"/><br/>
    ++ makes
    <xsl:value-of select="$pot_total+(number(substring($ActionNodes[1]/@sum,2,string-length($ActionNodes[1]/@sum))))"/><br/>
    ****<br/>
    $ActionNodes c'est une liste de noeuds "action" qu'il me reste à traiter.
    J'ajoute la somme du premier élément de cette liste à ma somme courante.
    J'affiche ma nouvelle somme courante.

    Et là j'obtiens parfois des sorties bizarres du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ****
    ++ action 12
    ++ adding 0.02
    ++ to pot 0.18
    ++ makes 0.19999999999999998
    ****
    donc 0.02 + 0.18 = 0.19999999999999998 ?

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par Raumfahrerralf
    donc 0.02 + 0.18 = 0.19999999999999998 ?
    En arithmétique IEE754, norme retenue pour le format des nombres à virgule flottante de XPath, oui.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

Discussions similaires

  1. [XSLT] fonction récursive à N niveaux
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/03/2006, 12h30
  2. [XSLT] fonction avec retour
    Par goth dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/02/2006, 23h49
  3. [xslt] fonctions manipulations string
    Par gorgonite dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 23/01/2006, 09h46
  4. [XSLT] Fonction xslt_create indéfinie
    Par ripou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/10/2005, 22h31
  5. [XSLT] Xsl:number arrondi
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 15/06/2005, 10h55

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