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.