Я пытаюсь написать xsl для стилизации RSS-канала. Мне нужно обрезать первые 10 символов от названия каждого элемента.
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/rss"> <ul> <xsl:for-each select="channel/item"> <li><strong><xsl:value-of select="title"/> </strong> <a href="{link}">More</a></li> </xsl:for-each> </ul> </xsl:template> <xsl:template name="trimtitle"> <xsl:param name="string" select="." /> <xsl:if test="$string"> <xsl:text>Foo</xsl:text> <xsl:call-template name="trimtitle"> <xsl:with-param name="string" select="substring($string, 10)" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template match="title"> <xsl:call-template name="title" /> <xsl:value-of select="." /> </xsl:template> </xsl:stylesheet>
Что ты делаешь в своем шаблоне титров?Почему вы называете trimtitle recursive ..?
Самый простой способ показать обрезанную строку - это:
<xsl:value-of select="substring(title,0,10)"/>
Я думаю, вы должны написать свою функцию подстроки следующим образом:
подстрока ($ string, 1, 10)
Посмотрите здесь
http://www.zvon.org/xxl/XSLTreference/Output/function_substring.html