[XSL] Transformation xsl et jeu de caractères cyrillique
Bonjour,
Dans le cadre d'un partenariat franco-bulgare, je suis en train de développer un outil qui fait une transformation xsl pour générer du HTML... avec du texte en cyrillique dedans.
Dans le fichier XML d'origine pas de souci, le cyrillique passe très bien (<?xml version="1.0" encoding="UTF-8"?>)
Par contre dans le fichier HTML résultant de la transformation, certains caractères cyrilliques sont transformés en %D0%BC%D0%B0%D1%82 et autres joyeusetés.
Je dis certains car seuls les URL de liens (l'attribut href de <a> dans le fichier résultat) sont concernés par ce problème.
Un extrait des données XML d'origine :
Code:
<ulink url="documents\sans nom\020Чужди материали и закони\010Австрия\030Закон за административните наказания.doc">Закон за административните наказания</ulink>
L'ordre xsl de transformation :
Code:
1 2 3 4 5
| <xsl:template match="ulink" mode="restit">
<img height="5" src="images/bt-cr22.png" width="5" border="0"/>
<a href="{@url}" target="_blank"><xsl:value-of select="text()"/></a>
<br/>
</xsl:template> |
Le résultat en HTML :
Code:
<a href="documents\sans nom\020%D0%A7%D1%83%D0%B6%D0%B4%D0%B8 ...D1%8F.doc" target="_blank">Закон за административните наказания</a>
Comme vous pouvez le voir, le "{@url}" a transformé les caractères cyrilliques en quelque chose de plus hiéroglyphique... Du coup les liens ne marchent pas du tout même si ce qui est affiché à l'écran est bon.
Je précise que le xslt est censé retourner de l'utf-8 (<xsl:output method="html" encoding="utf-8"/>).
Ce qui semble se confirmer dans le fichier html :
Code:
1 2 3
| <html xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8"> |
Si quelqu'un pouvait éclairer ma lanterne sur cette transformation XSLT quelque peu bancale, ce serait avec plaisir ;)
transformation cyrillique
As-tu essayé avec le code ISO (ISO 8859-5) plutôt que avec UTF-8... J'ai déjà eu ce genre de problème que certains serveurs ou browsers reconnaissent le code ISO mais pas UTF-8