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 :

[XPATH] Traduire la non-existance d'un noeud?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut [XPATH] Traduire la non-existance d'un noeud?
    Bonjour,

    admettons que j'ai le XML suivant :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="utf-8"?>
    <animals>
      <animal created="24/05/2009">
        <type>Bear</type>
        <name>Knut</name>
        <frequency>60</frequency>
        <birthDate>05/12/2007</birthDate>
      </animal>
      <animal created="24/05/2009">
        <type>Bear</type>
        <name>Teddy</name>
        <frequency>120</frequency>
        <birthDate/>
    </animal>
    </animals>

    Quelle requête me permettrait de tester si le birthdate est renseigné ou non?

    Pour l'instant j'ai quelque chose comme :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string xpath = "/animals/animal[type='" + type + "' and name ='" + name + "'";
     
                if (birthDate != null)
                {
                    xpath += " and birthDate='" + anniversaire + "'";
                }
     
                xpath += "]";

    Mais ça ne suffit bien évidemment pas. Que dois-je rajouter si mon paramètre "anniversaire" passé en paramètre est null?



  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Réponse :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                if (birthDate != null)
                {
                    xpath += " and birthDate='" + anniversaire + "'";
                }
                else
                {
                    xpath += " and not(birthDate)";
                }

    Au temps pour moi, désolé

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Re,

    un problème subsiste néanmoins, j'ai la requête (finale) suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/animals/animal[type='Bear' and name ='Knut' and birthDate='05/15/2007']"
    Et malgré ça, il ne trouve pas l'animal dans le XML alors qu'il est bien présent

    Pouvez-vous me dire d'où cela provient?

  4. #4
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Je suis entrain de chercher. Je te conseille d'utiliser le logiciel freeware XPathBuilder pour tester tes expressions, il est bien pratique .
    Ton XML n'a pas de racine. Est ce normal?

  5. #5
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par Metafire18 Voir le message
    Je suis entrain de chercher. Je te conseille d'utiliser le logiciel freeware XPathBuilder pour tester tes expressions, il est bien pratique .
    Ton XML n'a pas de racine. Est ce normal?
    Le logiciel, je le testerais , en attendais, si quelqu'un pouvait me fournir un élément de piste...



    P.S : <animals> est racine, c'est juste une erreur de copier/coller

  6. #6
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    C'est assez bizarre

    J'ai essayé cette requête XPath :
    /animals/animal[name ='Knut' and @created='24/05/2009']
    Elle fonctionne...

  7. #7
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ce qui m'intéresse une requête avec tous les éléments présents

    Sans ajouter le birthdate, ça fonctionne parfaitement, avec, ça ne fonctionne plus et je ne comprend pas pourquoi

  8. #8
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Points : 1 894
    Points
    1 894
    Billets dans le blog
    1
    Par défaut
    Il y a 12 mois dans l'année

  9. #9
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Citation Envoyé par Metafire18 Voir le message
    Il y a 12 mois dans l'année




    beaucoup, j'crois j'vais aller manger, ça va plus là

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

Discussions similaires

  1. xmldocument : tester l'existence d'un noeud enfant
    Par Rustine dans le forum Delphi
    Réponses: 3
    Dernier message: 04/08/2006, 16h37
  2. [XPath]Problème de récupération de Nom de noeud
    Par **jouly** dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 23/06/2006, 14h16
  3. Réponses: 6
    Dernier message: 10/02/2006, 13h46
  4. [XPATH] test sur la valeur d un noeud
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/02/2006, 09h54
  5. Réponses: 9
    Dernier message: 17/03/2005, 09h20

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