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

Bibliothèques et frameworks PHP Discussion :

[XSL] Exécuter un PHP issu de XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut [XSL] Exécuter un PHP issu de XML
    Bonjour,

    J'ai un fichier XML commençant par ces 2 lignes :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet href="test2.xsl" type="text/xsl"?>
    Le XSL a pour effet de modifier le XML pour créer des requetes MYSQL.
    Si j'affiche ce XML dans un navigateur, pas de problème, tout s'affichecomme il faut, j'ai bien mes requetes MYSQL.
    Je peux faire un copier-coller pour insérer mes données dans MYSQL.

    Maintenant, je voudrais automatiser cet import, mais je ne trouve pas comment faire.

    Je pense que cela ne doit pas être très compliqué, mais je sèche.

    Si une bonne âme pouvait m'aider, ce serait sympa.

    Merci d'avance.

  2. #2
    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
    Faites voir un peu de test2.xsl si vous voulez bien; et le contexte de php où la sortie de xslt serait appliquée.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Merci de vous pencher sur mon problème.

    voici le début du XSL :
    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
    28
    29
     
    <xsl:template match="/">  
    <xsl:apply-templates select="//BIEN"/>
    </xsl:template>
     
    <xsl:template match="BIEN">
     
    <xsl:text>INSERT INTO `bv3dt_jea_import_properties` SET </xsl:text>
     
    <xsl:text>ref = '</xsl:text>
    <xsl:value-of select="./INFO_GENERALES/AFF_NUM"/>
    <xsl:text>', title = '</xsl:text>
     
    <xsl:call-template name="escape-apos">
          <xsl:with-param name="string">
        <xsl:value-of select="./INTITULE/FR"/>
          </xsl:with-param>  
        </xsl:call-template>
     
     
    <xsl:text>', alias = '</xsl:text>
     
    <xsl:call-template name="escape-apos">
          <xsl:with-param name="string">
        <xsl:value-of select="./INTITULE/FR"/>
          </xsl:with-param>  
        </xsl:call-template>
     
    <xsl:text>', transaction_type = '</xsl:text>
    et voici le début du PHP généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    INSERT INTO `bv3dt_jea_import_properties` SET ref = '911', title = 'Maison Houdan 3 pièce(s) 84 m2', alias = 'Maison Houdan 3 pièce(s) 84 m2', transaction_type = 'SELLING';
    En fait je récupère le flux XML issu d'un logiciel de gestion d'agence immobilière pour le reverser dans le site web de l'agence.

    Michel

  4. #4
    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
    Je vois bien qu'il y a un effort fait pour retourner un texte sql de par le xslt - c'est très bien. Mais, je voudrais surtout et aussi voir l'élément xsl:output. Vous vous assurez que elle s'écrit plus ou moins comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="text" encoding="ISO-8859-1" omit-xml-declaration="yes" />
    surtout l'attribut omit-xml-declaration.

    Et puis, vous pouvez tout à fait prendre contrôle où et quel document xslt vous voulez vous appliquer. Celui précise dans le document xml n'a pas le sens obligatoire.

    Tout ça étant dit, voici l'esquisse ce que devrait apparaître dans le script.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //au titre d'exemple
    $xmlfile="test2.xml";
    $xsltfile="test2.xsl";
     
    $xml=new DOMDocument();
    $xml->load($xmlfile) or exit("check xml well-formedness : dom parser complains...\n");
     
    $xslt=new DOMDocument();
    $xslt->load($xsltfile) or exit("check xslt well-formedness : dom parser complains...\n");
     
    $xsltproc=new XSLTProcessor();
    $xsltproc->importStyleSheet($xslt) or exit("XSLTProcessor complains...\n");
     
    //examinez-le et puis l'appliquez
    $ssql=$xsltproc->transformToXml($xml);

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Bonsoir,

    Dans mon XSL, j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="text" />
    Je l'ai donc modifier pour qu'il corresponde à votre suggestion

    J'ai créé un testXML.php dans lequel j'ai placé votre code PHP.
    Lorsque je l'execute, j'ai une page blanche en retour.
    Dans mon log apache, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "GET /testXML.php HTTP/1.1" 500 -

  6. #6
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    Je me répond :
    En fait, l'extension XSL n'était pas activée sur mon serveur de test.
    J'ai donc utilisé un autre serveur avex XSL activé.

    En faisant un echo après le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ssql=$xsltproc->transformToXml($xml);
    j'ai bien ma commande SQL.

    Merci de votre aide.

    Michel

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

Discussions similaires

  1. Exécuter fonction Flex via PHP et refresh XML
    Par cocacola0589 dans le forum Flex
    Réponses: 12
    Dernier message: 24/04/2009, 14h18
  2. Exécuter du code php issue d'une base Mysql
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2008, 13h30
  3. Réponses: 7
    Dernier message: 04/06/2007, 15h51
  4. [FOP][XSL-FO] external-graphic : chemin issu du xml
    Par MrDuChnok dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/06/2005, 17h13
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

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