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.
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.
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>';
Si vous pouviez me donné les bonnes commande PHP ça m'aiderais beaucoup.
EDIT : Exemple (ci-dessus) corrigé, et fonctionnel.
Partager