Subject: Re: XSLT2: Keys vs. xsl:choose to distinguish groups
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 15 Mar 2007 12:40:49 GMT
|
> <xsl:when test="current-group()[1] = A">
You prersumably didn't mean that (as it tests if the stribg value of the
current node is equal to the string value of its a child.
<xsl:when test="current-group()[1]/self::A">
would work.
>. My question is: Is it feasible (and reasonable) to avoid using
> xsl:choose here but instead select a group's treatment based on a key
It's not clear what you have in mind here. If you use keys instead of
for-each group (muenchian grouping) then the nodes returned by the key
are the nodes that are returned by current-group() when using
for-each-group.
> (because some groups might need the same kind of processing)?
You can make the xpath in the xsl:when clause as genearal as you need,
replacing
<xsl:when test="current-group()[1]/self::A">
by
<xsl:when test="not(current-group()[1]/self::Z[@foo='hmm'])">
if all groups except those starting with a Z foo="hmm" need the same
treatment.
> I think of having just a single call to the key function which would
> then dispatch the call to one out of a list of user-defined functions
key returns a sequence of nodes you still need to use a choose 9or apply
templates) to cause any action to be taken with those nodes.
David
|