2009-07-17 3 views
5

Предположим, у меня есть строка «2004,2005,2006,2007,2008,2009», которая назначается параметру «показать».Тест на значение внутри строки

Теперь это делает работу:

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

Это не работает:

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

Я не знаю, как проверить на части строки, как это. Есть идеи?

+0

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

ответ

19

Использование contains.

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

Более подробный пример, который будет печатать да.

<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

я следующее: ' ... ... ... 'и я проверяю его так:' '. Я продолжаю получать синтаксическую ошибку XPath. Не могли бы вы помочь? http://xsltransform.net/pPzifp5/1. Я хотел бы взять контент для каждого 'grp #' – Si8

2

Вам нужна функция contains() XPath. Вы можете использовать его как это:

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