Announcement

Collapse
No announcement yet.

Hilfe bei XSL Summierung benötigt!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe bei XSL Summierung benötigt!

    Guten Abend! Bevor ich Euch mit meinen Fragen quäle, möchte ich mich ersteinmal vorstellen. Ich Bin Einsteiger in XML/XSLT und versuche mich seit einiger Zeit an dem folgenden Problem! Und zwar möchte (bzw. muss) ich die Summe aller Mengen (menge) für jede pguid bilden. Ich habe bestimmte zur Grundlage ein XML Dokument mit beliebig vielen Lines und verschiedene pguids. Das Problem ist, dass es mehrere Lines geben kann in der die pguid vorkommt, welche dann das Kriterium für die Summierung ist!

    Probiert habe ich bisher den folgenden Code um die Summe zu bilden! Doch leider funktioniert das nicht! Für jeden Eintrag "Sped" (das entsprechende "for each statement" habe ich hier nicht aufgeführt) wird immer nur die erste menge ausgelesen und angezeigt!

    Code:
    <xsl:variable name="mengex" select="sum($root/auftrag/lfs/table/line[current()/@pguid=pguid]/menge)"/>
    Mein XML Doc:

    Code:
    <lfs id="025c1e69c00bb240ac9a5458372da75e"> 
    - <table> 
       - <line id="0"> 
           <menge>0.0153846153846</menge> 
           <pguid>010C5477001807BC3717000000000000</pguid> 
         </line> 
       - <line id="1"> 
           <menge>0.0153846153846</menge> 
           <pguid>010C5477001B0BB81E13000000000000</pguid> 
       </line> 
       - <line id="2">
          <menge>0.0153846153846</menge> 
          <pguid>010C5477001E0A14D30F000000000000</pguid> 
        </line> 
    </table> 
    </lfs> 
    - <lfs id="039b983aba515f4fa2adc8a0687d4072"> 
    - <table> 
       - <line id="0">
           <menge>27.36</menge> 
           <pguid>010C5084000A04741819000000000000</pguid>
        </line> 
    </table> 
    </lfs> 
     - <lfs id="04b99066ecea4044b6c4d7d2f0be10f5"> 
    - <table> 
        - <line id="0"> 
            <menge>33.1938461538</menge> 
            <pguid>010C5476003406905018000000000000</pguid>
       </line> 
      - <line id="1">
            <menge>18.4615384615</menge> 
            <pguid>010C5477000F0A8CE212000000000000</pguid> 
       </line> 
    </table> 
    </lfs> 
    Könnt Ihr mir eventuell weiterhelfen bei der Summierung der Menge nach den einzelnen pguids? Ich wäre Euch wahnsinnig dankbar, da ich mir daran die Zähne ausbeisse! Gruss, Sebastian

  • #2
    Für das gepostete Codefragment funktioniert dieser Ansatz, wobei alle pguid-Inhalte unterschiedlich sind, also eine Summierung hier nur die menge-Einzelwerte liefert. Kernstück ist die Gruppierung mittels xsl:key:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" version="4.01" encoding="ISO-8859-1" indent="yes"/>
    
      <xsl:key name="groupby" match="line" use="pguid"/>
    
      <xsl:template match="/">
    
        <html>
          <head>
            <title>Test</title>
          </head>
          <body>
            <table border="1">
              <thead>
                <tr>
                  <th>pguid</th>
                  <th>Summe</th>
                </tr>
              </thead>
              <tbody>
                <xsl:for-each select="//line[generate-id()=generate-id(key('groupby',pguid)[1])]">
                  <xsl:variable name="pguid" select="pguid"/>
                  <tr>
                    <td>
                      <xsl:value-of select="$pguid"/>
                    </td>
                    <td>
                      <xsl:value-of select="sum(//line[pguid=$pguid]/menge)"/>
                    </td>
                  </tr>
                </xsl:for-each>
              </tbody>
            </table>
          </body>
        </html>
    
      </xsl:template>
    
    </xsl:stylesheet>
    Hinweis: Bitte künftig direkt das XSLT-Forum nutzen.

    Comment


    • #3
      @ Thomas!

      Danke schön für Dein Feedback! Ich habe es getestet und es ist nicht ganz was ich benötige, da mein xml Dokument noch etwas verstrikter aufgebaut ist! Habe nun den Aufbau des XML Dokuments verändert und summiere bereits dort alle mengen nach pguid! Klappt eigentlich auch ganz gut!

      Eine Frage noch am Rande: Gibt es irgendeinen Editor der einem visuell bei der Erstellung eines XML Files mit Tcl hilft? Habe schon eine Menge Zeit für's suchen investiert, konnte allerdings nichts finden!

      PS: Nächste mal poste ich direkt ins XSLT Forum!

      Comment

      Working...
      X