Nach Summe sortieren
Johnny
- xsl
0 fjh
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-
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...