Guten Morgen,
ich habe mir nun eine funktionierende Lösung überlegt und ausprobiert. Solange man zwischen Eigenschaften innerhalb eines Tags auswählen möchte, funktioniert folgendes Beispiel:
<xsl:apply-templates select="releases/release" >
<xsl:sort select="labels/label/@*[name()=$sortierung]" order="ascending" data-type="text" />
</xsl:apply-templates>
Wobei "sortierung" entsprechend meiner XML die Werte catno und name annehmen darf:
<release id="105393" status="Accepted">
<artists><artist><name>Noisy Youth</name></artist></artists>
<title>Midelicious EP</title>
<labels><label catno="ADV03" name="Adrenogroov" /></labels>
</release>
Komplizierter wird es, wenn die Sortierung beispielsweise nach dem Künstler erfolgen soll. Da bin ich leider nicht um ein weiteres xsl:choose herumgekommen:
<xsl:param name="auswahl"/>
<xsl:param name="sortierung"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$sortierung='artist'">
<xsl:choose>
<xsl:when test="$auswahl=''">
<xsl:apply-templates select="releases/release" >
<xsl:sort select="artists/artist/name" order="ascending" data-type="text" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="releases/release[genres/genre[contains($auswahl, .)][1]]">
<xsl:sort select="artists/artist/name" order="ascending" data-type="text" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$auswahl=''">
<xsl:apply-templates select="releases/release" >
<xsl:sort select="labels/label/@*[name()=$sortierung]" order="ascending" data-type="text" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="releases/release[genres/genre[contains($auswahl, .)][1]]">
<xsl:sort select="labels/label/@*[name()=$sortierung]" order="ascending" data-type="text" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Vielleicht hilft das ja mal jemanden weiter.
Viele Grüße!
Biks