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 :

For-each avec une variable en php


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut For-each avec une variable en php
    Bonjour,

    Je m'explique, je voudrais savoir si il est possible de générer dynamiquement une varibale contenant une requete Xpath pour l'utiliser ensuite dans un xsl:for-each select="$MaVar".

    Exemple

    Mon fichier php va générer automatiquement une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function ReturnQuery()
    {
    	$query="biens/bien[type_transaction='vente']";
    	return $query;
     
    }
    Le fichier xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <xsl:variable name="limit" select="php:functionString('ReturnQuery')"/>
    .....
     
    <xsl:template match="/">
    <div>
     
    	<xsl:for-each select="$limit">
    ....
    Le souci c'est qu'il ne me sort aucun résultat !

    Pourtant la requête Xpath est bonne puisque celle ci marche si je l'écris en dur dans le xsl.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:for-each select="biens/bien[type_transaction='vente']">
    Comme je débute ça fait des jours que je tourne en rond

    Quelqu'un aurait une solution ?

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Tu dois passer un paramètre au stylesheet au moment de la transformation.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Alors même en faisant cela, ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $xslt = new XSLTProcessor();
    $xslt -> importStylesheet(simplexml_load_file('FileXsl.xsl'));
    $xslt -> setParameter('', 'limit', "/biens/bien[type_transaction='vente']");
    $xslt -> registerPhpFunctions();
    echo  $xslt -> transformToXml(simplexml_load_file('FileXml.xml') );
    et en récupérant le paramètre dans le xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:param name="limit"/>
     
    <xsl:template match="/">
    <div>
    	<xsl:for-each select="$limit">
            .....
           </xsl:for-each>
    </div>
    </xsl:template>
    Rien ne marche ...

  4. #4
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Ca m'étonnerait pas que ce ne soit pas possible de passer du xpath en paramètre... jamais essayé. XSLT a été conçu pour éviter certains effets de bords, c'est la raison pour laquelle les variables sont immuables par exemple.

    Et si tu passe 'toto' comme paramètre, tu le retrouves dans le rendu de ta transformation?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui

    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="$limit"/>
    Je retrouve bien ma variable correctement interprétée, c'est pour ça que je tourne en rond, dans un for-each ça ne marche absolument pas.

  6. #6
    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,

    la méthode n'est pas la bonne, tu dois :
    - Ecrire une fonction en PHP qui évalue la requête XPath et renvoie un nodeset (ensemble de noeuds).
    - Appeler cette fonction dans le select du for-each (il n'est pas obligatoire de passer par une variable)

    Maintenant, sur un plan plus général, je m'interroge sur l'intérêt de faire tout cela... En principe, on évite l'utilisation d'extensions propriétaires (comme ici en PHP) qui rendent le code difficile à maintenir, à moins d'y être vraiment obligé.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2007, 20h11
  2. [PHP-JS] problème avec une variable
    Par schats dans le forum Langage
    Réponses: 14
    Dernier message: 15/04/2007, 13h54
  3. Réponses: 2
    Dernier message: 28/06/2006, 15h56
  4. probleme avec la PORTE DE VIE D'UNE VARIABLE EN PHP
    Par stomerfull dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2005, 14h19
  5. probleme avec la PORTE DE VIE D'UNE VARIABLE EN PHP
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h17

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