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] Testez si la valeur est vide [FAQ]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut [XSLT] Testez si la valeur est vide
    Bonjour,

    Petit truc tout simple enfin je crois.

    Il faut que je test si la valeur d'un noeud est vide.

    Je sais que pour voir si il y a qqch il faut faire un

    Mais si on veut testez si le noeud est vide comment faire un xsl:choose et otherwise ne convient pas à mon problème.


    Merci pour votre aide


    ++
    Thierry

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    ok merci j'ai trouvé la solution de mon problème

    mais je ne sais toujours pas et ca m'intéresserais de savoir si on peux tester un noeud pour voir si il est vide?

    Merci de votre aide


    ++

    Thierry

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 28
    Points
    28
    Par défaut
    Salut Thierry,

    Je suis aussi curieux de savoir comment on fait pour voir si un noeud est vide.
    J'ai essayé avec un contains (.,'') et aussi avec un string-length().

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    le test à effectuer dépend de ce que l'on appelle élément vide. Selon qu'on veut tester que l'élément comprenne des éléments fils, des noeuds textuels ou des attributs, ou tout cela à la fois, on utiliser les expressions XPath *, @*, node() ou text(), en conjonction avec l'opérateur not().

    Exemples :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <test>
     
    	<test1>
    	</test1>
     
    	<test2></test2>
     
    	<test3/>
     
    	<test4 aaa="bbb"/>
     
    	<test5>
    		Texte avec un <b>mot</b> en gras
    	</test5>
     
    	<test6>
    		<truc/>
    	</test6>
     
    </test>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text" version="1.0" encoding="UTF-8"/>
     
    	<xsl:variable name="linebreak">
    <xsl:text>
    </xsl:text>
    </xsl:variable>
     
    	<xsl:template match="/test">
    			<xsl:apply-templates select="*"/>
    	</xsl:template>
     
    	<xsl:template match="*">
    		<xsl:value-of select="name()"/><xsl:value-of select="$linebreak"/>
    		<xsl:text>not(*) : </xsl:text><xsl:value-of select="not(*)"/><xsl:value-of select="$linebreak"/>
    		<xsl:text>not(node()) : </xsl:text><xsl:value-of select="not(node())"/><xsl:value-of select="$linebreak"/>
    		<xsl:text>not(text()) : </xsl:text><xsl:value-of select="not(text())"/><xsl:value-of select="$linebreak"/>
    		<xsl:text>not(@*) : </xsl:text><xsl:value-of select="not(@*)"/><xsl:value-of select="$linebreak"/>		
    		<xsl:value-of select="$linebreak"/>
    	</xsl:template>
     
    </xsl:stylesheet>
    Le résultat est :

    test1
    not(*) : true
    not(node()) : false
    not(text()) : false
    not(@*) : true

    test2
    not(*) : true
    not(node()) : true
    not(text()) : true
    not(@*) : true

    test3
    not(*) : true
    not(node()) : true
    not(text()) : true
    not(@*) : true

    test4
    not(*) : true
    not(node()) : true
    not(text()) : true
    not(@*) : false

    test5
    not(*) : false
    not(node()) : false
    not(text()) : false
    not(@*) : true

    test6
    not(*) : false
    not(node()) : false
    not(text()) : true
    not(@*) : true

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 28
    Points
    28
    Par défaut
    Merci, ça peut toujours servir !

  6. #6
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Merci pour ton petit exemple maintenant je comprend comment je vais faire!!!

    Au faite ca ca ne serai pas un truc utile à mettre dans la FAQ XML? A bon entendeur


    ++

    Thierry

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2013, 14h22
  2. Réponses: 0
    Dernier message: 02/10/2012, 16h12
  3. Comment tester si liste de valeur est vide
    Par fahmi.bedoui dans le forum Forms
    Réponses: 3
    Dernier message: 24/12/2010, 09h42
  4. Comment afficher les lignes lorsque la valeur est vide ?
    Par matimat2k4 dans le forum Langage SQL
    Réponses: 24
    Dernier message: 02/04/2008, 16h29
  5. Testez si la balise est vide
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/06/2005, 15h10

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