[PHP][XML] Afficher xml dans page php

Afficher xml dans page php [PHP][XML] - PHP - Programmation

Marsh Posté le 06-03-2007 à 15:12:56    

Bonjour à tous!
Voila je developpe un code pour afficher du xml dans une page php.
J'ai suivi la démarche situé a cette adresse afin d'utiliser php_xslt.dll:
 
http://www.developpez.net/forums/s [...] 059#771986
 
J'ai bien ajouté toutes les dll dans System32 mais lorsque je lance ma page j'ai le message suivant:

Code :
  1. Fatal error: Call to undefined function xslt_create() in C:\Program Files\EasyPHP1-8\www\exemple.php


Voici mon code php:

Code :
  1. <?php
  2.             $xh = xslt_create();
  3.             $file=fopen("monfichier.xml","r" );
  4.             $xml=fread($file,1024);
  5.             fclose($file);
  6.             $file=fopen("monfichier.xsl","r" );
  7.             $xsl=fread($file,16384);
  8.             fclose($file);
  9.             $arguments = array('/_xml' => $xml,'/_xsl' => $xsl);
  10.             $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
  11.             xslt_free($xh);
  12.             print "$result";
  13. ?>


Donc il ne reconnait pas l'extension php_xslt.dll (pourtant bien décommantée dans php.ini !)
Et lorsque je fait un phpinfo() je n'ai aucune trace de sablotron (j'ai juste xml, xmlreader et xmlwriter qui se sont ajoutés enable!) est-ce normal ?
 
Etant débutant en php j'ignore si c'est une bonne solution! Si il y a plus simple pour affiché du xml dans une page php je suis preneur!!!!!!
 
Merci d'avance! David

Reply

Marsh Posté le 06-03-2007 à 15:12:56   

Reply

Marsh Posté le 06-03-2007 à 17:37:46    

Tu veux dire afficher la transformation d'un xml par du xslt, je suppose.
 
Déjà, ton code m'a l'air bien compliqué pour rien, il me semble que tu peux balancer directement le chemin d'un xml et d'un xsl à xslt_process... pas besoin de faire tout ça...
 
Pour l'extension non chargée, je sais pas, t'as bien redémarré le serveur et tout ? Et puis carrément tenté de rebooter la machine aussi ? Vu que ce sont des dll dans le path système, on sait jamais... :spamafote:


Message édité par sielfried le 06-03-2007 à 17:37:57

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 07-03-2007 à 08:40:27    

j'allais aussi demandé s'il avait bien redémarré easyphp.
 
ps : wamp est de meilleure qualité que easyphp ;)

Reply

Marsh Posté le 07-03-2007 à 09:09:28    

Oui j'ai redémarré easyphp et mon pc mais rien y fait!
J'ai bien copier toutes les dll (iconv.dll, sablot.dll et expat.dll renommé en libexpat.dll)... Si quelqu'un a une idée !  
Sinon j'ai jeté un coup d'oeil sur la doc de xslt-process :
http://fr.php.net/manual/fr/function.xslt-process.php
En effet je pense qu'il y a plus simple mais comme pour l'instant ca ne marche pas je ne peut pas trop tester !!!!
 

Reply

Marsh Posté le 07-03-2007 à 10:08:22    

Une petite remarque : j'utilise php5! J'ai vu sur la toile que sablotron n'existait plus avec php5 (remplacé par le package php5-xsl : "This package provides a module for XSL using the libxslt XSL parse" )
Je suis un peu perdu! :? Est-ce que quelqu'un utilise sablotron avec php5 par hasard?

Reply

Marsh Posté le 07-03-2007 à 10:15:54    

Reply

Marsh Posté le 07-03-2007 à 10:28:04    

en php5, faut activer l'extension nommée xsl : http://fr.php.net/manual/fr/ref.xsl.php
 
Voici un ex de transformation xsl d'une chaîne de caractères XML et d'une chaîne de caractères XSL et retourne le résultat dans une chaîne :  

Code :
  1. // Create a DOM document and load the XML stream
  2.                 $XmlParser = new DomDocument;
  3.                 $XmlParser->loadXML($XmlData);
  4.  
  5.                 // Create a DOM document and load the XSL stylesheet
  6.                 $XslParser = new DomDocument;
  7.                 $XslParser->loadXML($XslData);
  8.  
  9.                 // Create the XSL processor
  10.                 $xp = new XsltProcessor();
  11.  
  12.                 // Import the XSL styelsheet into the XSLT process
  13.                 $xp->importStylesheet($XslParser);
  14.  
  15.                 // We take into account the parameters
  16.                 foreach($Params as $key => $CurrentValue)
  17.                 {
  18.                     $xp->setParameter('', $key, $CurrentValue);
  19.                 }
  20.  
  21.                 // We display the result
  22.                 $TransformResult = $xp->transformToXML($XmlParser);
  23.  
  24.                 // Return the generated string
  25.                 return $TransformResult;


Message édité par rufo le 07-03-2007 à 10:29:31
Reply

Marsh Posté le 07-03-2007 à 11:21:35    

Merci pour cette réponse! Juste un truc : il ne reconnait pas  

Code :
  1. $xp = new XsltProcessor();


Je pense que c'est moi qui est mal copier libxml2.dll !  
Je l'ai copié dans C:\WINDOWS\system32. Dans php.ini la ligne : extension=php_xslt.dll est bien décommenté.
Qu'est-ce qu'il faut faire de plus?

Reply

Marsh Posté le 07-03-2007 à 11:39:37    

franchement, installes wamp 1.6. Y'a rien à bidouiller, tout marche du premier coup...


Message édité par rufo le 07-03-2007 à 11:39:52
Reply

Marsh Posté le 07-03-2007 à 14:15:36    

Bon je dois faire ça comme un naz mais avec wamp 1.7 ça ne marche pas non plus!!!!!!
J'ai exactement la même erreur qu'avec easyphp :  

Code :
  1. Fatal error: Class 'XSLTProcessor' not found


Reply

Marsh Posté le 07-03-2007 à 14:15:36   

Reply

Marsh Posté le 07-03-2007 à 15:39:11    

dans le php.ini (qui se trouve cette fois-ci dans c:\...\wamp\Apache2\bin) t'as bien décommenté extension=php_xsl.dll et relancé le serveur?

Reply

Marsh Posté le 12-03-2007 à 10:01:01    

Merci Rufo! En effet c'est moi qui est fait le boulet! J'avais décommenté cette ligne mais pas dans le bon php.ini (j'avais modifié celui dans C:\wamp\php !).
Du coup avec ce bout de code (récupéré dans la doc php) j'affiche mon fichier nikel :

Code :
  1. <?php
  2. $XmlData = "monfichier.xml";
  3. $XslData = "monfichier.xsl";
  4. $doc = new DOMDocument();
  5. $xsl = new XSLTProcessor();
  6. $doc->load($XslData);
  7. $xsl->importStyleSheet($doc);
  8. $doc->load($XmlData);
  9. echo $xsl->transformToXML($doc);
  10. ?>


Merci encore!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed