Hallo!
Allerdings kannst Du die Variable in XSLT 1.0 nicht mehr in xsl:for-each packen, das gibt einen Fehler - in XSLT 2.0 geht das. Wenn Du also die Sortierung ändern willst, musst Du das bereits beim Anlegen der Variable machen - Du kannst mit XSLT 1.0 den Inhalt der Variable lediglich per <xsl:copy-of select="$variable" /> an einer bestimmten Stelle ins Dokument einfügen, nicht mehr.
Wenn ich nicht nach dem zusätzlichen Feld sortieren kann nützt es mir nix. Nur aus diesem Grund dachte ich überhaupt an eine Variable: zwischenspeichern -> zusätzliches Feld -> nach diesem sortieren/ gruppieren -> Ausgabe
Wo kommt eigentlich die Information "zusätzliches Feld" her? Die musst Du ja auch irgendwie dynamisch bekommen, oder?
Denn bei <xsl:sort /> kannst Du beim select-Attribut nämlich einen beliebigen XPath-Ausdruck angeben, d.h. sowas funktioniert durchaus:
<xsl:for-each select="...">
<xsl:sort select="translate (elem/@attrib, 'ABC', 'DEF')" />
...
</xsl:for-each>
(Jetzt mal beispielhaft)
Funktioniert in XSLT 1.0 natürlich nur, wenn Du die Information bezüglich des zusätzlichen Feldes auch in einem geschlossenen XPath-Ausdruck unterbringen kannst und keine Bedingungen / Templates benötigst. Da ist XSLT 2.0 auch wieder besser, weil man sich da eigene XPath-Funktionen definieren kann und außerdem stehen in XPath 2.0 auch if/then/else und for u.ä. zur Verfügung.
Als weitere Alternative bestünde natürlich die Möglichkeit, das Dokument zweimal durch XSLT zu jagen: Das erste Mal werden nur Zusatzinformationen hinzugefügt, das zweite Mal erfolgt die Anzeigelogik.
Viele Grüße,
Christian