На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL
  
> Написать XSL , чтоб считал сумму
    Есть xml файл следующего содержания:
    ExpandedWrap disabled
      <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="sum.xsl"?>
      <sum>
          <item>1</item>
          <item>2</item>
          <item>3</item>
      </sum>


    Надо написать xsl файл, который бы преобразовывал его в следующий:
    ExpandedWrap disabled
      1 + 2 + 3 = 6


    Тоесть просто считал сумму. Но нельзя использовать функцию sum() из XPath.

    Чето никак не придумаю как сделать. Пытаюсь в переменную забодяжить, а она пишет нельзя два раза обьявлять переменную.
    Заранее спасибо. :)
      Все, разобрался:
      ExpandedWrap disabled
        <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>
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0191 ]   [ 15 queries used ]   [ Generated: 28.04.24, 05:12 GMT ]