Bonjour à tous,
je cherche à transformer un fichier xml en XHTML via un fichier xsl en utilisant la classe XSLTProcessor de PHP5. Pour plus de clarté, voici mon fichier xml :
Avec le fichier style.xsl suivant...
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 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <root> <element> <type>unprint</type> <answer>oui</answer> </element> <element> <type>unprint</type> <answer>oui</answer> </element> <element> <type>print</type> <answer>non</answer> </element> </root>
... il n'y a aucun probleme. Mon script PHP génère bien mon fichier XHTML. Mais, dès lors que j'ajoute une instruction xsl:if comme ceci...
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 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <html xml:lang="fr" lang="fr"> <head> <title>Questionnaire Oui</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template > <xsl:template match="root"> <table> <xsl:for-each select="./element"> <tr> <td><xsl:value-of select="answer"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
... Mon script ne fonctionne plus, et mon navigateur (Firefox) me demande de télécharger mon fichier php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <table> <xsl:for-each select="./element"> <xsl:if test="type='print'"> <tr> <td><xsl:value-of select="answer"/></td> </tr> </xsl:if> </xsl:for-each> </table>
Voici mon script php :
Comme aucune erreur ne s'affiche, j'ai tenté de faire un peu de débogage et il semblerait que le problème vienne de la fonction importStylesheet ; mais je n'en sais pas plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $xsl = new DOMDocument(); $xsl->load('style.xsl'); $xml = new DOMDocument(); $xml->load('essai.xml'); $proc = new XSLTProcessor(); $proc->importStylesheet($xsl); echo $proc->transformToXML($xml); ?>
Quelqu'un aurait-il une solution à m'apporter, s'il lui plaît ?
Merci d'avance
P.S. : petite précision, j'ai vérifié la syntaxe de mon fichier xsl en ouvrant mon fichier xml avec firefox, et tout semble fonctionner correctement.
Partager