Announcement

Collapse
No announcement yet.

Problem bei der Summierung von Werten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei der Summierung von Werten

    Morgen zusammen!

    Hab ein kleines Problem und ich hoffe ihr könnt mir helfen!
    Meine Aufgabe ist es per XSLT eine gegebene XML Datei zu transformieren.
    So weit, so gut.
    Nun verzweifle ich an der Addition von verschiedenen Beträgen!

    Hier ein Beispiel meiner XML Struktur:
    Code:
    <a>
    	<b>
    		<wert>90,00</wert>
    	</b>
    	<b>
    		<wert>50,12</wert>
    	</b>
    	<b>
    		<wert>7,00</wert>
    	</b>
    	<b>
    		<wert>1.000,45</wert>
    	</b>
    	<b>
    		<wert></wert>
    	</b>
    </a>
    Meine Aufgabe ist es nun, diese Werte zu einem Wert zu addieren.
    Da ich nicht weiß wie viele "B" Knoten es gibt, hab ich versucht,
    den Wert per sum() zu berechnen.
    Dies scheitert aber am Format der Werte!

    Hoffe irgendjemand kann mir da helfen!!




    Gruß
    SHworking

  • #2
    Die sum()-Funktion kann nur auf Knotenmengen bzw. Sequenzen angewendet werden. Insofern wird für XSLT 1.0 ein rekursiv aufgerufenes Template benötigt, welches Punkte in Leerstrings ('') und danach Kommas in Punkte umwandelt und die numerischen Werte aufaddiert. Hier mal eine kompaktere Möglichkeit unter Verwendung von XSLT 2.0-Techniken:
    Code:
    <xsl:template match="a">  
      <xsl:value-of select="fn:sum(for $wert in //b/wert/text() return
        fn:number(fn:translate(fn:translate($wert,'.',''),',','.')))"/>
    </xsl:template>
    Ergebnis mit Saxon 9: 1147.5700000000002 [ggf. noch auf 1147.57 bringen mittels fn:round-half-to-even(gesamter_ausdruck,2)]
    Zuletzt editiert von Thomas Meinike; 11.11.2008, 12:30.

    Comment

    Working...
    X