RE: [xsl] Aberrant Alphabetizing.

Subject: RE: [xsl] Aberrant Alphabetizing.
From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx>
Date: Fri, 7 Mar 2003 12:05:21 -0000
> I have run into something (embarrassingly) unexpected, using 
> sort to alphabetize

Hi Wendy,

Unfortunately you have also fallen into the for-each trap... using <xsl:for-each select="."> as the first child of a matching template will always select just one node - the element that it is being matched against.

What I think you should be doing is sorting the <book> child nodes of whatever parent they have by title, something like:
 
<xsl:template match="insert-parent-of-book-here">
  <xsl:apply-templates select="book">
    <xsl:sort select="title"/>
  </xsl:apply-templates>
</xsl:template>

Think of it as building a list of nodes to process using <xsl:apply-templates select="..."/>, and then sorting them using <xsl:sort/>

cheers
andrew

> -----Original Message-----
> From: Wendy McFarland [mailto:wmcfarla@xxxxxxx]
> Sent: 07 March 2003 11:40
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Aberrant Alphabetizing.
> 
> 
> I have run into something (embarrassingly) unexpected, using 
> sort to alphabetize
> book titles to be printed in a catalog. The sort is working 
> pefectly for most of
> the books. But here are 5 examples of incorrect sorting (that 
> were, sigh,
> pointed out to me by the client):
> 
> Computers at Risk: Safe Computing in the Information Age
>      (should be 2nd)
> 
> Computer Science and Artificial Intelligence
>      (should be 1st)
> 
> Effectiveness of the United States Advanced Battery Consortium as a
> Government-Industry Partnership
>      (should be 5th)
> 
> Effective Services for Young Children: Report of a Workshop
>      (should be 4th)
> 
> Effect of Environment on Nutrient Requirements of Domestic Animals
>      (should be 3rd)
> 
> 
> ---- The XSLT -----------------
> <xsl:template match="book">
>      <xsl:for-each select=".">
>           <xsl:sort select="title"/>
>           <xsl:apply-templates select="title"/>
>      </xsl:for-each>
> </xsl:template>
> -------------------------------
> 
> ---- The XML ------------------
> <book>
>      <title>Computers at Risk: Safe Computing in the 
> Information Age</title>
> </book>
> <book>
>      <title>Computer Science and Artificial Intelligence</title>
> </book>
> <book>
>      <title>Effectiveness of the United States Advanced 
> Battery Consortium as a
> Government-Industry Partnership</title>
> </book>
> <book>
>      <title>Effective Services for Young Children: Report of 
> a Workshop</title>
> </book>
> <book>
>      <title>Effect of Environment on Nutrient Requirements of Domestic
> Animals</title>
> </book>
> -------------------------------
> 
> 
> Can anyone help me understand why the alphabetizing doesn't 
> come out as
> expected?
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 
> 
> 
> 
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.458 / Virus Database: 257 - Release Date: 24/02/2003
>  
> 

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.458 / Virus Database: 257 - Release Date: 24/02/2003
 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread