IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XMLRAD Discussion :

problème de chr(39)


Sujet :

XMLRAD

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    Par défaut
    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 \' ??

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <document>
      <Params>
        <Quote>'</Quote>
       </Params>
       ...
    </document>
    et dans le XSL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    Par défaut
    Je vais essayer d'être plus clair dans l'énoncé.
    J'ai une grappe dans mon output comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    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

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    Par défaut
    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.

  8. #8
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    ok je complète le test, ca fontionne pour moi:


    le XMLGram:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Params>
      <Quote>John\'s house</Quote>
    </Params>
    le XSL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    Par défaut
    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

  10. #10
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut

    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.

  11. #11
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 243
    Points : 192
    Points
    192
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème avec chr(35) #
    Par letal dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2014, 08h46
  2. [XL-2013] problème avec Chr(10)
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/12/2013, 11h25
  3. [XL-2003] Problème avec Chr(10)
    Par SuzyR dans le forum Conception
    Réponses: 2
    Dernier message: 13/03/2013, 12h37
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo