Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: Bei xsl Summe für Gruppe ermitteln

  Alt 16. Jun 2009, 10:22
Hi,

*push*

Nein, war nur Spaß. Wollte sagen, ich hatte gestern gerade mal die Zeit und Muße mich wieder darum zu kümmern. Nun läuft es. String-Replace und Summen sind in XSLT 1.0 aber sehr unschön gelöst, immer rekursiv iterieren. Bei XSLT 2.0 oder mit Extensions wie EXSLT (z.B. bei libexslt) geht das schöner.

Beispiel für eine kleine Summenberechnung:
XML-Code:
<xsl:template name="CalcArticleTotalSum">
  <xsl:param name="node"/>
  <xsl:param name="sum"/>
  <xsl:param name="i"/>
  <xsl:param name="max"/>
  <xsl:choose>
    <xsl:when test="$i <= $max">
      <xsl:variable name="product">
        
        <xsl:call-template name="CalcSingleArticleTotalSum">
          <xsl:with-param name="node" select="$node/Article[$i]" />
        </xsl:call-template>
      </xsl:variable>
      
      <xsl:call-template name="CalcArticleTotalSum">
        <xsl:with-param name="node" select="$node"/>
        <xsl:with-param name="sum" select="$sum + $product"/>
        <xsl:with-param name="i" select="$i + 1"/>
        <xsl:with-param name="max" select="$max"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="format-number($sum,'#.##')"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
Das fehlende CalcSingleArticleTotalSum sieht dabei ähnlich aus, berücksichtigt jedoch zusätzlich die Unterprodukte.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat