Re: [xsl] Sort By Multiple Values?

Subject: Re: [xsl] Sort By Multiple Values?
From: Alice Wei <ajwei@xxxxxxxxxxx>
Date: Thu, 27 Dec 2007 13:59:53 -0500
Hi, Abel:

Thanks for trying, the result did not come out as expected. After implementing the code, I even tried to reverse the order of it, but both of the "result" came out interestingly.

Here is the result:
  HTML 4.01 / XHTML 1.0, CSS, XML 1.0, XSLT 1.0 and XSLT 2.0

It appears that it is following some order, but it does not appear to follow the order according to to "type."

Do I have to use a <xsl:when> statement to enforce its sequence?

Thanks for your help.

Alice Wei
MIS 2008
School of Library and Information Science
Indiana University Bloomington

Quoting Abel Braaksma <>:

Alice Wei wrote:

The XSL:

  <xsl:template match="computer">
  [<span class="skills">
                       <xsl:apply-templates select="language">
                           <xsl:sort select="@rank" order="ascending"/>

The output now is in the same order as it is in the order of the
document w= hen the @rank value is 1, and followed by the one where

[XML 1.0] [XSLT 1.0] [HTML 4.01/XHTML 1.0] [CSS] [XSLT 2.0].

Is it possible that I can get it to display as

[CSS] [HTML 4.01/XHTML 1.0] [XML 1.0] [XSLT 1.0] [XSLT 2.0]

One way to achieve that is to change your sort to select="type" (since the requested order is strictly alphabetical by type), but from your postings subjectline, I think you mean how to sort on several values, which is done by adding more xsl:sort values under each other:

<xsl:sort select="@rank" />
<xsl:sort select="type" />

-- Abel Braaksma

Current Thread