| Subject: RE: [xsl] Dynamic XSL Sorting - Is there a way like this? From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Wed, 24 Jul 2002 09:13:53 +0100 | 
> The issue is the sort.  If I use and hard code the following 
> it works: <xsl:for-each 
> select="HRISReport/Participants/Participant/Plans/Plan/Contrib
> utionRateChanges/C
> ontributionRateChange/RateChanges/RateChange">
> 	<xsl:sort select="../../../../../../LastName"/>
> 	<xsl:sort select="../../../../../../@SSN"/>
> 	
> This sorts properly but if I try to pass in a parameter 
> things start to fail.
> 
> The following works:
> <xsl:param name="sortBy" select="'Name'"/>
> 
> works if the sort reads:
> <xsl:sort select="@*[name(.)=$sortBy]"/>
> 
> <xsl:param name="sortBy" select="'OldPercent'"/>
>  works if the sort reads:
> <xsl:sort select="*[name(.)=$sortBy]"/>
> 
> But how do I sort off of LastName,FirstName or SSN as a 
> parameter.  None of these fields appear to work unless I 
> hardcode the sort. 
One solution is to use xx:evaluate(), which evaluates any XPath
expression supplied as a string. This is available in some processors
including Saxon and Xalan.
You might also be able to achieve the required effect with a generic
expression that searches for an ancestor having a child or attribute
with the right name:
<xsl:sort select="(ancestor-or-self::*/* | ancestor-or-self::*/@*)
                   [name()=$param][last()]"/>
Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Dynamic XSL Sorting - Is , Joerg Heinicke | Thread | [xsl] has anybody used apache Batik, sudha rv | 
| RE: [xsl] encoding woes: ISO-8859-1, Michael Kay | Date | RE: [xsl] lookup table, Michael Kay | 
| Month |