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]Problème sur une comparaison if avec des strings


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut [XSLT]Problème sur une comparaison if avec des strings
    Salut à tous,

    j'ai un soucis avec la condition if. Je veux comparer 2 chaînes de caractères, style string.

    La condition voulue:
    <if test="$id!=text()">
    .....
    </if>

    J'ai testé la variable id et le text() avant la condition. Ils sont identiques. Apparemment la condition n'est pas d'accord avec ça.

    J'ai aussi
    - essayé de mettre la valeur de test dans une variable. Idem, la condition est toujours vrai.
    - modifier la condition en mettant =, il rentre tout le temps dans la condition.

    Au final ma condition ne sert à rien, il rentre quand même dans le if.
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  2. #2
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Peut être est-ce une erreur de frappe, mais si tu fais du XSL, tu devrais plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="$id!=text()">
    ...
    </xsl:if>
    Je ne crois pas que les balises <if> ... </if> existent...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    C vrai que je n'ai pas tout mis.
    Le fichier est un xslt (mais je ne crois pas que ça change grand chose).

    La transformation se fait à partir d'une application en C# par les classes dispo. Je n'utilise pas "l'interpréteur" des navigateurs (enfin je suppose).

    Ceci fonctionne avec d'autres fichiers sans aucun soucis.
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    Je viens d'essayer en dur par text()!='CC' => ça fonctionne
    par contre $ID!=CC ne fonctionne pas.

    $ID est une variable globale. Quand je visualise sa valeur, je n'ai pas de problème.
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    Voilà le code

    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <stylesheet version="2.0" xmlns="http://www.w3.org/1999/XSL/Transform">
      <variable name="ID" select="XXXX/YYYY/IDENTIFIANT/text()"/>
     
      <template match="*">
        <element name="{name()}" >
          <apply-templates select="* | text()"/>
        </element>
      </template>
     
      <template match="IDENTIFIANT">
        <variable name="id_courant" select="text()"/>
        <if test="$ID != text()">
            <text>ERREUR</text>
        </if>   
      </template>
     
    </stylesheet>
    Normalement le $ID prend la première valeur de l'identifiant de l'ensemble de noeuds. L'objectif est que cette identifiant soit le même pour tous.
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

  6. #6
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Pourquoi ne pas mettre explicitement de ne prendre que la première valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <variable name="ID" select="XXXX/YYYY/IDENTIFIANT/text()[1]"/>
    Dans le genre, forcer la conversion en chaine par la fonction string() peut aussi résoudre certains problèmes...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2007
    Messages : 180
    Points : 198
    Points
    198
    Par défaut
    Effectivement, tu es un membre éclairé.

    J'ai fait string($ID), ça fonctionne.

    Merci
    Une légende amérindienne raconte qu'il y eut un immense incendie de forêt. Tous les animaux terrifiés et atterrés observaient, impuissants, le désastre. Seul, un colibri s'activait et allait chercher quelques gouttes d'eau dans son bec pour éteindre le feu.
    Au bout d'un moment, le tatou, agacé par ses agissements dérisoires, lui dit :
    'Colibri ! N'es-tu pas fou ? Tu crois que c'est avec ces gouttes d'eau que tu vas éteindre le feu ?
    'Je le sais, répond le colibri, mais je fais ma part...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/03/2013, 09h46
  2. Réponses: 5
    Dernier message: 30/06/2009, 23h21
  3. Calcul sur une feuille excel avec un string
    Par ubssecurities dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/08/2008, 15h34
  4. [XSLT] Problème sur une comparaison de deux noeuds
    Par NicaeaCivitas dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 09/01/2007, 11h51
  5. Problème sur une requete avec champ date
    Par islande dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2006, 19h39

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