MudGuard: Maximalwert(e)

Beitrag lesen

Hi,

folgende Struktur ist gegeben:
Beispiel 1:
<persons>
  <person name="bla" events="e02 e04" />
  <person name="blubb" events="e01 e03 e05 e07" />
  <person name="laber" events="e03 e06 e07"/>
</persons>

oder
Beispiel 2:
<persons>
  <person name="bla" events="e02 e04" />
  <person name="blubb" events="e01 e03 e05 e07" />
  <person name="laber" events="e03 e06 e07"/>
  <person name="schwafel" events="e01 e02 e04 e07" />
</persons>

Also Personen sowie events, die events-Attribute sind immer aus 3-stelligen ids aufgebaut (e + 2 Ziffern) und immer mit genau einem Leerzeichen zwischen den ids.
D.h. die Länge des Strings ist direkt abhängig von der event-Anzahl.

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>

aufgerufen per
<ul><xsl:apply-templates select="persons" mode="maxmeet"/></ul>

Klappt auch - ich bekomme jetzt eine Liste _aller_ persons mit der Anzahl der events.

Jetzt kommt aber noch eine kleine Bedingung dazu, und da steht jetzt irgendwie ein Wald zwischen mir und den Bäumen, die ich sehen will:

Ich hätte die Liste gerne reduziert auf die persons, die am meisten events besucht haben.
Im ersten Beispiel also
blubb: 4
im zweiten Beispiel:
blubb: 4
schwafel: 4

Wie kann ich die Liste auf die Eintröge mit der maximalen Anzahl events (i.e. mit der maximalen string-length(@events)) begrenzen?

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.