Vielen Dank für deine Mühe bei allen Fragen!
Einzig "elegante" Lösung ist wohl mit apply-templates oder call-templates, ich müsste aber soviel variablen übergeben...
<xsl:template match="produkt">
xsl:choose
<xsl:when test="position() mod 2 = 0">
<xsl:element name="tr" use-attribute-sets="grau">
<xsl:apply-templates />
</xsl:element>
</xsl:when>
xsl:otherwise
<xsl:element name="tr" use-attribute-sets="gelb">
<xsl:apply-templates />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Hallo,
Wie kann ich folgenden Code vereinfachen, damit ich den tabellenzelleninhalt nicht immer anschreiben muss?
Du muss den Tabellenzelleninhalt anschreiben? ;-)
Aber um auf deine Frage zu antworten: entweder gar nicht, weil die andere Lösungen auch nicht weniger Code produzieren würden, oder in Abhängigkeit davon was du in deinem xsl:attribute-sets hast, deren Inhalt direkt in <tr> unterbringen:
<tr>
xsl:choose
<xsl:when test="position() mod 2 = 0">
<xsl:attribute name="...">...</xsl:attribute>
...
...
</xsl:choose>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_name"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_fname"/>
</td>
</tr>Oder so z.B.
<tr>
<xsl:attribute name="class">
xsl:choose
<xsl:when test="position() mod 2 = 0">dark</xsl:when>
xsl:otherwiselight</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
...
</tr>Grüße
Thomasxsl:choose
<xsl:when test="position() mod 2 = 0">
<xsl:element name="tr" use-attribute-sets="gerade">
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_name"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_fname"/>
</td></xsl:element>
</xsl:when>
xsl:otherwise
<xsl:element name="tr" use-attribute-sets="ungerade">
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_name"/>
</td>
<td>
<xsl:value-of select="$current_teilnehmer_fname"/>
</td></xsl:element>