Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.27.232] |
|
Сообщ.
#1
,
|
|
|
Есть xml файл следующего содержания:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="sum.xsl"?> <sum> <item>1</item> <item>2</item> <item>3</item> </sum> Надо написать xsl файл, который бы преобразовывал его в следующий: 1 + 2 + 3 = 6 Тоесть просто считал сумму. Но нельзя использовать функцию sum() из XPath. Чето никак не придумаю как сделать. Пытаюсь в переменную забодяжить, а она пишет нельзя два раза обьявлять переменную. Заранее спасибо. |
Сообщ.
#2
,
|
|
|
Все, разобрался:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:call-template name="itm"> <xsl:with-param name="sum" select="0"/> <xsl:with-param name="count" select="1"/> <xsl:with-param name="max_count" select="count(sum/item)"/> </xsl:call-template> </xsl:template> <xsl:template name="itm"> <xsl:param name="sum"/> <xsl:param name="count"/> <xsl:param name="max_count"/> <xsl:choose> <xsl:when test="$count < $max_count + 1"> <xsl:value-of select="sum/item[$count]"/> <xsl:if test="$count < $max_count"> + </xsl:if> <xsl:call-template name="itm"> <xsl:with-param name="sum" select="$sum + sum/item[$count]"/> <xsl:with-param name="count" select="$count + 1"/> <xsl:with-param name="max_count" select="$max_count"/> </xsl:call-template> </xsl:when> <xsl:otherwise> = <xsl:value-of select="$sum"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:transform> |