AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Bei xsl Summe für Gruppe ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Bei xsl Summe für Gruppe ermitteln

Ein Thema von Assertor · begonnen am 16. Feb 2008 · letzter Beitrag vom 16. Jun 2009
Antwort Antwort
Assertor

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

Bei xsl Summe für Gruppe ermitteln

  Alt 16. Feb 2008, 23:13
Hallo,

ich sitze gerade vor dem Problem, Summen aus XML Basisdaten per XSL zu ermitteln.

Grober Datenaufbau:

Delphi-Quellcode:
Produktliste
- Produkt
  Anzahl
  Einzelpreis
  - Unterprodukt
    Anzahl
    Einzelpreis
  - Unterprodukt
    Anzahl
    Einzelpreis
- Produkt2 ...
Ich wandeln das ganze nun per XSL in HTML um. Es klappt auch soweit alles, bis auf die Summenberechnung.

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...
Frederik
  Mit Zitat antworten Zitat
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, 11: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz