xsl-list
[Top] [All Lists]

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

2006-11-20 12:38:21
Hello list,

I am having trouble applying xsl:if statements when I have templates
within my XSLT document. Below is a summary of what I am trying to
accomplish. The main question I have is how do I sort using an if, and
then sort again using a template?

I pass in a parameter called "currentDate" which holds the current
date. I then wish to use an xsl:if statement to determine which xml
items are not past due. Using the if, as I understand acts as a
boolean statement, those that fit the bill stay and those that do not
are nixed.

After the if statement I try to sort my items by date using what seems
like a common way to sort by date using the substring method. This
works flawlessly until I try to nest it in my if statement.

Once the dates are sorted I wish to display the first five sorted
items. I have done this using a position() statement in the past. Is
there a better way to handle this?

---------------------------------------
Abridged version of xml file
-------------cal.xml --------------
<calendar>
        <event>
                <date>10/13/05</date>
                <title>City Council Meeting</title>
                <time>8pm</time>
        </event>
</calendar>

----------------------------------------
Important parts of xslt file
---------------cal.xslt---------------
<!--Declare XSL Parameters -->
        <xsl:param name="currentDate"/>
        
<xsl:if test="/calendar/event/date/text() &gt;= $currentDate">
</xsl:if>

<xsl:template match="calendar">
<xsl:apply-templates>
                <!--year-->
                <xsl:sort select="substring(date, 7,4)"/>
                <!--month-->
                <xsl:sort select="substring(date, 1, 2)"/>
                <!--day-->
                <xsl:sort select="substring(date, 3, 2)"/>
                </xsl:apply-templates>
        </xsl:template>
        
        <xsl:template match="event">
   Date:      <xsl:apply-templates select="date"/>
   Title:     <xsl:apply-templates select="title"/>
   Time:    <xsl:apply-templates select="time"/>
        </xsl:template>

Thank you for your help.

Max Bronsema

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--