[xsl] Sorting issue, sorting by description given code

Subject: [xsl] Sorting issue, sorting by description given code
From: "Tony Rowe" <tony.rowe@xxxxxxxxxxxxxx>
Date: Wed, 29 Oct 2003 11:19:55 +1100
Hi all.

I have the following problem.

This is the xml...


  	<Group displayed="true" name="DEFAULT" num="0" /> 
	<Group displayed="true" name="GROUP1" num="1" />
	<Group displayed="true" name="TREES" num="15" />
  	<Group displayed="true" name="LOTS" num="19" /> 

  	<Point group="19"  /> 
  	<Point group="15" /> 
  	<Point group="0" /> 


Aim: To output a list of those Group names for which a Point belongs to,
sorted alphabetically.

>From above we have three points, so the desired result would be thus

Group List...


This is an extract from my xsl stylesheet to process this file, showing
that I am using a key to get unique group names based upon the Points
node set .

<xsl:key name="groups" match="Point" use="@group" /><!-- For Lines,
change match to Line-->

 <xsl:template match="SEEDB">
    <table class = "style1" border="1" cellspacing="0" cellpadding="2"
      <tr > 
        <th align="center">Point Groups</th>
      	<!--xsl:for-each select="./Points/Point"-->

		<xsl:for-each select="./Points/Point[generate-id(.) =
generate-id(key('groups',@group)[1])]"> <!--For Lines, change to
./Lines/Line[gen...etc] -->

		<xsl:sort select="./@group" data-type="text"/>
			<xsl:apply-templates select="."/>

	<xsl:template match="Point"><!--For Lines, change match to

			<td align="center"><xsl:value-of


I am using sort to order by the Point @group attribute, and applying a
template match on Point and the following result is achieved...


I know why this is happening, since it is being sorted by num rather
than by name, but how can I apply a sort to the name attribute of the
group, since the name attribute is not an attribute of Point?

I expect that I could do this setting up a nodeset variable, storing all
the names node in this variable (instead of outputting immediately),
sort the nodeset, and then output, but I wanted to avoid this if
possible, since I am led to believe that some parsers don't have an
equivalent "msxsl:node-set" function.

Hope this makes sense.

Tony Rowe

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

Current Thread