Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1453 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [Résolu] Remplacement d'une chaine par <BR/>

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Remplacement d'une chaine par <BR/>

n°1526248
moldar
Eleveur de saltices
Posté le 09-03-2007 à 10:47:06  profilanswer
 

Bonjour !
 
Alors voilà mon soucis : j'ai une chaine de caractères 'bonjour, toto a un gros problème" qui contient une chaine 'toto', chaine que je voudrais remplacer par <br/> et qui serait interprétée comme un retour chariot.
 
Ma fonction :

Code :
  1. <xsl:template name="replace-string">
  2.     <xsl:param name="text"/>
  3.     <xsl:param name="from"/>
  4.     <xsl:param name="to"/>
  5.     <xsl:choose>
  6.       <xsl:when test="contains($text, $from)">
  7. <xsl:variable name="before" select="substring-before($text, $from)"/>
  8. <xsl:variable name="after" select="substring-after($text, $from)"/>
  9. <xsl:variable name="prefix" select="concat($before, $to)"/>
  10. <xsl:value-of select="$before"/>
  11. <xsl:value-of select="$to"/>
  12.         <xsl:call-template name="replace-string">
  13.   <xsl:with-param name="text" select="$after"/>
  14.   <xsl:with-param name="from" select="$from"/>
  15.   <xsl:with-param name="to" select="$to"/>
  16. </xsl:call-template>
  17.       </xsl:when>
  18.       <xsl:otherwise>
  19.         <xsl:value-of select="$text"/> 
  20.       </xsl:otherwise>
  21.     </xsl:choose>           
  22. </xsl:template>


 
L'appel de la fonction :
 

Code :
  1. <xsl:call-template name="replace-string">
  2.   <xsl:with-param name="text" select="MACHAINE"/>
  3.   <xsl:with-param name="from" select="'toto'"/>
  4.   <xsl:with-param name="to" select="&lt;BR&gt;"/>
  5.   </xsl:call-template>


 
Et enfin le résultat affiché :  
 

Code :
  1. bonjour, <BR/> a un gros problème


 
Donc le <BR/> n'est pas interprété !
Pourriez-vous me donner un coup de main ?
 
Merci !
 
EDIT : j'ai tenté de remplacer &lt;BR&gt; par &#10; mais sans succès


Message édité par moldar le 12-03-2007 à 11:42:04
mood
Publicité
Posté le 09-03-2007 à 10:47:06  profilanswer
 

n°1526769
rx__
Paint It Black
Posté le 10-03-2007 à 13:05:22  profilanswer
 

Il faut utiliser <xsl:element name="br" /> pour créer un élément "dynamique".

n°1527070
avander
Posté le 11-03-2007 à 16:38:05  profilanswer
 

Pas très clair ce que tu veux...
<br /> c'est un retour chariot... en html.  
 
Si tu génère du texte il faut si prendre autrement. Par exemple à l'aide de <xsl:text>.
Normalement pour obtenir un retour à la ligne j'utilise:


       <xsl:text>
</xsl:text>


 
Note qu'il faut absolument passer à la ligne après l'ouverture de la balise.


Message édité par avander le 11-03-2007 à 16:40:58
n°1527192
moldar
Eleveur de saltices
Posté le 12-03-2007 à 09:44:07  profilanswer
 

rx___ > marche po :(
avander > alors je réexplique :D
 
Mon fichier XML :
 
<BALISE>bonjour, toto a un gros problème</BALISE>
 
Je veux dans mon fichier HTML :  
 
bonjour,
a un gros problème
 
Comment dois-je faire (sachant qu'il y a plusieurs occurrence de 'toto' dans la balise <BALISE> )?

Message cité 1 fois
Message édité par moldar le 12-03-2007 à 09:44:52
n°1527276
moldar
Eleveur de saltices
Posté le 12-03-2007 à 11:41:52  profilanswer
 

Ayé j'ai trouvé :D
 

Code :
  1. <xsl:template name="convertCrToBr">
  2.     <xsl:param name="string" select="''"/>
  3.     <xsl:choose>
  4.       <xsl:when test="contains($string,'toto')">
  5.         <xsl:value-of select="substring-before($string,'toto')"/>
  6.         <br/>
  7.         <xsl:call-template name="convertCrToBr">
  8.           <xsl:with-param name="string" select="substring-after($string,'toto')"/>
  9.         </xsl:call-template>
  10.       </xsl:when>
  11.       <xsl:otherwise>
  12.         <xsl:value-of select="$string"/>
  13.       </xsl:otherwise>
  14.     </xsl:choose>
  15.   </xsl:template>


 
Merci pour votre aide.

n°1527546
rx__
Paint It Black
Posté le 12-03-2007 à 19:41:43  profilanswer
 

moldar a écrit :

rx___ > marche po :(


Curieux ça... (mais j'ai la flemme d'essayer :sleep:)
 
En fait au départ j'avais mal regardé ta stylesheet, je croyais que voulais pouvoir choisir dynamiquement le tag que tu mettais. Mais si tu sais que c'est <br/>, le mettre tel quel est effectivement la bonne méthode. Le processeur xslt copie en effet simplement les éléments qui n'appartiennent pas au namespace http://www.w3.org/1999/XSL/Transform (qui correspond ici au préfix xsl).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [Résolu] Remplacement d'une chaine par <BR/>

 

Sujets relatifs
[résolu] pbm session[Résolu] .htaccess chez Free...
warnings: listes chainée [résolu][Batch] Comment lire la 7e ligne d'un fichier ? [Résolu]
[Résolu] Connexion à une base de données mySQL via ODBC[résolu] C++: double : limitation à 15 digits - comment aller au dela?
passage d'une fonction comme argument pour une autre fonction (Résolu)[RESOLU] [SQL] Utilisation de champs dans un case CASE
[resolu][php/html] recevoir les info d'un formulaire par mail[JS] Exécuter une fonction à partir de son nom en variable chaîne
Plus de sujets relatifs à : [Résolu] Remplacement d'une chaine par <BR/>


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR