SteffenW: Summe mit Vergleich von Elementen im Knoten

Beitrag lesen

Hallo,

folgendes Problem, meine XML Datei besteht aus einem Artikelstamm und der Bestellinformation eines Kunden. Ich will einfach nur eine Übersicht wieviele Einheiten er schon für jedes Produkt bestellt hat:

  
<report>  
 <tables>  
  <table prefix="AR">  
   <ItemNo.>21144001</ItemNo.>  
   <ItemDescription>Tisch A</ItemDescription>  
  </table>  
  <table prefix="AR">  
   <ItemNo.>3253813</ItemNo.>  
   <ItemDescription>Stuhl B</ItemDescription>  
  </table>  
<!-- usw. mehrere Artikel folgen noch-->  
  
  <table prefix="KP">  
   <LastName>Mustermann</LastName>  
   <FirstName>Max</FirstName>  
   <tables>  
    <table prefix="BE">  
      <date>1.1.2010</date>  
      <ItemNo.>21144001</ItemNo.>  
      <ItemDescription>Tisch A</ItemDescription>  
      <Order>1</Order>  
    </table>  
    <table prefix="BE">  
      <date>2.1.2010</date>  
      <ItemNo.>21144001</ItemNo.>  
      <ItemDescription>Tisch A</ItemDescription>  
      <Order>1</Order>  
    </table>  
   </tables>  
  </table>  
 </tables>  
</report>  

Was ich nun probiert habe funktioniert natürlich nicht:

  
<xsl:stylesheet...>  
  
<xsl:for-each select="report/tables/table[@tableshort = 'AR']>  
 <tr>  
 <xsl:variable name="artikelnr" select="ItemNo."/>  
  <td width="250px">  
   <xsl:value-of select="ItemDescription"/>  
  </td>  
  <td width="40px">  
   <xsl:value-of select="$artikelnr"/>  
  </td>  
  <td>  
   <xsl:for-each select="/report/tables/table[@prefix='KP']/tables">  
    <xsl:if test="table/ItemNo. = $artikelnr">  
     <xsl:value-of select="sum(table[@prefix='BE']/Order)"/>  
    </xsl:if>  
   </xsl:for-each>  
  </td>  
 </tr>  
  
  
  
</xsl:stylesheet>  

Damit summiert er mir dummerweise nur alle Gesamtbestellungen für jeden Artikel den es gibt - macht er ja richtig :).. nur ist es nicht das, was ich suche.
Ich hab irgendwas von xsl:key und generate-id() gelesen - wäre das für mein Beispiel die Lösung?

Steffen