2009-07-17 8 views
5

Supposons que la chaîne "2004,2005,2006,2007,2008,2009" soit affectée au paramètre "show".Test d'une valeur dans une chaîne

Maintenant, cela fonctionne:

<xsl:if test="$show='2004'"> 
    //stuff 
</xsl:if> 

Cela ne fonctionne pas:

<xsl:if test="$show='2005'"> 
    //stuff 
</xsl:if> 

Je ne sais pas comment tester pour une partie d'une chaîne comme ça. Une idée?

+0

Dup de http://stackoverflow.com/questions/569908/is-there-an-xsl-contains-directive – Vadzim

Répondre

19

Utilisez contains.

<xsl:if test="contains($show, '2004')"> 
    //stuff 
</xsl:if> 

Un exemple plus détaillé, qui imprimera oui.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:variable name="show" select="'2004,2005,2006,2007,2008,2009'"/> 
     <xsl:if test="contains($show, '2004')">yes</xsl:if> 
     <xsl:if test="not(contains($show, '2004'))">no</xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 
+0

je ce qui suit: ... ... ... 'et je le vérifie comme ceci:' '. Je continue à obtenir l'erreur de syntaxe XPath. Peux-tu aider s'il te plait? http://xsltransform.net/pPzifp5/1. Je voudrais prendre le contenu pour chaque 'grp #' – Si8

2

Vous avez besoin de la fonction XPath contains(). Vous pouvez l'utiliser comme ceci:

<xsl:if test="contains($show,'2005')"> 
    //stuff 
</xsl:if> 
Questions connexes