problème génération xml avec php

problème génération xml avec php - XML/XSL - Programmation

Marsh Posté le 18-11-2005 à 08:14:29    

Bonjour,
 
Il s'agit d'un problème de génération de fichier xml a l'aide de php. J'ai essayé plusieurs methode proposées sur internet, mais aucun ne fonctionne. La page php s'execute sans erreur mais ma sortie écran navigateur reste blanche.
J'ai utilisé easyphp 1.6, puis php5+Apache2, en décommentarisant les extensions suivantes :
 - extension=php_xmlrpc.dll
 - extension=php_xsl.dll
 
mais il ne veut rien savoir.  
 
Faut-il installer un module particulier en plus avec php pour traduire du XML :
 
Voici mes fichiers  : societe.xml

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <commande>
  3.     <vendeur>John Doe</vendeur>
  4.     <article>boulon1</article>
  5.     <quantite>16</quantite>
  6.     <date>
  7.         <mois>1</mois>
  8.         <jour>13</jour>
  9.         <annee>2000</annee>
  10.     </date>
  11.     <client>Sally Finkelstein</client>
  12. </commande>


 
commande.xsl :

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3c.org/2005/XSL/Transform">
  3.     <xsl:output method="html" encoding="ISO-8859-1" indent="yes"/>
  4.     <xsl:template match="/">
  5.         <commande>
  6.             <date>
  7.             <xsl:value-of select="/commande/date/annee"/>/<xsl:value-of select="/commande/date/mois"/>/
  8.             <xsl:value-of select="/commande/date/jour"/>
  9.             </date>
  10.             <client>société</client>
  11.             <article>
  12.                 <xsl:apply-templates select="/commande/article"/>
  13.                 <quantite><xsl:value-of select="/commande/quantite"/></quantite>
  14.             </article>
  15.         </commande>
  16.     </xsl:template>
  17.     <xsl:template match="article">
  18.         <numero_piece>
  19.             <xsl:choose>
  20.                 <xsl:when test=". = 'boulon1'">E16-25A</xsl:when>
  21.                 <xsl:when test=". = 'boulon2'">E16-25B</xsl:when>
  22.                 <xsl:otherwise>00</xsl:otherwise>
  23.             </xsl:choose>
  24.         </numero_piece>
  25.         <description><xsl:value-of select="."/></description>
  26.     </xsl:template>
  27. </xsl:stylesheet>


 
Voici une première methode :

Code :
  1. $analyseur_xslt = xslt_create();
  2.   xslt_set_base($analyseur_xslt,"file://c:/Easyphp/www/new/xml/" );
  3.   $truc=xslt_process($analyseur_xslt,"societe.xml","commande.xsl" );
  4.   echo $truc;
  5.   xslt_free($analyseur_xslt);


 
En voici une deuxième :

Code :
  1. $proc_xsl=new XSLTProcessor();
  2. $doc_xsl=new DOMDocument();
  3. $doc_xsl->load("commande.xsl" );
  4. $proc_xsl->importStyleSheet($doc_xsl);
  5. $doc_xml=new DOMDocument();
  6. $doc_xml->load("societe.xml" );
  7. $resultat=$proc_xsl->transformToXML($doc_xml);
  8. echo $resultat;


 
Merci

Reply

Marsh Posté le 18-11-2005 à 08:14:29   

Reply

Marsh Posté le 22-11-2005 à 03:22:31    

J'en sais rien parce que trop tard pour chercher à ta place mais la place de ce truc serait pas dans la section php :??:
 
T'as la doc php pour ça, horimis la syntaxe xml inapropriée ou xsl pas bonne (j'en sais rien ;) )
 
Et oublis pas ton meilleur ami ;)

Reply

Marsh Posté le 22-11-2005 à 08:29:10    

La deuxième méthode est la meilleure pour ce qui est PHP5
 
Ensuite, une première bizarrerie : T'as mis, dans ton <xsl: output/>, la méthode "HTML"... Alors que tu ne génère aucun HTML, mais de l'XML pur (avec comme root l'élément commande).
 
Enfin, si t'affiches un XML, faut préciser au navigateur que t'as de l'XML, donc avant de faire un echo du resultat, rajoute :

header('Content-Type: text/xml; charset=iso-8859-1');


Message édité par FlorentG le 22-11-2005 à 08:29:28
Reply

Sujets relatifs:

Leave a Replay

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