![]() |
Bei xsl Summe für Gruppe ermitteln
Hallo,
ich sitze gerade vor dem Problem, Summen aus XML Basisdaten per XSL zu ermitteln. Grober Datenaufbau:
Delphi-Quellcode:
Ich wandeln das ganze nun per XSL in HTML um. Es klappt auch soweit alles, bis auf die Summenberechnung.
Produktliste
- Produkt Anzahl Einzelpreis - Unterprodukt Anzahl Einzelpreis - Unterprodukt Anzahl Einzelpreis - Produkt2 ... Wie kann ich pro Produkt den Gesamtpreis ausgeben (also Produkt-Anzahl x Produkt-Preis + Unterprodukt1-Anzahl * Unterprodukt1-Preis + etc.pp.)? Vielen Dank für Eure Hilfe. Gruß Assertor P.S.: Node-Set geht schonmal nicht, da ich nicht sicher weiß, ob MS XML oder Xalan am Zielort läuft... |
Re: Bei xsl Summe für Gruppe ermitteln
Hi,
*push* :wink: 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:
Das fehlende CalcSingleArticleTotalSum sieht dabei ähnlich aus, berücksichtigt jedoch zusätzlich die Unterprodukte.
<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> Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz