Hi,
ich habe jetzt eine Lösung (wenn es dir so reicht?)
Muchachos Garcia oder so...
Mal sehen, ob ich die neuen Teile verstanden habe...
<xsl:template match="elem" mode="byname">
<xsl:if test="generate-id(.) = generate-id(key('firstletter', translate(substring(@name, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'))[1])">
<xsl:call-template name="groupelembyname">
<xsl:with-param name="gruppe" select="key('firstletter', translate(substring(@name, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'))" />
</xsl:call-template>
</xsl:if>
</xsl:template>
Mit dem generate-id-Zeug wird sichergestellt, daß pro Anfangszeichen im Name-Attribut genau ein Aufruf von groupelembyname geschieht.
Diesem Aufruf werden die Elemente der Gruppe als Parameter mitgegeben.
<xsl:template name="groupelembyname">
<xsl:param name="gruppe" />
<h1><a id="label{substring($gruppe[1], 1, 1)}">label <xsl:value-of select="substring($gruppe[1], 1, 1)" /></a></h1>
<xsl:for-each select="$gruppe">
<xsl:sort select="@name" />
<p>
<xsl:value-of select="." />
</p>
</xsl:for-each>
</xsl:template>
Hier wird erstmal das Label erzeugt, anschließend die Elemente der Gruppe ausgegeben.
Klingt eigentlich einfach - aber da wär ich nie drauf gekommen.
Nochmals herzlichen Dank - wenn Du mal hier vorbeikommst, geb ich Dir nen Green Spot aus - jetzt trink ich erst mal einen auf Dein Wohl!
cu,
Andreas
MudGuard? Siehe http://www.Mud-Guard.de/