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 :

Définir l'ordre d'affichage d'une requête [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut Définir l'ordre d'affichage d'une requête
    Bonjour à tous,

    J'ai un fichier XML qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <SUBMITION>
                <SUBMITOR>7th Seal AG</SUBMITOR>
                <STREET>Steigstrasse 1</STREET>
                <ZIPCODE>9552</ZIPCODE>
                <CITY>Bronschhofen</CITY>
    </SUBMITION>
    Voilà ma requête XPATH qui est générée par php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $xml->xpath ('/SUBMITION/CITY | /SUBMITION/STREET | /SUBMITION/SUBMITOR');
    La réponse que j'attendais :
    Bronschhofen Steigstrasse 1 7th Seal AG
    La réponse que je reçois :
    7th Seal AG Steigstrasse 1 Bronschhofen
    Est-ce que quelqu'un pourrais me dire comment faire pour formater l'ordre de sotie ? Enfin, que celle-ci corresponde à ce qui se trouve dans la requête.

    Merci à tous pour votre aide

    Bonne journée à tous
    Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    En XPath 1.0 c'est impossible, il faut faire plusieurs requêtes. Le résultat est donné dans l'ordre des apparitions dans le document, point final. Pour donner un autre exemple, demander deux fois la même chose ne la renverra qu'une fois.

    En XPath 2.0 tu pourrais utiliser les séquences :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (/SUBMITION/CITY, /SUBMITION/STREET, /SUBMITION/SUBMITOR)
    Mais je ne crois pas que PHP gère XPath 2.0
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Points : 301
    Points
    301
    Par défaut
    Salut thelvin et merci beaucoup pour ta réponse

    Malheureusement php ne gère que le xpath 1.0. Donc je vais me rabattre sur les requêtes multiples puisque j'ai pas vraiment le choix

    Merci encore pour ton aide et bonne journée.
    Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5

  4. #4
    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 845
    Points
    4 845
    Par défaut
    En XPath 1.0 ce n'est pas possible si tu veux récupérer des noeuds en sortie.

    Par contre toi tu as l'air de vouloir simplement l'information textuelle.
    Dans ce cas, tu peux utiliser la fonction concat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    concat(/SUBMITION/CITY, ' ', /SUBMITION/STREET, ' ', /SUBMITION/SUBMITOR)

  5. #5
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Il peut se faire avec DOMDocument et DOMXpath comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $xfile='le_fichier.xml';
    $doc=new DOMDocument;
    $doc->load($xfile);
    $domxpath = new DOMXPath($doc);
    $return=$domxpath->evaluate("concat(/SUBMITION/CITY,' ',/SUBMITION/STREET,' ',/SUBMITION/SUBMITOR)");
    echo $return."\n";
    En principe, concat() est une expression tout à fait xpath 1.0: seulement le problème n'est parfois le modèle xpath pour cetaine libraire, simplexml par exemple, en php ne supporte pas pleinement xpath dans tout l'ampleur.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Citation Envoyé par Loceka Voir le message
    En XPath 1.0 ce n'est pas possible si tu veux récupérer des noeuds en sortie.
    Pas faux. Je suis resté trop abstrait -_-°.
    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. Gerer l'ordre d'affichage d'une requéte
    Par Myogtha dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/03/2009, 04h30
  2. [MySQL] Mauvais ordre de résultat d'une requête
    Par licorne dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 06/03/2006, 16h47
  3. [MySQL] Affichage d'une requête
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 31/01/2006, 10h54
  4. Modifier l'affichage d'une requête
    Par seal dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 14h26
  5. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43

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