This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: current()
- To: Matthew Cordes <mcorde61 at maine dot edu>
- Subject: Re: [xsl] current()
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Fri, 5 Jan 2001 18:24:57 +0000
- CC: xsl-list at lists dot mulberrytech dot com
- Organization: Jeni Tennison Consulting Ltd
- References: <20010104150148.A1977@plan9ws1.uct.usm.maine.edu>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Matthew,
> As you can see, I'm trying to sort Month names in correct
> (sequential) order, but Xalan 1.2.2 (newest) tells me "The current()
> function is not allowed in a match pattern!". I assume this is
> simply a bug in Xalan as versions prior to 1.2.1 sort correctly, any
> ideas? Any work-around suggestions?
As others have pointed out, it's a bug in Xalan. Here's a possible
work-around:
<!-- collect all the unique person/date elements into a variable -->
<xsl:variable name="dates"
select="person/date
[generate-id(.)=
generate-id(key('myKey',
concat( account, '::', .))[1])]" />
<!-- iterate over the months -->
<xsl:for-each select="$months">
<!-- sorting them according to descending @value
(could use position() instead) -->
<xsl:sort select="@value" data-type="number" order="descending" />
<!-- iterate over each of the dates in $dates whose @name
starts with the current month -->
<xsl:for-each select="$dates[starts-with(., current()/@name)]">
...
</xsl:for-each>
</xsl:for-each>
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list