From: Florent Guiliani (fguiliani@perinfo.com)
Date: 28/11/2002 - 13:10
J'ai un problème avec Sablotron et l'attribut href d'une balise A en
html. j'ai un XSL qui contient ceci:
<a href="javascript:fonction('{BALISE}')">lien hypertexte connecté à un
javascipt</a>
Sablotron va encoder le contenu de l'attribut href en UTF-16 car
l'attribut href contient en temps normal une URI (URL est un
sous-ensemble de URI).
Le problème vient lorsque des accents apparaissent dans le contenu de la
balise BALISE. e accent aïgu est tranformé en %c3%a9.
Avec IE si vous appelez la fonction javascript decodeURI avec %c3%a9
vous retrouvez bien le e accent aïgu. Ou est le problème me direz-vous?
Lorsque IE recontre le lien <a href="javascript:fonction('%c3%a9')"> il
applique une méthode de décodage avant toute chose et appelle ensuite la
fonction javascript. Mais cette méthode de décodage, que je ne connais
pas, décode mal la chaine de caractères et retourne 2 caractères bidons
plutôt qu'un seul e accent aïgu.
J'ai déjà essayé de générer le lien <a
href="javascript:fonction(decodeURI('%c3%a9'))"> mais IE décode la
chaine avant toute chose, avant meme d'appeler decodeURI et du coup
decodeURI ne décode plus rien car la chaine qui est passé à decodeURI
n'est pas %c3%a9 mais une chaine composée des mêmes 2 caractères bidons.
La seule parade que j'ai trouvée ressemble à ca:
<script> tmp = '<xsl:value-of select="BALISE"/>'; </scipt>
<a href="javascript:fonction(tmp)">lien hypertexte</a>
Dans ce cas le contenu de la balise BALISE n'est pas encodé et la
fonction retrouve bien les accents mais ca m'oblige a être constament
vigileant et à écrire une ligne supplémentaire.
PS: le XSL qui génére tout ça comporte le paramètre
encoding="ISO-8859-1" à la fois dans la déclaration XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
et dans:
<xsl:output encoding='ISO-8859-1' method="html"/>
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.422 / Virus Database: 237 - Release Date: 20/11/2002
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|