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 :

xsl:if comparaison de valeur [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut xsl:if comparaison de valeur
    Bonjour,
    Je ne parviens pas à faire un test "plus grand que" ou "plus petit que" dans une balise <xsl:if ...>.

    J'ai essayé :

    - <xsl:if test="netamount &gt; 0">
    - <xsl:if test="netamount gt 0">
    - <xsl:if test="netamount > 0">

    rien de marche, alors que, par exemple, l'instruction suivante fonctionne :

    - <xsl:if test="netamount = 0">

    Quelqu'un peut-il m'aider ?
    Merci.

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

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

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

    les 2 extraits suivant devraient fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    - <xsl:if test="netamount &gt; 0">
    - <xsl:if test="netamount > 0">
    Après, il faudrait que l'on en sache plus pour t'aider...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut
    Merci pour cette réponse.
    Malheureusement, aucun des deux test ne fonctionne : ils sont simplement ignorés (c'est à dire que le code qui suit ce(s) test(s) est exécuté malgré le fait qu'une des 2 conditions -- la seconde -- ne soit pas respectée) :

    Voici le test, en entier, tel qu'il apparait dans mon fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="(advance/paymentmode = 'VIR') and (advance/netamount > 0)">
            <fo:page-sequence master-reference="simple">
            ...
    Voici un aperçu du fichier xml généré à la volée (java) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <advance>
    	<advanceid>7841</advanceid>	
    	<piecenumber>1142</piecenumber>
    	<paymentmode>VIR</paymentmode>
    	<netamount>-100</netamount>
    </advance>
    Je précise que le test : (advance/paymentmode = 'VIR') fonctionne parfaitement.
    Par ailleurs, j'ai essayé en mettant des guillemets (simples ou doubles) dans le 2 fichiers et rien à faire.
    Merci pour ton aide.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    N'aurais tu pas simplement oublié un "$" devant tes noms de variables?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <xsl:if test="$netamount &gt; 0">
        <xsl:if test="$netamount > 0">
    sinon, si ta valeur est contenue dans une chaine de caractères, ça peut être une bonne idée de la "caster" en nombre avec

    number($netamount)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <xsl:if test="number($netamount) &gt; 0">
        <xsl:if test="number($netamount) > 0">

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 199
    Par défaut
    Si j'essaie d'utiliser j'obtiens une erreur à l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.xml.utils.WrappedRuntimeException: Impossible de trouver la variable portant le nom netamount
    Et encore une fois, le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsl:if test="advance/paymentmode = 'VIR'"
    fonctionne, alors je ne pense pas que le problème vienne du nom de la variable...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    Effectivement, j'avais mal regardé ton XML, ce n'était pas une variable.

    Peux-tu essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:if test="(advance/paymentmode = 'VIR') and (number(advance/netamount) &gt; 0)">
            <fo:page-sequence master-reference="simple">
            ...
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:if test="(advance/paymentmode = 'VIR') and (number(advance/netamount/.) &gt; 0)">
            <fo:page-sequence master-reference="simple">
            ...
    si ça ne marche toujours pas, essaie de remplacer les &gt; par des >

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

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. [XSL] récupération d'une valeur
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/12/2005, 15h58
  3. [xsl-fo] Recuperation de valeurs dans une boucle
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 12/12/2005, 12h13
  4. [XSL - XMLDOM] Attibuer une valeur à xsl:param
    Par Trin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/11/2005, 14h52
  5. [XSL] Tester si la valeur est un entier dans un xml
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/07/2003, 04h35

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