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] Utilisation de "not"


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    yos
    yos est déconnecté
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Par défaut [XSLT] Utilisation de "not"
    Bonjour,
    J'aimerai utilisé "NOT" dans un apply template afin de filtrer les noeud sur lesquels ne sera pas appliquer le apply-template

    exemple :
    mon noeud ressemble à ceci :

    <xsl:apply-templates select="//xhtml:body//comment()[contains(., 'FIN AVERTISSEMENT')]/preceding-sibling::node()"/>

    et pour ne pas appliquer cette apply-template sur le noeud <p> qui contient un <b> j'ai essayé :

    <xsl:apply-templates select="//xhtml:body//comment()[contains(., 'FIN AVERTISSEMENT')]/preceding-sibling::node()[not(xhtml:p[//xhtml:b])]"/>
    cela ne fonctionne pas
    comment faire ?
    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    plutot

    <xsl:apply-templates select="//xhtml:body//comment()[contains(., 'FIN AVERTISSEMENT')]/preceding-sibling::node()[name()!='xhtml:p' or not(xhtml:b])]"/>

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Une variante :
    <xsl:apply-templates select="//xhtml:body//comment()[contains(., 'FIN AVERTISSEMENT')]/preceding-sibling::node()[not(self::xhtml:p and child::xhtml:b])]"/>
    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

  4. #4
    yos
    yos est déconnecté
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Par défaut
    Merci pour votre aide
    c'est la solution de GrandFather qui fonctionne, effectivement j'ai oublié de spécifier l'axe lui même "self" :
    <xsl:apply-templates select="//xhtml:body//comment()[contains(., 'FIN AVERTISSEMENT')]/preceding-sibling::node()[not(self::xhtml:p[//xhtml:b])]"/>

    merci encore

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Ca marche également, mais sur le plan des performances tu ferais mieux d'adopter la syntaxe que j'ai utilisée (elle a un prédicat en moins).
    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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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