Thomas J.S.: xsl:sort nach mehreren Kriterien sortieren

Beitrag lesen

Hallo,

ich möchte eine Bücherliste in XML per XSL ausgeben und dabei sortieren. So sieht die Liste in etwa aus:

Es gibt also zu jedem Buch einen Titel und einen Autor. Ich möchte diese Liste nun sortiert nach Autor und Titel ausgeben.

<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates select="buchbestand"/>
</fo:flow>

<xsl:template match="buchbestand">
<xsl:apply-templates select="autor">
<xsl:apply-templates select="titel">
</xsl:template>

Wie binde ich nun xsl:sort so ein, dass nach Autor und nach Titel sortiert wird?

Willst du eine Liste oder zwei Listen?

Dein Template (<xsl:template match="buchbestand">) hat nicht viel Sinn, denn damit erhältst du zuerst alle Autoren und dann alle Titel, es sei denn es ist so beabsichtigt.
Außerdem ist es fehlerhaft (apply-templates sind nicht abgeschlossen), so dass ich jetzt nicht weiss, wie dein wirklicher Code aussieht.

Wie auch immer: du kanns auch im <apply-templates> <sort> verwenden und das auch mehrfach.

<xsl:apply-templates select="....">
<xsl:sort select="...." /> --> erstes Sortierkriterium
<xsl:sort select="...." /> --> zweites Sortierkriterium
etc.
</xsl:apply-templates>

Grüße
Thomas