[XSL] Conservation des guillemets après transformation XSL
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 :
Code:
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> |
ATTENTION : Dans le fichier en réalité, la dernière balise est en réalité :
<field name="ITEM_4" value="Moi "sur" Toi" />
Fichier XSLT :
Code:
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> |
Fichier de sortie :
Code:
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> |
Là par contre, c'est bien fidèle au fichier obtenu en sortie.
Quelqu'un aurait une idée ?
Merci d'avance