Hallo,
Jetzt will ich an einer Stelle des erzeugten Dokuments das name-Attribut sowie die Anzahl der Events ausgeben.
Soweit noch kein Problem:
<xsl:template match="person" mode="maxmeet">
<li><xsl:value-of select="@name"/>: <xsl:value-of select="number(string-length(@events) + 1) div 4"/></li>
</xsl:template>
Ausgehend vom http://aktuell.de.selfhtml.org/tippstricks/xml/gruppierung1/index.htm
<li><xsl:value-of select="@name"/>: <xsl:value-of select="count(id(@events))"/></li>
Ich hätte die Liste gerne reduziert auf die persons, die am meisten events besucht haben.
Ausgehend vom http://aktuell.de.selfhtml.org/tippstricks/xml/gruppierung1/index.htm
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE activity [
<!ELEMENT event EMPTY>
<!ATTLIST event id ID #REQUIRED>
]>
<activity>
...
</activity>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="html"
encoding="iso-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
indent="yes" />
<xsl:template match="/activity">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Veranstaltungen und Teilnehmer</title>
</head>
<body>
<h2>Teilnehmer mit höchster Anz. von Veranst.</h2>
<xsl:apply-templates select="participants" mode="highest" />
</body>
</html>
</xsl:template>
<xsl:template match="participants" mode="highest">
<xsl:variable name="highestnumberofevents">
<xsl:for-each select="participant">
<xsl:sort select="count(id(@events))" data-type="number" order="descending" />
<xsl:if test="position() = 1">
<xsl:value-of select="count(id(@events))" />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<ul>
<xsl:for-each select="participant">
<xsl:sort select="count(id(@events))" data-type="number" order="descending" />
<xsl:variable name="numberofevents" select="count(id(@events))" />
<xsl:if test="$numberofevents = $highestnumberofevents">
<li>
<xsl:value-of select="@name"/>: <xsl:value-of select="$numberofevents" />
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Grüße
Thomas