dey: Globale Variable oder Param

Beitrag lesen

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