juls_pro_37: XSLT 1.0 Sum

Beitrag lesen

Hätte folg. Ansatz, aber komm nicht zum gewünschten Ergebnis:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <xsl:key name="AllowanceOrCharge_Header_002" match="AllowanceOrCharge_Header_002" use="Code"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="AllowanceOrCharge_Header_002">
    <xsl:for-each select=".[generate-id() = generate-id(key('AllowanceOrCharge_Header_002', Code)[1])]">
      <AllowanceOrCharge_Header>
        <xsl:copy-of select="//AllowanceOrCharge_Header_002[1]/CalculationLevel"/>
        <xsl:copy-of select="//AllowanceOrCharge_Header_002[1]/Qualifier"/>
        <xsl:copy-of select="//AllowanceOrCharge_Header_002[1]/Code"/>
        <Amount>
            <xsl:value-of select="format-number(sum(//AllowanceOrCharge_Header_002/Amount), '#.00')"/>
        </Amount>
      </AllowanceOrCharge_Header>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

Weiter schaff ichs einfach nicht.

Falsches Ergebnis:

...


      <AllowanceOrCharge_Header>
         <CalculationLevel>1</CalculationLevel>
         <Qualifier>C</Qualifier>
         <Code>DI</Code>
         <Amount>973.98</Amount>
      </AllowanceOrCharge_Header>
      <AllowanceOrCharge_Header>
         <CalculationLevel>1</CalculationLevel>
         <Qualifier>C</Qualifier>
         <Code>DI</Code>
         <Amount>973.98</Amount>
      </AllowanceOrCharge_Header>




...

Die Summe wird nicht von den einzelnen "Codes" berechnet und mir wird auch nur ein "Code" anstatt beider ("DI" und "FI") ausgegeben.