Summe bilden!
ssiedlerin268
- xsl
Hallo an alle!
Ich hatte bereits gestern zum Thema Gruppierung geschrieben. Allerdings habe ich noch ein weiteres Problem bzgl. der Bildung von Summen ...meine XML-Datei ist ja folgende:
<doc>
<Daten>
<Zeile>
<Feld tabelle="N" DecPos="0" Digits="1" Name="KZ DEB/KRED." Type="A">K</Feld>
<Feld tabelle="N" DecPos="0" Digits="9" Name="PERS.KONTENNUMMER" Type="S">12345</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SOLL" Type="S">100</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="HABEN" Type="S">200</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SALDO" Type="S">300</Feld>
</Zeile>
<Zeile>
<Zeile>
<Feld tabelle="N" DecPos="0" Digits="1" Name="KZ DEB/KRED." Type="A">K</Feld>
<Feld tabelle="N" DecPos="0" Digits="9" Name="PERS.KONTENNUMMER" Type="S">12345</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SOLL" Type="S">100</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="HABEN" Type="S">200</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SALDO" Type="S">300</Feld>
</Zeile>
<Zeile>
<Feld tabelle="N" DecPos="0" Digits="1" Name="KZ DEB/KRED." Type="A">D</Feld>
<Feld tabelle="N" DecPos="0" Digits="9" Name="PERS.KONTENNUMMER" Type="S">12345</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SOLL" Type="S">100</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="HABEN" Type="S">300</Feld>
<Feld tabelle="J" DecPos="2" Digits="13" Name="SALDO" Type="S">300</Feld>
</Zeile>
<Zeile>
....
</Zeile>
</Daten>
</doc>
Nun möchte ich eine Summe über den Wert im Tag 'Haben' bilden unter der Bedingung, dass die 'PERS.KONTENNUMMER' dieser Zeilen die gleiche ist und im Tag 'KZ DEB/KRED.' ein 'K' steht. Sprich, ich würde also für die 'PERS.KONTENNUMMER' 12345 den Wert 400 rausbekommen!
Jemand einen Vorschlag?
Meine bisherige XSL-Datei:
<?xml version="1.0"?>
.....
<xsl:template match="Daten">
<xsl:for-each select="Zeile[Feld='K'][generate-id(.)=generate-id(key('groupby',Feld[@Name='PERS.KONTENNUMMER'])[1])]">
<w:p>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="1500"/>
<w:tab w:val="left" w:pos="10250"/>
<w:tab w:val="left" w:pos="11250"/>
<w:tab w:val="left" w:pos="12300"/>
</w:tabs>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="16"/>
</w:rPr>
<w:t><xsl:value-of select="Feld[@Name='KZ DEB/KRED.']"/>xsl:text </xsl:text><xsl:value-of select="Feld[@Name='PERS.KONTENNUMMER']"/></w:t>
<w:tab/>
<w:t> - <xsl:value-of select="Feld[@Name='NAME 1']"/>xsl:text </xsl:text><xsl:value-of select="Feld[@Name='NAME 2']"/>xsl:text </xsl:text><xsl:value-of select="Feld[@Name='PLZ']"/>xsl:text </xsl:text><xsl:value-of select="Feld[@Name='ORT']"/></w:t>
<w:tab/>
<w:t>Vertreter :</w:t>
<w:tab/><w:tab/>
<w:t>2 Zielgruppe:</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="3000"/>
<w:tab w:val="left" w:pos="6000"/>
</w:tabs>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="16"/>
</w:rPr>
<w:t>Ansprechpartner:</w:t>
<w:tab/>
<w:t>Telefon: </w:t>
<w:tab/><w:tab/>
<w:t>Telefax:</w:t>
</w:r>
</w:p>
<xsl:for-each select="key('groupby',Feld[@Name='PERS.KONTENNUMMER'])">
<w:p>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="1500"/>
<w:tab w:val="left" w:pos="2750"/>
<w:tab w:val="left" w:pos="4000"/>
</w:tabs>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="16"/>
</w:rPr>
<xsl:for-each select="Feld[@tabelle='J']">
<w:t><xsl:value-of select="."/></w:t><w:tab/>
</xsl:for-each>
</w:r>
</w:p></xsl:for-each>
<w:p>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="1500"/>
<w:tab w:val="left" w:pos="2750"/>
</w:tabs>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="16"/>
</w:rPr>
<w:tab/>
<w:tab/>
<w:t>HIER SOLL DIE SUMME STEHEN</w:t>
<w:tab/>
<w:t>-722,00</w:t>
<w:tab/>
<w:t>0,00</w:t>
<w:tab/>
<w:t>* Saldo Personenkontoxsl:text </xsl:text><xsl:value-of select="Feld[@Name='PERS.KONTENNUMMER']"/></w:t>
<w:br/>
</w:r>
</w:p>
</xsl:for-each> <!--hier w:p -->
<w:p>
<w:pPr>
<w:tabs>
<w:tab w:val="left" w:pos="1500"/>
<w:tab w:val="left" w:pos="2750"/>
</w:tabs>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="16"/>
<w:sz-cs w:val="16"/>
</w:rPr>
<w:tab/>
<w:tab/>
<w:t>722,00</w:t><w:tab/>
<w:t>-722,00</w:t><w:tab/>
<w:t>0,00</w:t>
<w:tab/>
<w:t>** Saldo Sammelkonto <xsl:value-of select="Zeile/Feld[@Name='SAMMELKONTO']"/></w:t>
</w:r>
</w:p>
</xsl:template>
</xsl:stylesheet>
Liebe Grüße, Janin
Hallo,
Meine bisherige XSL-Datei:
<xsl:template match="Daten">
<xsl:for-each select="Zeile[Feld='K'][generate-id(.)=generate-id(key('groupby',Feld[@Name='PERS.KONTENNUMMER'])[1])]">
<xsl:variable name="sum" select="sum(key('groupby',Feld[@Name='PERS.KONTENNUMMER'])[Feld='K']/Feld[@Name = 'HABEN'])" />
<w:tab/> <w:t>HIER SOLL DIE SUMME STEHEN</w:t>
<xsl:value-of select="$sum" />
<w:tab/>
Grüße
Thomas
Ich bin begeistert ...ich danke dir :)