Re: [xsl] sort by xsl:if and then sort using templates?

Subject: Re: [xsl] sort by xsl:if and then sort using templates?
From: "Max Bronsema" <max.bronsema@xxxxxxxxx>
Date: Mon, 20 Nov 2006 15:05:37 -0800
Thank you for the guidance Rashmi and David,

I seem to not be able to wrap my head around how the XSLT processor
works, I will be doing some reading and then getting back at this
problem.

Thanks again,

Max Bronsema


On 11/20/06, David Carlisle <davidc@xxxxxxxxx> wrote:

xsl:sort have to be direct children of xsl:for-each (or xsl:aply-templates) you can not nest in xsl:if (or anything else) Just put the test on your select predicate or outside the xsl:apply-templates

It's a bit hard to show exactly what you need to do as I think you over
trimmed your stylesheet, but in general rather than


<xsl:apply-templates> <xsl:if test="something"> <xsl:sort ..../> </xsl:if> </xsl:apply-templates>

do either

<xsl:apply-templates select="*[something]>
<xsl:sort.../>
</xsl:sort>

or

<xsl:choose>
<xsl:when test="something">
<xsl:apply-templates>
<xsl:sort ..../>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>

depending on what you want to do if the predicate is false (no output,
or no sorting, respectively)

David


		
	 Reply 		
Reply to all Reply to allForward Forward Print Add Rashmi to Contacts
list Delete this message Report phishing Show original Message text
garbled?
	Rashmi Rubdi <dev_subscriptions@xxxxxxxxx> 	
to xsl-list
	
show details
	 12:53 pm (2 hours ago)
Which version of XSLT/XPATH? I dont think you can compare dates with >
in XPATH1.0

You can't nest xsl:sort inside xsl:if.
xsl:if can only be nested under <xsl:apply-templates> and <xsl:for-each>

I think if you represent dates in the standard format for example:
2005-05-07T19:30:00  instead of 05/07/2005 you can simply sort dates
without having to extract the substrings of year, month and day with
reference to the code snippet you have provided.

like this:
<xsl:apply-templates>
      <xsl:sort select="date"/>
</xsl:apply-templates>

Current Thread