Bonjour à tous, me revoila avec une nouvelle question.
Mon besoin est de transformer un flux xml avec xsl puis de générer un fichier csv. J'arrive jusqu'au fichier csv mais il est mal formé à cause de caractère spéciaux émanent de balise xml à l'interieur de ma boucle for-each.
un bout du xml ou se trouve le problème :
le fichier Xsl :
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 <article idArticle="lea10018816" rubrique="social" dateArticle="27/04/2012"> <titrearticle>La lisibilité du bulletin de paie bientôt améliorée*?</titrearticle> <chapitre> <titrechapitre>Une loi récente prévoit de simplifier les bulletins de paie à compter de l'année prochaine.</titrechapitre> <contenu> <paragraphe> <texteparagraphe>La récente loi de simplification du droit contient un article visant à améliorer la lisibilité du bulletin de paie et à réduire le nombre de lignes quil contient, notamment celles relatives aux cotisations et contributions sociales. Deux étapes sont prévues à cet effet.</texteparagraphe> <texteparagraphe>La première, consiste à lharmonisation, au plus tard le 1<exposant>er</exposant>*janvier 2013, des dispositions réglementaires définissant les éléments nécessaires au calcul de différentes cotisations sociales (assurances sociales, assurance chômage, retraite complémentaire).</texteparagraphe> <texteparagraphe>Quant à la 2<exposant>de</exposant>*étape, fixée au 1<exposant>er</exposant>*janvier 2015 au plus tard, elle consiste en lobligation, pour les instances chargées de la gestion du régime dassurance chômage et des régimes de protection sociale complémentaire, de mettre en uvre des dispositions utiles pour que les conventions et accords négociés tiennent compte de lharmonisation des assiettes sociales.</texteparagraphe> <texteparagraphe> <annotation> <titreannotation>Remarque*:</titreannotation> <texteannotation>*une maquette du futur bulletin de paie simplifié a été présentée par le ministre du Travail le 19 mars dernier. Cette maquette se signale notamment par le regroupement de lensemble des cotisations sociales salariales et patronales.</texteannotation> </annotation> </texteparagraphe> </paragraphe> </contenu> </chapitre> </article>
Avec le xsl et du php, j'arrive à créer le fichier csv mais en observant le xml, dans ma boucle for-each qui s'occupe du nœud <texteparagraphe>, j'ai quelque fois des balises spéciale du genre <annotation><titreannotation> ou <exposant>. Quand je regarde le fichier csv,je me retrouve avec plein de caractère spéciaux qui malforme mon fichier csv et m'empêche dans un second traitement php d’insérer les données dans ma base mysql.
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
26 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:apply-templates select="//article"/> </xsl:template> <xsl:template match="article"> <xsl:value-of select="@idArticle" /> <xsl:text>;;;</xsl:text> <xsl:value-of select="@rubrique" /> <xsl:text>;;;</xsl:text> <xsl:value-of select="@dateArticle" /> <xsl:text>;;;</xsl:text> <xsl:value-of select="./titrearticle"/> <xsl:text>;;;</xsl:text> <xsl:value-of select="./chapitre/titrechapitre"/> <xsl:text>;;;</xsl:text> <xsl:for-each select="./chapitre/contenu/paragraphe/texteparagraphe"> <xsl:value-of select="."/><xsl:element name="br"/> </xsl:for-each> <xsl:text>
</xsl:text> </xsl:template> </xsl:stylesheet>
Ma question: peut-on lors du traitement de xsl:for-each remplacer les balises <annotation><titreannotation> ou <exposant> par un saut de ligne ou une mise en italique ou bien les supprimer completement histoire d’éviter qu'en sortie le fichier ne soit plus exploitable en csv ?
Un grand merci pour votre aide, je débute et manque de temps pour appronfondir mes connaissances sur xsl en ce moment.
Partager