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 :

expression xpath sélectionner tous les noeuds sauf certains


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut expression xpath sélectionner tous les noeuds sauf certains
    Bonjour,
    J'ai un fichier XML : par exemple

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <PROGRAM xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    <ZONE NOM="ZONE 1">
    <TAB1 NOM="STRUCTURE">
    <LOTTAB NOM="nom0" />
    <LOTTAB NOM="nom1" />
    <LOTTAB NOM="nom2" />
    </TAB1>
    <ELEMENT NOM="element1">
    <NOEUD NUM="0">
    <ID NAME="nom1" />
    <ID NAME="nom2"/>
    <ID NAME="nom3"/>
    </NOEUD>
    <NOEUD NUM="1">
    <ID NAME="nom1" />
    <ID NAME="nom2"/>
    <ID NAME="nom3"/>
    </NOEUD>

    </ELEMENT>
    <AUTREELEMENT NOM="element2">
    <NOEUD NUM="0">
    <ID NAME="nom1" />
    <ID NAME="nom2"/>
    <ID NAME="nom3"/>
    </NOEUD>
    <NOEUD NUM="1">
    <ID NAME="nom1" />
    <ID NAME="nom2"/>
    <ID NAME="nom3"/>
    </NOEUD>

    </AUTREELEMENT>
    </ZONE>
    </PROGRAM>

    Je voudrais grâce à une expression XPath récupérer tous les noeuds sauf éléments ID.
    Pouvez-vous m'aider?
    Merci.

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    La question est peut-être un peu vague? Ceci suffit-il?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "//*[name()!='ID']|//@*"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut
    Ceci enlève bien tous les noeuds les uns après les autres sauf les noeuds ID mais ce n'est pas vraiment ce que je veux je veux récupérer le noeud PROGRAM mais sans les balises ID.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut
    Je voudrais obtenir ceci :
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <PROGRAM xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    <ZONE NOM="ZONE 1">
    <TAB1 NOM="STRUCTURE">
    <LOTTAB NOM="nom0" />
    <LOTTAB NOM="nom1" />
    <LOTTAB NOM="nom2" />
    </TAB1>
    <ELEMENT NOM="element1">
    <NOEUD NUM="0">
    </NOEUD>
    <NOEUD NUM="1">
    </NOEUD>
    </ELEMENT>
    <AUTREELEMENT NOM="element2">
    <NOEUD NUM="0">
    </NOEUD>
    <NOEUD NUM="1">
    </NOEUD>
    </AUTREELEMENT>
    </ZONE>
    </PROGRAM>

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ça ce n'est pas XPath qui s'y colle.
    Quand XPath récupère un nœud, il récupère ce nœud tel qu'il est, avec tout son contenu inchangé.
    Si tu récupères le nœud <PROGRAM> avec XPath, tu le récupères avec tout ce qu'il contient, c'est comme ça et c'est tout.

    Ce que tu dois faire, c'est d'abord récupérer <PROGRAM>, en faire ce que tu veux (mais ne pas mettre tout son contenu, puisqu'il y a du contenu que tu ne veux pas,) puis, à partir de <PROGRAM> récupérer tout ce qu'il contient, sauf les <ID>. Par exemple avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select="*[name() != 'ID']"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 12
    Par défaut
    Ok merci!

  7. #7
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Je voudrais obtenir ceci : ...
    Ca devient plus clair comme intention. C'est fait avec l'aide d'une transformation identitique (à la forme réduite) et un template de travail spécifique. On va rencontrer assez souvent ce genre de pensée ou raisonnement fonctionnel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="utf-8" indent="yes" />
    <xsl:template match="*|@*">
        <xsl:copy>
            <xsl:apply-templates select="*|@*" />
        </xsl:copy>
    </xsl:template>
     
    <xsl:template match="*[name()='ID']">
        <!-- ne rien faire -->
    </xsl:template>
    </xsl:stylesheet>

Discussions similaires

  1. Sélectionner tous les champs sauf 1 ?
    Par beegees dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/11/2008, 11h44
  2. Réponses: 16
    Dernier message: 12/07/2007, 16h35
  3. Comment sélectionner tous les champs sauf quelques uns?
    Par bankette dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/06/2007, 02h40
  4. comment sélectionner tous les champ sauf quelques uns
    Par r0d dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2006, 09h34
  5. [JTree] Suppresion de tous les noeuds sauf la racine
    Par nicolaskarp dans le forum Composants
    Réponses: 3
    Dernier message: 29/04/2005, 12h53

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