Hallo,
der Thementitel ist irgendwie unglücklich, mir fällt aber auch nix anderes ein.
ich habe folgendes Problem:
Ich möchte nun eine Tabelle erstellen, mit einer Zeile für Klaus und einer für Erwin usw. In der Tabelle soll mir angezeigt werden, wie oft Erwin und Klaus an einem Tag etwas gesendet haben:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:key name="datum" match="tables/table" use="datum"/>
<xsl:key name="name" match="tables/table" use="name"/>
<xsl:key name="dn" match="tables/table" use="concat(name,datum)"/>
<xsl:template match="/">
<html>
<head>
<title>Gruppierung</title>
</head>
<body>
<table>
<tr>
<td>Nutzer</td>
<xsl:for-each select="tables/table[generate-id() = generate-id(key('datum', datum)[1])]">
<td>
<xsl:value-of select="datum"/>
</td>
</xsl:for-each>
</tr>
<xsl:for-each select="tables/table[generate-id() = generate-id(key('name', name)[1])]">
<tr>
<td>
<xsl:value-of select="name"/>
</td>
<xsl:for-each select="key('name', name)">
<xsl:variable name="n" select="name"/>
<td>
<xsl:choose>
<xsl:when test="current()[generate-id() = generate-id(key('dn', concat(name,datum)))]">
<xsl:value-of select="count(key('datum', datum)[name = $n])"/>
</xsl:when>
<xsl:otherwise>-</xsl:otherwise>
</xsl:choose>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
ausgabe ist:
Nutzer 01.03.2009 03.03.2009 02.03.2009
Klaus 1 2 -
Erwin 2 - 1
Was du damit nicht machen kannst, ist eine Sortierung nach Datum und/oder Name
Grüße
Thomas