Hallo,
Mit dieser Prüfung lasse ich Zeilen nicht anzeigen, bei denen "Data/Data1" nicht existiert.
Eben. Nicht aber ob sich der Wert im "Data1" verändert hat. (Gut, ich weiß nicht was bei dir "der Wert hat sich vereändert" wirklich bedeutet.)
Bei der Tabelle, die aus meiner Abfrage herauskommt, würde ich gerne die Zeilen farbig markieren. Und zwar wie folgt...
(Beispiel)Data1 Setting
1 2
1 3
1 5
2 6
2 5
2 234
2 234
2 2344Hier sollten nun alles Zeilen, die bei Data1 eine "1" haben, eine andere Farbe haben, als bei "2", usw...
Verstehe. Ich bin nicht so sehr für allzu bunte Tabellen, deshalb denke ich dass zwei Farben, die sich pro Gruppe abwechseln, reichen würde.
Mit XSLT 2.0 kannst du das Problem so lösen:
---------------------------------------------
<xsl:for-each-group select="bla/blubb" group-by="Data/Data1[@Id != '']">
<xsl:sort select="current-grouping-key()" order="ascending"/>
<xsl:sort select="Settings/Setting" order="descending"/>
<xsl:variable name="pos" select="position()"/>
<xsl:for-each select="current-group()">
<tr class="color{$pos mod 2}">
<td align="center">
<xsl:value-of select="Data/Data1"/>
</td>
<td align="center">
<xsl:value-of select="Settings/Setting"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each-group>
---------------------------------------------
Mit XSLT 1.0 sieht die Lösung so aus:
---------------------------------------------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:key name="data" match="bla/blubb" use="Data/Data1[@Id != '']"/>
...
<xsl:for-each select="bla/blubb[generate-id(.) = generate-id(key('data', Data/Data1[@Id != '']))[1]]">
<xsl:variable name="pos" select="position()" />
<xsl:for-each select="key('data', Data/Data1[@Id != ''])">
<xsl:sort select="Data/Data1" order="ascending"/>
<xsl:sort select="Settings/Setting" order="descending"/>
<tr class="color{$pos mod 2}">
<td align="center">
<xsl:value-of select="Data/Data1"/>
</td>
<td align="center">
<xsl:value-of select="Settings/Setting"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
...
</xsl:stylesheet>
---------------------------------------------
In Beiden Fällen brauchst du nur zwei Fraben für class="color1" und für class="color0" zu bestimmen.
Grüße
Thomas