Johnny: Nach Summe sortieren

Hallo,

ich hoffe mir kann jemand helfen
(tüfftel schon ne ganze Weile daran herum)

Ziel ist es einfach nach einer Summe von Bytes zu sortieren:

XML-Datei schaut so aus:
(DZ sind Datenzeilen mit DFÜ-Partnern und Bytes)

<?xml version ='1.0' encoding='ISO-8859-1'?>
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
<MONATS_STATISTIK>
<DZ><PA>Bank1</PA><BYTE>00001000</BYTE></DZ>
<DZ><PA>Bank2</PA><BYTE>00002048</BYTE></DZ>
<DZ><PA>Bank3</PA><BYTE>00001024</BYTE></DZ>
<DZ><PA>Bank1</PA><BYTE>00001000</BYTE></DZ>
<DZ><PA>Bank2</PA><BYTE>00002048</BYTE></DZ>
</MONATS_STATISTIK>

XSL-Datei:
(nicht verwirren lassen,
habe gleich alles hier reinkopiert für Copy/Paste,
ist nicht so viel)

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="MONATS_STATISTIK">

<html>
<head>
  <title>Statistik Test</title>
</head>

<body bgcolor="#808080" link="#FF9966" vlink="#FF9966" alink="#FFFFFF">

<div align="center">
<table>
<tr>
  <td><b>DFÜ-Partner</b></td>
  <td width="20"/>
  <td align="right"><b>BYTE</b></td>
</tr>
<xsl:for-each select="//DZ">
<xsl:sort select="BYTE" order="descending"/>
  <xsl:for-each select="PA[not(.=following::PA)]">
    <tr>
      <xsl:variable name="aktueller_PA" select="."/>
      <td><xsl:value-of select="."/></td>
      <td/>
      <td align="right"><b><xsl:value-of select="sum(//DZ[contains(PA, $aktueller_PA)]/BYTE)"/></b></td>
    </tr>
  </xsl:for-each>
</xsl:for-each>
</table>
</div>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

Es klappt alles in der XSL Datei, lediglich die Zeile
<xsl:sort select="BYTE" order="descending"/>
sortiert nach "BYTE" und nicht nach Summe der Bytes.
Es klappt nicht wenn ich hier einfach "sum(BYTE)" eintrage.

Hoffe einer von euch scrollt nicht gleich weiter ;-)

ciao
-Johnny-

  1. Hallo Johnny,

    Ziel ist es einfach nach einer Summe von Bytes zu sortieren:

    <xsl:for-each select="//DZ">
    <xsl:sort select="BYTE" order="descending"/>
      <xsl:for-each select="PA[not(.=following::PA)]">
        <tr>
          <xsl:variable name="aktueller_PA" select="."/>
          <td><xsl:value-of select="."/></td>
          <td/>
          <td align="right"><b><xsl:value-of select="sum(//DZ[contains(PA, $aktueller_PA)]/BYTE)"/></b></td>
        </tr>
      </xsl:for-each>
    </xsl:for-each>

    Es klappt alles in der XSL Datei, lediglich die Zeile
    <xsl:sort select="BYTE" order="descending"/>
    sortiert nach "BYTE" und nicht nach Summe der Bytes.
    Es klappt nicht wenn ich hier einfach "sum(BYTE)" eintrage.

    Das geht - soweit ich das (auch nach Rumprobieren) sehe - nicht in _einem_ Schritt, da du ja zuerst quasi aus 5 Bankelemenenten drei machst, um die dann zu sortieren. Du kannst also bestenfalls mit xsl:element-Anweisungen eine Zwischen-XML-Datei anzeigen und dann diese mit einem weiteren Stylesheet sortieren und als HTML ausgeben. Aber dass geht nicht clientseitig im IE...

    Gruß
    Franz

    PS: Falls du doch noch ne Lösung findest, poste Sie doch mal, wenn du Lust hast...