Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2004, 17h12   #1
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Par défaut problème de chr(39)

bonjour,
je génère une série d'éléments et pour chacun je génère un evt onclick qui met à jour un <input text>.
Jusque là tout va bien, le pb arrive lorsque la valeur en question contient une apostrophe (&apos; ou chr(39)).
Code :
E.value = '<xsl:value-of select="Valeur"/>';
J'obtiens un message d'erreur comme quoi il manque un ";", ce qui est normal. Avez-vous des idées pour corriger ce genre de problème ?

Par avance merci
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2004, 23h16   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
il faut, je pense, utiliser le caractère d'échappement (\) devant l'apostrophe pour pas qu'elle soit interprétée comme une fin de chaîne:
E.value ='\'';
donc je pense qu'il faut tester en xsl si la valeur est un apostrophe et donc rajouter le backslash.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2004, 09h01   #3
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Merci pour ta réponse. Ca marche presque ! Je n'ai plus de message d'erreur mais j'ai \' dans ma chaîne.
Pour être plus précis, je suis en train d'écrire un composant xsl pour remplacer la combobox classique (select en html), histoire d'avoir un style plus web.
Pour chaque ligne de ma combo, je déclare un attibut onclick qui a pour effet de mettre le contenu choisi dans la partie haute de la combo. C'est là qu'intervient mon E.value = '<xsl:value-of select="XX"/>'
Des idées pour conserver ' sans erreur et sans avoir \' ??
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2004, 19h15   #4
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
je suis pas sur d'avoir tout compris à ton problème.
En tous les cas voici un petit exemple de ce que j'ai pu comprendre et qui fonctionne:

j'ai dans mon OutputDoc:

Code :
1
2
3
4
5
6
7
 
<document>
  <Params>
    <Quote>'</Quote>
   </Params>
   ...
</document>
et dans le XSL:

Code :
1
2
3
4
<form action="" name="MainForm">
	<input type="text" name="E"/>
</form>
<a href="." onclick="MainForm.E.value = '\{/document/Params/Quote}'; return false;">click</a>
quand je click sur le lien j'ai bien un ' qui s'affiche dans mon input.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2004, 09h08   #5
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Je vais essayer d'être plus clair dans l'énoncé.
J'ai une grappe dans mon output comme suit :
Code :
1
2
3
4
5
6
7
8
9
 
<EMBALLAGES>
     <EMBALLAGE>
          <LIBELLE>en sac</LIBELLE>
     </EMBALLAGE>
     <EMBALLAGE>
          <LIBELLE>Styro's à 100 trous (p.p.pièce)</LIBELLE>
     </EMBALLAGE>
</EMBALLAGES>
Dans mon composant, je fais
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<xsl:for-each..>
    <xsl:variable name="Valeur">
        <!-- ... différentes conditions ... -->
        <xsl:value-of select="."/>
    </xsl:variable>
    <li ...>
        <a>
             <xsl:attribute name="onclick">
                  SetField('MainForm', '<xsl:value-of select="$FieldToFill"/>', '<xsl:value-of select="$Valeur" />');
             </xsl:attribute>
             <xsl:value-of select="$Valeur" />
        </a>
    </li>
<xsl:for-each..>
C'est dans la partie du onclick que les messages d'erreur apparaissent.
Merci d'avance
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2004, 19h49   #6
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
ok je vois.
la quote (') se trouve en plein milieu d'un texte.
je pense qu'au moment de l'ajout dans l'OutputDoc il faut passer la chaine au crible pour remplacer les ' par \'
par exemple avec un TranslateStrToStr
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2004, 09h10   #7
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
En fait je l'avais fait à la suite de ta première réponse, en utilisant stringreplace. J'obtiens la même chose avec translatestrtostr à savoir plus d'erreur javascript, mais \' dasn ma chaîne au lieu d'une quote simple.
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2004, 10h41   #8
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
ok je complète le test, ca fontionne pour moi:


le XMLGram:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<Assign Name="Params">
  <Fields>
    <Field>
      <ID/>
      <Destination>OUTPUT</Destination>
      <Name>Quote</Name>
      <Source>CONTEXT</Source>
      <SourceField/>
      <Value>John\'s house</Value>
    </Field>
  </Fields>
</Assign>
le OutputDoc:

Code :
1
2
3
<Params>
  <Quote>John\'s house</Quote>
</Params>
le XSL:

Code :
1
2
3
4
5
6
7
8
<xsl:variable name="FieldToFill">E</xsl:variable>
<xsl:variable name="Valeur" select="/document/Params/Quote"/>
<form action="" name="MainForm">
<input type="text" name="E"/>
</form>
<a href=".">
<xsl:attribute name="onclick">
                  SetField('MainForm', '<xsl:value-of select="$FieldToFill"/>', '<xsl:value-of select="$Valeur"/>'); return false;</xsl:attribute> click</a>
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2004, 10h54   #9
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
Je suis bien d'accord avec toi, la partie javascript fonctionne (il n'y a plus d'erreur)
Mon problème réside dans le fait que l'affichage de la valeur (<xsl:value-of select="$Valeur"/>) me retourne John\'s house
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2004, 11h15   #10
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM

j'ai toujours du mal à comprendre ton problème là.
dans mon exemple avec le texte contenant l'echapement, il s'affiche donc bien dans mon input puisque le javascript réinterprète la chaine enant du xsl:value-of.
de quoi as-tu besoin ?
d'une valeur sans \' et donc en dehors d'une chaine javascript ou les 2 ? dans ce cas il te faut 2 données XML avec ett sans caractère d'échapement.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2004, 11h39   #11
Membre habitué
 
Inscription : novembre 2002
Messages : 243
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 243
Points : 149
Points : 149
J'ai effectivement résolu le problème en ayant 2 valeurs (une pour l'affichage et l'autre pour le javascript). Ca fonctionne très bien maintenant.
Un grand merci pour ton aide
Pierre FORAZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h45.


 
 
 
 
Partenaires

Hébergement Web