[Xslt] Extraire une sous-chaine

Résolu/Fermé
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 10 mai 2011 à 14:16
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 11 mai 2011 à 11:20
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 !



--
A voir également:

1 réponse

velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mai 2011 à 11:20
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