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 :

cherche nœud plus haut après un attribut [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut cherche nœud plus haut après un attribut
    Bonjour,

    je cherche, avec xmlstarlet, à récupérer les données après un nœud dont l'attribut correspond à une expression, mais plus haut dans la hiérarchie.

    j'ai du mal à expliquer, alors je vous montre

    schématiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /root/
    /root/tag1/
    /root/tag1/tag2/
    /root/tag1/tag2/tag3[@attribute="bla bla"]
    /root/tag1/tag2/un/autre/ici
    /root/tag1/tag2/un/autre/ici
    /root/tag1/tag2/un/autre/ici
    /root/tag1/tag2/tag3[@attribute="autre chose"]
    /root/tag1/tag2/un/autre/pasIci
    /root/tag1/tag2/un/autre/pasIci
    /root/tag1/tag2/un/autre/pasIci
    je voudrais récupérer les données après bla bla, jusqu'à autre chose exclu.

    le fichier html est disponible ici, et je cherche à récupérer la liste des serveurs français (html/body/div/div/div/h5/span[@class='fam-flag fam-flag-fr' and @title='France'])
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /root/tag1/tag2/un[preceding::tag3[1][@attribute="bla bla"]]/autre
    "Prendre tous les /root/tag1/tag2/un, ne garder que ceux dont le tag3 précédent le plus proche, a l'attribute qui vaut bla bla. Sur ceux gardés, prendre leurs enfants autre".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    merci.

    cela affiche bien les données à partir de bla bla, mais ça n'arrête pas à autre chose; cela affiche aussi tous les pasIci
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    pour moi la réponse donnée par Thelvin, sur la base de ton exemple, donne bien le résultat attendu.
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    tu as testé sur le fichier html ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Non j'ai testé sur l'exemple que tu as donné :

    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
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    <tag1>
    	<tag2>
    		<tag3 attribute="bla bla"/>
    	</tag2>
    	<tag2>
    		<un>
    			<autre>
    				text
    			</autre>
    		</un>	
    		<un>
    			<autre>
    				text2
    			</autre>
    		</un>	
    </tag2>	
    	<tag2>
    		<tag3 attribute="autre chose"/>
    	</tag2>
    	<tag2>
    		<un>
    			<autre>
    				pasICI
    			</autre>
    		</un>
    	</tag2>	
    </tag1>
    </root>
    /root/tag1/tag2/un[preceding::tag3[1][@attribute="bla bla"]]/autre

    --> text
    --> text2


    Citation Envoyé par N_BaH Voir le message
    tu as testé sur le fichier html ?
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    l'exemple n'est qu'un schéma.
    j'ai peut-être trop simplifié les données.
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    wget -qO - 'https://www.archlinux.org/download/' | xmlstarlet sel -T -t -m "/html/body/div/div/div/ul[preceding::h5/span[1][@title='France']]/li" -v 'a/@href' -n
    retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    http://archlinux.de-labrusse.fr/iso/2019.04.01/ #début de la liste des serveurs français, c est bien ce que je veux
    http://mirror.archlinux.ikoula.com/archlinux/iso/2019.04.01/
    http://archlinux.vi-di.fr/iso/2019.04.01/
    #...j en passe
    https://archlinux.grena.ge/iso/2019.04.01/ #début de la liste des serveurs géorgiens
    http://archlinux.grena.ge/iso/2019.04.01/
    http://mirror.23media.com/archlinux/iso/2019.04.01/
    ...et ainsi de suite
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    et avec : /html/body/div/div/div/ul[preceding::h5[1]/span[@title='France']]/li


    Citation Envoyé par N_BaH Voir le message
    l'exemple n'est qu'un schéma.
    j'ai peut-être trop simplifié les données.
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    wget -qO - 'https://www.archlinux.org/download/' | xmlstarlet sel -T -t -m "/html/body/div/div/div/ul[preceding::h5/span[1][@title='France']]/li" -v 'a/@href' -n
    retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    http://archlinux.de-labrusse.fr/iso/2019.04.01/ #début de la liste des serveurs français, c est bien ce que je veux
    http://mirror.archlinux.ikoula.com/archlinux/iso/2019.04.01/
    http://archlinux.vi-di.fr/iso/2019.04.01/
    #...j en passe
    https://archlinux.grena.ge/iso/2019.04.01/ #début de la liste des serveurs géorgiens
    http://archlinux.grena.ge/iso/2019.04.01/
    http://mirror.23media.com/archlinux/iso/2019.04.01/
    ...et ainsi de suite
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut


    merci beaucoup.

    ps: la tête dans le guidon, j'ai oublié de demander à quoi correspond [1]
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    C'est la position du contenu (c'est l'abrégé de [position()=1]), ca limite donc au premier élément

    Citation Envoyé par N_BaH Voir le message


    merci beaucoup.

    ps: la tête dans le guidon, j'ai oublié de demander à quoi correspond [1]
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    merci encore.

    à bientôt.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/06/2008, 21h07
  2. [Etudes] Je cherche ma voie pour apres
    Par r00tz dans le forum Etudes
    Réponses: 12
    Dernier message: 28/03/2007, 23h23
  3. Réponses: 6
    Dernier message: 19/11/2006, 00h41
  4. Menu en position:fixed plus haut que la fenêtre
    Par Maximil ian dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 15/12/2004, 23h14
  5. Requete : Rechercher l'id le plus haut (max)
    Par djsbens dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/07/2004, 13h35

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