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 :

Filtrer un fichier XML à l'aide d'un tableau


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Filtrer un fichier XML à l'aide d'un tableau
    Bonjour à tous,

    Je cherche à savoir s'il est possible de filtrer un fichier XML de la forme :

    <personne>
    <id>123</id>
    <nom>toto</nom>
    <prenom>titi</prenom>
    </personne>
    ...
    <personne>
    <id>13</id>
    <nom>tata</nom>
    <prenom>romeo</prenom>
    </personne>
    ...

    en ayant un tableau contenant une liste d'id. (Le but est d'avoir en sortie un fichier XML ne contenant que les <personne> ayant un id présent dans le tableau contenant la liste des id.

    En gros, via une feuille XSLT est-ce possible? (Le problème est que je ne vois pas comment passer un tableau à une feuille XSLT)
    Sinon, en XPath est-ce possible?

    D'avance merci pour vos réponses.

    Cordialement

    LaBastoss

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Il est possible en XPath de ne récupérer que les personnes qui ont un id spécifique oui. Pour passer un argument à un fichier XSL je ne crois pas que ce soit faisable.

    En XPath ça s'écrirait comme ça : path/to/personne[id='id1' or id='id2'].
    Il est aussi possible de l'écrire comme ça : path/to/personne[contains('id1,id2', id)].

    Bien entendu, dans les 2 cas il faut au préalable avoir transformé ton tableau en la chaîne de caractère appropriée.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci pour cette information c'est vrai que je n'avais pas pensé à transformer le tableau en chaîne de caractère.

    Je vais voir ce que cela donne.

    Cordialement

    La Bastoss

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Alors je viens de tester un peu la solution proposée, et voici donc mes retours :

    - La fonction contains retourne "true" si l'élément est contenu dans l'id et
    ceci engendre quelques erreurs dans le sens ou lorsque l'on à un id = 15
    et que l'on cherche dans le fichier si id_personne = 153 alors la fonction
    contains retournera "true" alors qu'elle n'aurait pas dûe. Utiliser plutôt la
    notion d'égalité.

    - La solution permet bien de tester si un id est contenu dans le fichier XML
    mais ne permet pas de supprimer les lignes associé à la personne ne se
    trouvant pas dans le tableau des id

    Si quelqu'un à une idée sur le sujet qu'il n'hésites pas

    Cordialement

    La Bastoss

  5. #5
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Citation Envoyé par LaBastoss Voir le message
    - La fonction contains retourne "true" si l'élément est contenu dans l'id.
    Ah oui en effet j'avais pas pensé à ça.

    Citation Envoyé par LaBastoss Voir le message
    - La solution permet bien de tester si un id est contenu dans le fichier XML
    mais ne permet pas de supprimer les lignes associé à la personne ne se
    trouvant pas dans le tableau des id
    Ben si tu récupères un DOM avec uniquement les personnes qui portent les ID désirés (via les 'or'), tu peux réécrire un XML avec seulement ces personnes.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Je voulais vraiment éviter l'utilisation d'une librairie de manipulation XML.
    Je voulais savoir si tout le cheminement que je souhaite réaliser pouvait se faire uniquement en XPATH.
    Mais plus je fais des recherches et plus je me dis que je vais devoir utiliser un code JAVA. (peu importe l'API : DOM / SAX / STAX)

    Merci pour ton retour en tout cas.

    Cordialement

    La Bastoss.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2008, 18h17
  2. Réponses: 2
    Dernier message: 29/02/2008, 18h08
  3. filtrer un fichier xml
    Par nemya dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/02/2006, 13h58

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