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 :

[PHP][XML][XSLT]Utiliser PHP pour afficher mon xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 11
    Points
    11
    Par défaut [PHP][XML][XSLT]Utiliser PHP pour afficher mon xml
    Bonjour à tous,

    Cela fait moins d'une semaine que je me suis mis à XML et ses copains et après avoir utilisé mon ami je reste bloqué.

    Mon problème est le suivant :
    J'ai un fichier XML lié avec un DTD et un XSL qui s'affiche convenablement tout seul.
    Maintenant j'aimerai utiliser php pour l'afficher (et après pouvoir faire passer des paramètres pour trier/filtrer mon xml)
    Mais tu ce que j'ai pu voir ou tester ne marche pas.

    Je suis sous php 4 ou 5 au choix ^^ de plus le but est de ne pas avoir de BDD et de tout faire en XML/XSLT et PHP pour les opérations les plus complexes ou non-réalisables en XML.

    un test basique que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    header('Content-type: type/xml');
    $filename = "./testWallet.xml";
    $handle = fopen ($filename, "r");
    $contents = fread ($handle, filesize ($filename));
    print $contents;
    fclose ($handle);
    ?>
    avec le header, il me demande d'enregistrer le fichier et sans le header, il m'affiche du texte mais non formaté et surtout pas complet du tout.

    Voici quelques question :
    1/ est ce que c'est possible juste pour l'affichage depuis php ? sans avoir à tout refaire? edit : dans le sens inserer du php dans le xml ou xslt ?

    2/ est ce que l'on peut passer des paramètres directement au xml et les récupérer dans le xslt par exemple pour ordonner les résultats ?

    3/ est-il possible d'afficher plusieurs fichier xml à la suite ? voir d'inclure un fichier xml dans un autre (depuis xml ou xslt)?

    Je n'ai pas mis mes xml/xslt pour des raisons de sécurité mais si il les faut je mettrais un exemple

    merci beaucoup d'avance, en attendant je continue à tester.

    EDIT : je viens de m'apercevoir après post que j'avais mis type a la place de text, donc ça c'est résolu mais j'aimerais avoir réponses à mes questions merci

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Oui je l'ai vu, mais je ne comprend pas.

    1) il y a une variable avec des paramètres mais qui ne sont utilisés nul part ?

    2) mon xslt est déjà inclus dans le xml. donc je vais pas le ré-inclure, cela va poser problème non ?

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    type/xml n'est pas un type MIME. Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: text/xml');
    Tu peux aussi utiliser readfile()
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Je ne vois toujours pas comment faire passer des paramètres php et surtout comment les utiliser, car dans le lien que donne Erwy le tableau de paramètres n'est utilisé nul part.

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    je reviens mais cette fois pour Xpath,

    J'ai 2 fichiers xml, l'un avec des données fixes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <row typeName="test" groupID="5" typeID="1">
    et l'autre avec des données changeantes mais qui on un lien typeID avec le premier fichier ici "1".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <row typeID="1" points="8000" inside="3"/>
    Ensuite dans mon xsl j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:variable name="test" select="document('../2emefichier.xml')" />
    <xsl:for-each select="row">
       <xsl:if test="@typeID = $test//@typeID">
          <tr>
             <td rowspan='5'>
                <xsl:value-of select="$test//@typeName" />
             </td>
          </tr>
       </xsl:if>
    </xsl:for-each>
    Il m'affiche bien le tableau, mais le typeName ne correspond pas à typeID il m'affiche le premier typeName qu'il rencontre.

    J'ai essayer dans le value-of :
    - $test//row[@typeName=@typeID]
    - $test//[@typeName=@typeID]
    - $skills//@typeName[@typeID=$skills//@typeID]

    Vais être obligé de faire une autre boucle pour avoir la correspondance ?

    Merci

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par bladebo
    Il m'affiche bien le tableau, mais le typeName ne correspond pas à typeID il m'affiche le premier typeName qu'il rencontre.
    Je ne suis pas sûr d'avoir bien saisi ce que tu cherchais à faire, mais a priori cela devrait plutôt être cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:variable name="test" select="document('../2emefichier.xml')" />
    <xsl:for-each select="row[@typeID = $test//@typeID]">
          <tr>
             <td rowspan='5'>
                <xsl:value-of select="$test//row[@typeID = current()/@typeID]/@typeName" />
             </td>
          </tr>
    </xsl:for-each>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    C'est parfait merci, exactement ça.
    Je pensais pas que dans le for each on pouvait faire un test.

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par bladebo
    Je pensais pas que dans le for each on pouvait faire un test.
    D'une manière générale, tous les attributs select des balises XSLT acceptent des expressions XPath complètes avec test possible (en terminologie XPath, on appelle les tests entre [] des prédicats).
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2011, 13h57
  2. [SimpleXML] manipulation d'un fichier xml en utilisant php
    Par abauser1 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 27/04/2011, 10h22
  3. PHP/FLASH récupérer une variable pour afficher une image dans un clip
    Par Touillette85 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/12/2008, 10h02
  4. [DOM] Ecrire dans mon XML avec du PHP
    Par PurpleDoll dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 15/10/2007, 14h06
  5. Réponses: 7
    Dernier message: 07/02/2007, 09h39

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