problème génération xml avec php

problème génération xml avec php - PHP - Programmation

Marsh Posté le 22-11-2005 à 18:44:48    

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 avec l'erreur suivante :
 

Code :
  1. La page XML ne peut pas être affichée
  2. Impossible d'afficher l'entrée XML en utilisant la feuille de style . Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.
  3. --------------------------------------------------------------------------------
  4. Le document XML doit contenir un élément de niveau supérieur. Erreur de traitement de la ressource http://127.0.0.1/new/xml...

         
 
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="xml" 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. header('Content-Type: text/xml; charset=iso-8859-1');
  2. $analyseur_xslt = xslt_create();
  3.   xslt_set_base($analyseur_xslt,"file://c:/Easyphp/www/new/xml/" );
  4.   $truc=xslt_process($analyseur_xslt,"societe.xml","commande.xsl" );
  5.   echo $truc;
  6.   xslt_free($analyseur_xslt);


 
En voici une deuxième :  

Code :
  1. header('Content-Type: text/xml; charset=iso-8859-1');
  2. $proc_xsl=new XSLTProcessor();
  3. $doc_xsl=new DOMDocument();
  4. $doc_xsl->load("commande.xsl" );
  5. $proc_xsl->importStyleSheet($doc_xsl);
  6. $doc_xml=new DOMDocument();
  7. $doc_xml->load("societe.xml" );
  8. $resultat=$proc_xsl->transformToXML($doc_xml);
  9. echo $resultat;

Reply

Marsh Posté le 22-11-2005 à 18:44:48   

Reply

Marsh Posté le 22-11-2005 à 19:44:39    

Vérifie qu'il n'y a pas un espace qui traîne avant le <?xml dans le doc xml :)
 
(et tu fais souvent des doc xml sans leurs DTD/Schema toi ? :D)

Reply

Sujets relatifs:

Leave a Replay

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