| Subject: RE: [xsl] complex sorting From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Fri, 6 Sep 2002 18:34:10 +0100 | 
> This should parse the numeric value and sort, which it does 
> fine, except that all the attributes are stripped off the output.
> 
> <xsl:template match ="I1/@* |I1">
> 	<xsl:if test="I1/@i44='N'">
> 		<xsl:copy>
> 			<xsl:apply-templates select="@* | I1">
> 				<xsl:sort select="@i29" 
> data-type="number" order="descending"/>
> 			</xsl:apply-templates>
> 		</xsl:copy>
> </xsl:if>
> </xsl:template>
Atrtibute nodes will match the above template rule but fail the <xsl:if>
test, so they will produce no output.
> 
> I need to perform a different sort if test ='Y' for the same 
> attribute node, moving the entire record to another section 
> of the document.  that would look something like this.
> 
You may need to use the substring() trick: 
concat(substring(@i44, 1 div (test='N')), 
       substring(@i25, 1 div (test='Y'))
If test='Y' this is
concat(subtring(@i44, infinity), substring(@i25, 0))
which is string(@i25)
while if test='N' it is string(@i44). 
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 -> | 
|---|---|---|
| [xsl] complex sorting, Isaac Blaise | Thread | RE: [xsl] How to pass variable from, Khan, Amir | 
| Re: [xsl] XSLT class, Wendell Piez | Date | Re: [xsl] Getting desired node on t, J.Pietschmann | 
| Month |