Moin moin,
es tut mir wirklich leid, dass ich dieses leidige Thema (nimmt ja fast schon "2 Frames"- Ausmasse an) schon wieder anschneiden muss. Im Archiv habe ich gesucht und gefunden, aber die Antworten habe mir zwar viele Versuche, aber keine erfolgreiche Lösung beschert:
Ich möchte mit der Abfrage <xsl:when test="$changecolor = '0'"> von Zeile zu Zeile die class meiner td tags ändern.
Dazu möchte ich am Ende des <xsl:for-each select="addressbook/member"> den Wert von changecolor in Abhängigkeit seines eigenen Wertes von 0 auf 1 oder umgekehrt setzen.
Ist natürlich mit Varible nicht erlaubt.
Ich habe für ein ähnliches Problem schon mit call und with-param gearbeitet. Das bekomme ich jetzt aber irgendwir nicht schlau in mein for-each. Irgenwie erscheint mir das wie ein doppelter loop.
Das for-each brauch ich für mein grouping [pref:t=69123&m=397427], denn sonst darf ich sort nicht verwenden.
Wie bekomme ich jetzt changecolor so definiert, dass ich es, in Abhängigkeit zu sich selbst und dem nächsten Namen (Knoten name) ändern kann?
?:-(
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<table border="1">
<tr>
<td>Name</td><td>Email</td><td>Tel. Nr.</td>
</tr>
<xsl:for-each select="addressbook/member">
<xsl:sort select="name"/>
<xsl:variable name="lastname" select="name"/>
<xsl:variable name="changecolor" select="0"/>
<xsl:if test="not(preceding-sibling::member[name=$lastname])">
<tr>
<td>
xsl:choose
<xsl:when test="$changecolor = '0'">
<xsl:attribute name="class">greyl</xsl:attribute>
</xsl:when>
xsl:otherwise
<xsl:attribute name="class">greyd</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="name"/>
</td>
<td>
<xsl:for-each select="/addressbook/member[name=$lastname]">
<xsl:sort select="enam1" order="descending"/>
<xsl:value-of select="enam1"/>
<xsl:if test="enam1 != ''">
<br/>
</xsl:if>
</xsl:for-each>
</td>
<td>
<xsl:for-each select="/addressbook/member[name=$lastname]">
<xsl:sort select="telno" order="descending" data-type="number"/>
<xsl:value-of select="telno"/>
<xsl:if test="telno != ''">
<br/>
</xsl:if>
</xsl:for-each>
</td></tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
bydey