RE: [xsl] Sorting values that contain spaces

Subject: RE: [xsl] Sorting values that contain spaces
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 21 Jul 2005 20:27:16 +0100
The simplest answer is probably to invoke the "codepoint collation" which
collates every character according to its numeric Unicode value. You can
invoke this using 

<xsl:sort
collation="http://www.w3.org/2005/04/xpath-functions/collation/codepoint"/>

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

> -----Original Message-----
> From: JBryant@xxxxxxxxx [mailto:JBryant@xxxxxxxxx] 
> Sent: 21 July 2005 19:50
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Sorting values that contain spaces
> 
> Hi, Mike,
> 
> I'm using Saxon 8.4, but I tested it with Xalan-J 2.4.1 and 
> got the same 
> result (I guess you and the Xalan folks chose the same implementation 
> scheme).
> 
> Lazy bum that I am, I was hoping for a method that wouldn't 
> require a Java 
> extension, but I guess I'll go tinker with Java and see what 
> I can do. 
> I've already extended Saxon with my own Java class (to get a list of 
> filenames from a directory), so it's not a total mystery.
> 
> The source code for Saxon must include at least one collation class 
> already, so I'll start with that and the Java API reference. 
> Any advice or 
> samples of collation classes that you might be able to point 
> to would be 
> much appreciated, of course.
> 
> Thanks.
> 
> Jay Bryant
> Bryant Communication Services
> (presently consulting at Synergistic Solution Technologies)
> 
> 
> 
> 
> 
> "Michael Kay" <mike@xxxxxxxxxxxx> 
> 07/21/2005 12:47 PM
> Please respond to
> xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 
> 
> To
> <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> cc
> 
> Subject
> RE: [xsl] Sorting values that contain spaces
> 
> 
> 
> 
> 
> 
> Collating sequences are implementation-defined, so you need 
> to say which
> processor you are using.
> 
> XSLT 2.0 and Saxon 8 give you control over the choice of collating 
> sequence
> (though you need to understand the underlying Java mechanisms 
> pretty well 
> to
> exploit this).
> 
> Michael Kay
> http://www.saxonica.com/
>  
> 
> > -----Original Message-----
> > From: JBryant@xxxxxxxxx [mailto:JBryant@xxxxxxxxx] 
> > Sent: 21 July 2005 17:57
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [xsl] Sorting values that contain spaces
> > 
> > Given input like this (a list of SQL table names):
> > 
> > <tables>
> >   <table name="Claim"/>
> >   <table name="Claim Aggregate Queue"/>
> >   <table name="Claimant"/>
> >   <table name="Claim Association Fact"/>
> > </tables>
> > 
> > And XSL like this:
> > 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet version="2.0" 
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > 
> >   <xsl:template match="tables">
> >     <xsl:for-each select="table">
> >       <xsl:sort select="@name"/>
> >       <xsl:value-of select="@name"/><xsl:if test="not(position() = 
> > last())"><xsl:text>, </xsl:text></xsl:if>
> >     </xsl:for-each>
> >   </xsl:template>
> > 
> > </xsl:stylesheet>
> > 
> > I get this:
> > 
> > Claim, Claim Aggregate Queue, Claimant, Claim Association Fact
> > 
> > I would like to get this:
> > 
> > Claim, Claim Aggregate Queue, Claim Association Fact, Claimant
> > 
> > How can I get that?
> > 
> > I checked the FAQ and various archives of the list, but I 
> didn't find 
> > anything on target.
> > 
> > Thanks.
> > 
> > Jay Bryant
> > Bryant Communication Services
> > (presently consulting at Synergistic Solution Technologies)

Current Thread