🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fr.comp.text.xml
2 messages
2 total messages Started by nelsounet Mon, 13 Nov 2000 00:00
" et ' et " etc...
#10256
Author: nelsounet
Date: Mon, 13 Nov 2000 00:00
20 lines
1243 bytes
J'ai un objet javascript qui r�cup�re une string du xsl ;

object.addstring("<xsl:value-of select='....'>");

Le probl�me est que dans ma string, il y a des quotes ", et donc l'objet
croit y voir une fin de string...

J'ai tent� ceci :

object.addstring(translate('...','&#x22;','&quot;'));

javascript comprendra &quot; par " mais il n'y aura plus de conflit. Le
probl�me est que le parser persiste � vouloir remplacer &quot; par " dans le
r�sultat, alors que je veux garder &quot;

J'ai tout essay� (j'esp�re que non!), mais rien ne marche.

Merci pour votre aide.

Nelson
Re: " et ' et " etc...
#10257
Author: Tom.
Date: Mon, 13 Nov 2000 00:00
49 lines
2539 bytes
In article <1GVP5.2567$rL4.7899207@nnrp2.proxad.net>, "nelsounet"
<nelsounet@free.fr> wrote:
> J'ai un objet javascript qui r�cup�re une string du xsl ;
> 
> object.addstring("<xsl:value-of select='....'>");
> 
> Le probl�me est que dans ma string, il y a des quotes ", et donc
> l'objet croit y voir une fin de string...

Ca ne me semble pas r�alisable facilement avec les seules fonctions
XSLT.
Le probl�me est qu'il faut remplacer les " par plusieurs caract�res (\"
suffit pour JavaScript), et translate() ne le permet pas.

Solution : utiliser un template nomm� � appeler r�cursivement.
<xsl:template match="..." name="r�cursif">
  <xsl:param name="courant" select="string()"/>

  <xsl:choose>
    <xsl:when test="contains('&quot;', $courant)">
      <xsl:value-of select="string-before($courant, '&quot;')"/>
      <xsl:text>\"</xsl:text>
      <xsl:call-template name="r�cursif">
        <xsl:with-param name="courant"
                        select="string-after($courant, '&quot;')"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$courant"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

et tu l'appelles par :
  object.addstring("<xsl:apply-templates select="..."/>");

Explication :
par d�faut $courant vaut la valeur (string) du noeud "...".
Si la cha�ne contient un ", on affiche ce qui pr�c�de, on affiche \" et
on affiche ce qui suit, transform� par la m�me m�thode. On a donc bien
remplac� les " par des \".
Si la cha�ne ne contient pas de ", on l'affiche, tout simplement. Et
c'est la condition d'arr�t de la r�cursivit�.

N.B.: si tu veux avoir les caract�res &quot; dans le r�sultat, tu dois
�crire &amp;quot; (tu "�chappes le & en &amp; comme on �chappe le " en 
\" pour JavaScript) ou <![CDATA[&quot;]]> (ou encore <![CDATA[&]]>quot;)

Tom.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads