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 :

requete xpath sur paramètre indéterminé [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien en nano-électronique
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Technicien en nano-électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut requete xpath sur paramètre indéterminé
    Bonjour,

    J'ai un fichier XML dont la structure ressemble à celui-ci :

    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
     
    <GARAGE>
        <VOITURE ID='1'>
             <COULEUR>
                 rouge
             </COULEUR>
             <MARQUE>
                 a
             </MARQUE>
        <VOITURE>
        <VOITURE ID='2'>
             <COULEUR>
                 rouge
             </COULEUR>
             <MARQUE>
                 b
             </MARQUE>
        <VOITURE>
        <VOITURE ID='1'>
             <COULEUR>
                 jaune
             </COULEUR>
             <MARQUE>
                 b
             </MARQUE>
        <VOITURE>
    </GARAGE>
    Est-il possible d'effectuer ce genre de requête ? :
    J'aimerais avoir toutes les voitures ayant la même couleur que celles de la marque 'a'.

    Merci pour votre aide.

  2. #2
    Membre Expert
    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
    Par défaut
    Oui.

    Tu peux t'inspirer de ce post pour voir à quoi ressemblerait le XPath :
    http://www.developpez.net/forums/d11...tri-difficile/

  3. #3
    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
    Vu qu'il n'y a pas de tri c'est bien plus simple.
    Simple affaire d'utiliser les prédicats.

    Toutes les VOITURE *dont*
    COULEUR est égal à un truc dans
    COULEUR *de*
    Toutes les VOITURE *dont*
    MARQUE est égal à 'a'

    Il peut toutefois y avoir quelques difficultés à cause des whitespaces du document.
    Il aurait mieux valu un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <GARAGE>
        <VOITURE ID='1'>
             <COULEUR>rouge</COULEUR>
             <MARQUE>a</MARQUE>
        <VOITURE>
        <VOITURE ID='2'>
             <COULEUR>rouge</COULEUR>
             <MARQUE>b</MARQUE>
        <VOITURE>
        <VOITURE ID='1'>
             <COULEUR>jaune</COULEUR>
             <MARQUE>b</MARQUE>
        <VOITURE>
    </GARAGE>
    (En fait, pour un exemple pareil, ce serait plutôt quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <garage>
        <voiture id='1' couleur='rouge' marque='a'/>
        <voiture id='2' couleur='rouge' marque='b'/>
        <voiture id='3' couleur='jaune' marque='b'/>
    </garage>
    En fait, un CSV serait sans doute plus adapté que du XML.

    mais je suppose que c'est l'exemple qui est simplifié)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre Expert
    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
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Vu qu'il n'y a pas de tri c'est bien plus simple.
    Simple affaire d'utiliser les prédicats.
    Je parlais juste du XPath utilisé, pas du tri XSL.

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien en nano-électronique
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Technicien en nano-électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    J'ai suivi le lien que m'a donné Loceka et en effet le problème traité semble similaire au mien.

    Du coup j'en déduit la requête ci-dessous :

    GARAGE/VOITURE[COULEUR = ../VOITURE[(MARQUE = 'a')]/COULEUR]

    Cela fonctionne à merveille.

    Vous avez l'air assez bien calé en xpath donc j'en profite pour vous poser une autre question : les valeurs, il vaut mieux les enregistrer en tant qu' attribut ou en tant qu'élément ? En terme de performance cela donne quoi ?

    Merci beaucoup.

  6. #6
    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
    Citation Envoyé par L00kMyEyes Voir le message
    les valeurs, il vaut mieux les enregistrer en tant qu' attribut ou en tant qu'élément ?
    Ça dépend d'une tétrachiée de choses, malheureusement. On peut toujours suivre des grandes lignes, mais à la fin, chacun doit définir son format de la manière la plus adaptée pour ce qu'il pensait en faire.

    Si je t'ai conseillé de les passer en tant qu'attribut, c'est parce que :
    - Une voiture n'a probablement qu'une seule couleur.
    - Une voiture n'a qu'une seule marque.
    - Marque et couleur n'ont pas l'air sujets à l'extensibilité : a priori il n'y aura jamais besoin de leur ajouter des balises enfants.
    - Il n'y a pas beaucoup de valeurs à représenter. Avoir soixante attributs c'est pas très apprécié en XML, mais quand ils tiennent sur une ligne c'est cool.
    => Il est donc possible de les passer en attributs.
    - Ces valeurs n'ont pas besoin de whitespace d'indentation, et le leur permettre ne peut provoquer que des complexités.
    - On n'a pas tendance à mettre de whitespace dans les attributs, et si on le fait, il est automatiquement normalisé de toute façon.
    => Il y a donc quelque chose à gagner à les passer en attributs.

    Les grandes lignes c'est ça, mais je ne me suis pas intéressé à ton cas propre, puisque je ne le connais pas. Il y a peut-être d'autres choses à prendre en compte.
    Parmi les outils utilisés, certains sont peut-être incapables de gérer les attributs.
    Parmi les gens qui doivent travailler avec, certains n'ont peut-être pas été formés aux attributs
    Il pourrait aussi y avoir l'inverse.
    Dépend de trop de choses pour donner une réponse définitive.

    Citation Envoyé par L00kMyEyes Voir le message
    En terme de performance cela donne quoi ?
    Houlà, mais on s'en tape de ce genre de performances. Du fait qu'ils sont uniques et moins imbriqués, les attributs sont forcément un chouilla plus rapides à lire que les éléments enfants. À moins que les outils utilisés fassent le contraire exprès.
    Mais ça n'a aucune espèce d'importance.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [SimpleXML] Combox en php (5.2) depuis requete xpath sur xml
    Par christophetriboulet dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/03/2015, 16h28
  2. écrire une requete xpath sur Birt
    Par simplyc dans le forum BIRT
    Réponses: 0
    Dernier message: 16/05/2014, 16h32
  3. Réponses: 2
    Dernier message: 20/07/2012, 10h52
  4. opération sur paramètres dans requete
    Par cgr_007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/04/2009, 13h35
  5. [c#][xml] requete xpath sur document xml avec espace de noms
    Par fab56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/02/2009, 11h56

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