Bonjours, voici le contexte de mon soucis :

je reçois des fichier xml a entrée en BDD mySql via php5.5
Je choisis donc de passé sur un format cvs afin de pouvoir utilisé LOAD (IN)FILE de mySql(5.5)

Mais je n'arrive pas a créer un fichier texte (resultat.cvs pour l'exemple) depuis XSLTProcessor.

J'utiliserais un fichier trés simple pour l'exemple.

J'ai donc des fichiers formaté comme ça :
Code xml : 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
 
<?xml version="1.0" encoding="utf-8"?>
<tout>
    <parametres>
        <parametre version="1225"/>
    </parametres>
    <listes>
        <liste id="1" name="premiere liste">
            <contenu idc="2" designation="second contenue"/>
            <contenu idc="3" designation="troisieme contenue"/>
        </liste>
        <liste id="2" name="seconde liste">
            <contenu idc="3" designation="troisieme contenue"/>
            <contenu idc="5" designation="cinquieme contenue"/>
        </liste>
    </listes>
</tout>

Le XSL, qui pour chaque élément "contenu" trouvé doit créer cette ligne:
"NULL","id liste","id contenu","designation";
Donc le resultat de l'exemple devrais ressemblé a ça:
"NULL","1","2","second contenue";
"NULL","1","3","troisieme contenue";
"NULL","2","3","troisieme contenue";
"NULL","2","5","cinquieme contenue";
Code xsl : 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="text" encoding="utf-8"/>
 
	<xsl:template match="tout">
		<xsl:apply-templates/>
	</xsl:template>
 
	<xsl:template match="listes">
		<xsl:apply-templates/>
	</xsl:template>
 
	<xsl:template match="liste">
		<xsl:apply-templates/>
	</xsl:template>
 
	<xsl:template match="contenu">
		<xsl:text>"NULL","</xsl:text>
		<xsl:value-of select="../@id"/><xsl:text>","</xsl:text>
		<xsl:value-of select="@idc"/><xsl:text>","</xsl:text>
		<xsl:value-of select="@designation"/><xsl:text>";</xsl:text>
	</xsl:template>
 
</xsl:stylesheet>

La ou ça ce corse pour moi, c'est de passé du DomDocument au fichier texte.

Code php : 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
 
	$myxml = new domDocument();
	$myxml->load('fichier.xml');
	$myxsl = new domDocument();
	$myxsl->load('fichier.xsl');
 
	$myproc = new XSLTProcessor();
	$myproc->importStyleSheet($myxsl);
 
	$resultat=$myproc->transformToXml($myxml);
 
	if (!is_bool($resultat)) {
		echo '<p>Is not bool</p>';
		// sort un fichier vide
		file_put_contents('resultat.cvs', $resultat);
	}
	else echo '<p>Is bool</p>';
La s'affiche 'Is not bool', donc transformation sans erreur (il semble) mais après je ne sais pas comment écrire $resultat dans un fichier texte.

Si vous pouviez me donné les bonnes commande PHP ça m'aiderais beaucoup.

EDIT : Exemple (ci-dessus) corrigé, et fonctionnel.