| 
 
Subject: RE: [xsl] Grouping and Sorting on value inside group From: "Hunsberger, Peter" <Peter.Hunsberger@xxxxxxxxxx> Date: Tue, 11 Jun 2002 15:40:12 -0500  | 
> If you know the sort column couldn't you use it to get a sorted sequence
of
> dataids and distribute your elements using that?
> 
> eg, within a group:
> 	<xsl:for-each select=*[local-name(.) = $sortColumn]>
> 		<xsl:sort select="value"/>
> 		<xsl:for-each select="../*[@dataid = current()/@dataid]>
> 			<xsl:copy-of select="."/>
> 		</xsl:for-each>
> 	</xsl:for-each>
Tom, 
I finally found the answer.  Your use of [@dataid = current()/@dataid]
provided the missing clue:
      <xsl:for-each select="(//dataset/*/*[generate-id() =
generate-id(key('dataids', concat(local-name(..),@dataId)))])">
         <xsl:sort select="parent::node()/*[local-name() = $sortcol and
@dataId = current()/@dataId]/value"/>
The real life version is somewhat more complicated in that it has to skip
certain values and the name of the "value" node is dynamically picked from a
list based on the sort column, but it all works.   Now I get to define
optional ascending or descending dependant on the column picked.
The last step is to look at using more keys.  I'd still like to know if I
can use a key or some combination of keys to eliminate the //dataset
reference in the for-each...(anyone)???
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| RE: [xsl] Grouping and Sorting on v, Hunsberger, Peter | Thread | RE: [xsl] Grouping and Sorting on v, Wendell Piez | 
| Re: [xsl] Flat file to hierarchy?, Wendell Piez | Date | [xsl] Removing Newlines, Greg Kushmerek | 
| Month |