[Xslt] Extraire une sous-chaine

Résolu
velderama Messages postés 203 Statut Membre -  
velderama Messages postés 203 Statut Membre -
Bonjour a tous,

Ma question est comment récupérer une sous chaine contenue dans une phrase en Xslt?

j'ai une phrase comme ceci :
citation : Quand tu as un canon de revolver dans la bouche, il n'y a que les voyelles que tu peux prononcer.  Fight Club


j'essaie de récupérer dans une variable la sous-chaine "les voyelles que tu peux prononcer." en faisant :

<xsl:template name="tronqueur">
		<xsl:param name="maphrase" />

  <xsl:variable name="step" select="concat( substring-after(maphrase,'que  '), substring-before(maphrase,'Fight  ') )" />

  <!-- J'affiche ma variable... -->
  <xsl:value-of select="$step"/>

</xsl:template>


résultat :
 les voyelles que tu peux prononcer. Fight Club citation : Quand tu as un canon de revolver dans la bouche, il ny a que les voyelles que tu peux prononcer. 


Merci de votre aide !



--

1 réponse

  1. velderama Messages postés 203 Statut Membre 10
     
    J'ai trouvé UNE solution en utilisant les fonctions

    
    -substring-before(chaine,'le_mot_de_debut_de_la_souschaine') : retourne la sous-chaine "avant" le mot
    
    -string-length (chaine) : retourne la longueur de la chaine
    
    -substring(chaine_a_tronquer,debut,longueur) : retourne la sous_chaine comprise entre début et longueur
    


    ce qui donne avec la phrase :
    citation : Quand tu as un canon de revolver dans la bouche, il n'y a que les voyelles que tu peux prononcer. Fight Club


    <!-- Calcul de la position du debut de la sous-chaine commençant par "les"-->
    <xsl:variable name="debut" select="string-length(substring-before($maphrase,'les'))"/>
    
    <!-- Calcul de la position du debut de la sous-chaine commençant par "prononcer"-->
    <xsl:variable name="fin" select="string-length(substring-before($maphrase,'prononcer'))" />
    
    <!--Enfin on trouve la sous-chaine -->
    <xsl:variable name="resultat" select="substring($maphrase,$debut,( $fin - $debut) - 1)"/> 
    
    <!--J'affiche le résultat -->		 
    <xsl:value-of select="$resultat" /> 


    Attention en Xsl la première valeure commence par 1 et non par 0 comme dans beaucoup de langage (d'où le -1 à ( $fin - $debut) )

    A+
    0