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] test présence d'un noeud ou pas


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut [XSLT] test présence d'un noeud ou pas
    Bonjour,
    j'ai vu ce souci sur pas mal de posts de ce forum, mais en essayant la solution proposée ca ne marche pas (je test mes retours xPath avec la vérification xPath de stylevision).

    En gros j'ai une structure dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <fo:block>
         <fo:inline>
              <fo:inline></fo:inline>
         </fo:inline>
    </fo:block>
    et ce que j'aimerais faire c'est tester si mon noeud block contient un inline qui à son tour contient des inlines, car des fois c'est le cas, et des fois non.
    j'aimerais que ce xPath me retourne donc true ou false selon la présence ou non du noeud, pour le moment j'ai testé ces 2 solutions qui n'aboutissent pas :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //fo:block[fo:inline[count(fo:inline) >= 1]]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //fo:block/fo:inline[fo:inline >= 1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //fo:block/fo:inline[count(fo:inline) >= 1]
    Voilà, désolé du post malgré les nombreuse fois ou ce sujet a été traité mais je n'arrive toujours pas au résultat voulu.

    merci d'avance, Blue

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Et pourtant... considérant ce code XML

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="TEST.XSL"?>
    <main>
    	<block>
    		<inline>...
    		</inline>
    	</block>
    	<block>
    		<inline>...
    			<inline>V</inline>
    		</inline>
    	</block>
    	<block>
    		<inline>...
    		</inline>
    	</block>
    </main>
    l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //block/inline[count(inline) >= 1]
    ne renvoie bien que l'unique élément inline ayant un enfant inline (ici avec le contenu V)

    et le code XSL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    	<xsl:template match="block">
    		<xsl:choose>
    			<xsl:when test="inline[count(inline) >= 1]">true</xsl:when>
    			<xsl:otherwise>false</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    </xsl:stylesheet>
    renvoie bien false - true - false

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    j'ai oublié de préciser que je ne suis pas dans un contexte xsl mais dans un contexte php DOM / Xpath

    est ce que avec une query xPath on peut s'attendre à recevoir en retour false ou true?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    a priori une expression XPath renvoie un nodeset, pas un booleen, mais dans le contexte d'un programme on doit pouvoir tester le contenu du nodeset renvoyé.

  5. #5
    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,

    Pas besoin de count() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //fo:block[fo:inline/fo:inline]
    Il te suffit de vérifier si le node-set renvoyé est vide ou non, et tu l'as ton booléen...
    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

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    effectivement j'ai utilisé la même solution au final, merci a vous deux

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

Discussions similaires

  1. [XSLT] test si un élément n'existe pas
    Par nadsky dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/06/2009, 13h10
  2. [XSLT] Test égalité noeuds différents
    Par bruno782 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 24/10/2005, 20h58
  3. xslt --> test sur les chiffres
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/09/2005, 13h17
  4. [XSLT]Problème de séléction du noeud courrant
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/08/2005, 07h51
  5. XSLT > Acceder un élement du noeud suivant
    Par soize dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/01/2005, 15h33

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