ssiedlerin268: Summe bilden!

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

  1. 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

    1. Ich bin begeistert ...ich danke dir :)