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 :

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>
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
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>
... 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
		<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>
... Mon script ne fonctionne plus, et mon navigateur (Firefox) me demande de télécharger mon fichier php

Voici mon script php :

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);
 
?>
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.

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.