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

XML/XSL et SOAP Discussion :

Requête sur fichier XML avec liaison de données


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Requête sur fichier XML avec liaison de données
    Bonjour à tous,

    J'en appelle à vous car j'ai besoin d'aide sur un document XML SVP. Je souhaite afficher les valeurs des attributs pour les différentes balises choix lorsque les attributs ref correspondent. Les différentes valeurs seront affichées sur une page web. J'ai juste besoin d'un conseil pour savoir vers quelle technologie je dois m'orienter sachant que mon XML est parsé par l'API DOM de PHP. (XPATH, SimpleXML, XSLT, etc) ? Mon problème est véritablement comment LIER ces données (comme en SQL avec un SELECT FROM WHERE data = data).


    Merci beaucoup!


    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <details>
      <detail ref="1"  attr="donneesde1"></detail>
      <detail ref="2" attr="donneesde2"></detail>
      <detail ref="3"  attr="donneesde3"></detail>
      </details>
      <solution>
       <choix ref="1"></choix>
       <choix ref="1"></choix>
       <choix ref="2"></choix>
      </solution>
      <solution>
       <choix ref="1"></choix>
       <choix ref="3"></choix>
      </solution>
    </root>

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    En essayant de donner un sens concret à ce que tu racontes, ça donne l'impression que tu cherches à faire de la liaison entre details/detail/@ref et solution/choix/@ref.
    Auquel cas, le plus direct serait du XPath.

    Mais tu devrais essayer d'être encore plus flou que ça, pour décrire ce que tu veux afin que les gens te donnent leur avis sur la meilleure manière de le faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut C'est presque ça
    Merci d'avoir pris le temps de répondre. Je suis d'accord que ce n'est pas forcément très clair. Mais c'est cela que je voulais savoir sauf que pour chaque "choix" avec la "ref" x, je cherche à afficher "attr" de "ref" x. Donc oui c'est une "liaison" mais comme je débute dans cette techno, je ne suis pas sûr du terme utilisé. Question subsidiaire, comme je vais afficher dans du html, faut-il utiliser xslt ou parser mon html avec php DOM + xpath?

  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
    Soit toutes les données de ta pages se trouvent dans du XML (un ou plusieurs fichiers), auquel cas faire la transformation en XSLT se justifie (toute ta page HTML est générée par un code XSLT mettant en formes les données présentes dans le(s) XML), soit ce sont juste quelques données éparses auquel cas le plus simple est de faire des requêtes XPath occasionnelles depuis ton code PHP pour compléter ta page HTML.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Merci
    Bonjour,

    Merci pour ta réponse. Pour donner une suite un peu plus concrète à mon topic, je souhaite faire quelque chose qui ressemble au code ci-dessous. Je souhaite pouvoir regrouper dans une page web (feuille XSLT) les infos à la fois du code_artiste et de son détail correspondant. J'ai volontairement mis le "genre" (masculin ou féminin) dans le code_artiste et non dans le detail_artiste car cela correspond à un besoin bien réel. En gros ce que que je veux faire c'est du liste-détail comme en PHP/MySQL mais avec du XML. Je précise aussi que je n'ai pas le choix de stocker les données en base. Tout est dans un fichier XML.

    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
     
    <liste_codes_artistes>
       <code_artiste genre="masculin">10222</code_artiste>
       <code_artiste  genre="masculin">10368</code_artiste>
       <code_artiste  genre="feminin">10552</code_artiste>
    </liste_codes_artistes>
     
    <liste_details_artistes>
       <detail_artiste id=10222>
           <prenom>Michael</prenom>
           <nom>Jackson</nom>
       </detail_artiste>
       <detail_artiste id=10368>
           <prenom>Johnny</prenom>
           <nom>Hallyday</nom>
       </detail_artiste>
       <detail_artiste id=10552>
           <prenom>Tina</prenom>
           <nom>Turner</nom>
       </detail_artiste>
    <liste_details_artistes>

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    pour la structure globale du xsl
    -faire un xsl:match sur codes_artiste
    -dans le xsl:match stocker la ref artiste dans une variable
    -toujours à l'intérieur du match une boucle xsl:for sur /root/listes_details_artistes (si root est l'élément racine)
    -à l'intérieur de la boucle for un xsl:when pour tester la ref artiste du noeud courant de la boucle for et le comparer à la variable préalablement stockée. Si le test est ok il suffit de copier le noeud courant

    en gros le problème est que dans xslt 1 on ne peut pas utiliser de variables dans les instructions select mais dans les instructions match oui.Or ici tu as nécessairement besoin d'une variable. Ca fait beaucoup de tours de boucles inutiles mais je crois me rappeler que c'est la solution de contournement recommandée (cf msdn microsoft)

    je te laisse le coder

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse! Je vais tester cette solution... C'est d'une grande aide car je suis débutant en XSLT et en XML en général...

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par Benjîle Voir le message
    en gros le problème est que dans xslt 1 on ne peut pas utiliser de variables dans les instructions select mais dans les instructions match oui.
    L'inverse.

    Du coup ton xsl:when est inutile, ça devrait plutôt être un prédicat sur le select. Mais bon, ça fait pas une grosse différence non plus.
    Au passage une variable n'est pas absolument indispensable, l'emploi de current() ferait l'affaire... Mais une variable clarifie un peu et évite les bugs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    ah oui après relecture de mes fichiers xsl monsieur thelvin a raison (on pouvait s'en douter)

    donc

    xsl match sur les code_artistes
    xsl foreach sur les root/liste_details_artistes/detail_artiste avec un predicat @id=current()/@id

    seront amplement suffisants

Discussions similaires

  1. Traitement basique sur fichier xml avec python
    Par raphael75015 dans le forum Général Python
    Réponses: 11
    Dernier message: 22/05/2014, 15h44
  2. Requête sur fichier XML
    Par migutz dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/11/2007, 15h34
  3. [AJAX] requête sur fichier.xml => erreur 405 sous IE !
    Par jeje13009 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/03/2007, 21h42
  4. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  5. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16

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