2013-12-17 6 views
2

У меня есть следующие входныеКак получить последний символ строки в XSLT

<items> 
    <item id="1" name="aaa" old_level="5,4,3,2,1" new_level="5,4,3,2,1,0"/> 
    <item id="2" name="bbb" old_level="3,2,1" new_level="3,2,1"/> 
    <item id="3" name="ccc" old_level="4,3,2" new_level="4,3,2"/> 
</items> 

Мне нужно проверить, является ли последний символ из NEW_LEVEL равен нулю или нет. Как я могу сделать это с помощью xslt?

ответ

6

Если у вас есть XSLT/XPath 2.0, вы можете использовать XPath, как это (или адаптировать для конкретной потребности):

//item[ends-with(@new_level,'0')] 

Если у вас есть только XSLT/XPath 1.0, вы могли бы сделать что-то вроде:

<xsl:template match="item"> 
    <xsl:variable name="length" select="string-length(@new_level)"/> 
    <xsl:if test="substring(@new_level,$length) = '0'"> 
     <!-- do something --> 
    </xsl:if> 
</xsl:template> 
+0

@Martin только из интереса мой первый ответ 2.0 менее надежный, чем ваш (я поддержал ваши :) – smj

+0

спасибо, что ваше предложение 1.0 работает, к сожалению, у меня нет 2.0 – Ogbechi

+0

Нет проблем, рад, что он работает для вас , – smj

2

С XSLT 2.0 легко: <xsl:template match="item[tokenize(@new_level, ',')[last()] eq '0']">..</xsl:template>.

Смежные вопросы