Bonjour,
Je dois convertir un fichier XML qui contient des données pouvant contenir les caractères interdits en XML (", <, > et &). Le problème, c'est que cela ne fonctionne que pour 3 des 4 caractères cités, malgré des essais avec Xalan Java 2.7.0 et MX XSLT 4.0. Voici des fichiers exemples :
Fichier d'entrée :
ATTENTION : Dans le fichier en réalité, la dernière balise est en réalité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8"?> <rowSet> <row> <field name="ITEM_1" value="Moi & Toi" /> <field name="ITEM_2" value="Moi < Toi" /> <field name="ITEM_3" value="Moi > Toi" /> <field name="ITEM_4" value="Moi "sur" Toi" /> </row> </rowSet>
<field name="ITEM_4" value="Moi "sur" Toi" />
Fichier XSLT :
Fichier de sortie :
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 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" encoding="UTF-8" /> <xsl:template match="/rowSet"> <xsl:text disable-output-escaping="yes"><root></xsl:text> <xsl:apply-templates/> <xsl:text disable-output-escaping="yes"></root></xsl:text> </xsl:template> <xsl:template match="/rowSet/row"> <xsl:for-each select="./field"> <xsl:text disable-output-escaping="yes"><text></xsl:text> <xsl:value-of select="@value"/> <xsl:text disable-output-escaping="yes"></text></xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Là par contre, c'est bien fidèle au fichier obtenu en sortie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="UTF-8"?> <root> <text>Moi & Toi</text> <text>Moi < Toi</text> <text>Moi > Toi</text> <text>Moi "sur" Toi</text> </root>
Quelqu'un aurait une idée ?
Merci d'avance
Partager