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 :
- La page XML ne peut pas être affichée
- 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.
- --------------------------------------------------------------------------------
- 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 :
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <commande>
- <vendeur>John Doe</vendeur>
- <article>boulon1</article>
- <quantite>16</quantite>
- <date>
- <mois>1</mois>
- <jour>13</jour>
- <annee>2000</annee>
- </date>
- <client>Sally Finkelstein</client>
- </commande>
|
commande.xsl :
Code :
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3c.org/2005/XSL/Transform">
- <xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>
- <xsl:template match="/">
- <commande>
- <date>
- <xsl:value-of select="/commande/date/annee"/>/<xsl:value-of select="/commande/date/mois"/>/
- <xsl:value-of select="/commande/date/jour"/>
- </date>
- <client>société</client>
- <article>
- <xsl:apply-templates select="/commande/article"/>
- <quantite><xsl:value-of select="/commande/quantite"/></quantite>
- </article>
- </commande>
- </xsl:template>
- <xsl:template match="article">
- <numero_piece>
- <xsl:choose>
- <xsl:when test=". = 'boulon1'">E16-25A</xsl:when>
- <xsl:when test=". = 'boulon2'">E16-25B</xsl:when>
- <xsl:otherwise>00</xsl:otherwise>
- </xsl:choose>
- </numero_piece>
- <description><xsl:value-of select="."/></description>
- </xsl:template>
- </xsl:stylesheet>
|
Voici une première methode :
Code :
- header('Content-Type: text/xml; charset=iso-8859-1');
- $analyseur_xslt = xslt_create();
- xslt_set_base($analyseur_xslt,"file://c:/Easyphp/www/new/xml/" );
- $truc=xslt_process($analyseur_xslt,"societe.xml","commande.xsl" );
- echo $truc;
- xslt_free($analyseur_xslt);
|
En voici une deuxième :
Code :
- header('Content-Type: text/xml; charset=iso-8859-1');
- $proc_xsl=new XSLTProcessor();
- $doc_xsl=new DOMDocument();
- $doc_xsl->load("commande.xsl" );
- $proc_xsl->importStyleSheet($doc_xsl);
- $doc_xml=new DOMDocument();
- $doc_xml->load("societe.xml" );
- $resultat=$proc_xsl->transformToXML($doc_xml);
- echo $resultat;
|