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 :
<ulink url="documents\sans nom\020Чужди материали и закони\010Австрия\030Закон за административните наказания.doc">Закон за административните наказания</ulink>
L'ordre xsl de transformation :
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 :
<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 :
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
Partager