Wie kann man in XSLT Elemente einer Liste zählen?

mathiasn

Grünschnabel
Hallo,

ich habe folgende Frage.
Wie kann man in XSLT die Elemente einer Liste z.B. (a, b ,c ,a) einzeln zählen und ausgeben, das als Ergebnis a=2 b=1 und c=1 raus kommt.
Ist das überhaupt möglich und wenn ja wäre ich glücklich wenn mir wer dabei helfen könnte.

Ich bin Neueinsteiger in XSLT.

Danke.
 
Hi.

Es gibt mehrere Möglichkeiten. Man könnte ein rekursives Template verwenden und die Liste übergeben. Bei einem Schritt würde man das erste Element der Liste und die Anzahl ausgeben. Dann würde man das Template rekursiv mit einer Liste aufrufen, wo alle Elemente entfernt wurden, die mit dem ersten Element übereinstimmen.

Man kann auch eine for-each Schleife verwenden. Dort würde man die Ausgabe eines Elementes der Liste und die Anzahl nur durchführen falls es nicht bereits ausgegeben wurde. Das ist der Fall wenn es in der Liste kein Element gibt welches eine Position kleiner als die aktuelle Position in der Liste besitzt.

Beispiel:
XML:
<xsl:for-each select="$list">
  <xsl:variable name="e" select="." />
  <xsl:variable name="pos" select="position()" />

  <xsl:if test="not($list[position() &lt; $pos and name() = name($e)])">
     <xsl:value-of select="name()" />: <xsl:value-of select="count($list[name() = name($e)])" />
  </xsl:if>
</xsl:for-each>
Gruß
 
Zuletzt bearbeitet von einem Moderator:
Zurück