RE: [xsl] Sorting based on string length in an element

Subject: RE: [xsl] Sorting based on string length in an element
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 22 Jul 2005 23:28:48 +0100
<xsl:for-each select="book/desc">
  <xsl:sort select="string-length(.)" data-type="number"
order="descending"/>
  <xsl:if test="position() &lt; 3">
    <xsl:copy-of select="."/>
  </xsl:if>
</xsl:for-each>

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Karl Koch [mailto:TheRanger@xxxxxxx] 
> Sent: 22 July 2005 23:14
> To: Mulberry list
> Subject: [xsl] Sorting based on string length in an element
> 
> Hello XSLT experts,
> 
> I have the following kind of content:
> 
> <bookshelf>
>   <book><desc>description AAAA</desc></book>
>   <book><desc>description AA</desc></book>
>   <book><desc>description AAA</desc></book>
>   <book><desc>description A</desc></book>
> </bookshelf>
> 
> I am looking for one stylesheet that sorts the booklist in 
> descending order
> depending on the length of the <desc> element. The result 
> would look like
> this:
> 
> <bookshelf>
>   <book><desc>description AAAA</desc></book>
>   <book><desc>description AAA</desc></book>
>   <book><desc>description AA</desc></book>
>   <book><desc>description A</desc></book>
> </bookshelf>
> 
> Also I would like to have a slight modification of that which 
> cuts the list
> at a certain position (e.g. pos = 2) which would give me this result:
> 
> <bookshelf>
>   <book><desc>description AAAA</desc></book>
>   <book><desc>description AAA</desc></book>
> </bookshelf>
> 
> How would this modified stylesheet look like assuming that it 
> should also
> work properly in case the list is shorter than pos?
> 
> Kind Regards,
> Karl
> 
> -- 
> 5 GB Mailbox, 50 FreeSMS http://www.gmx.net/de/go/promail
> +++ GMX - die erste Adresse fo?=r Mail, Message, More +++

Current Thread