Hi list members,
several weeks ago, your much appreciated help enabled me to tackle my
grouping problem. Now I am thinking about some refactoring, so I'll
briefly resume it before asking you again for help. It's basically a
classic heading-type grouping problem, but with some additional
difficulties. From a flat structure like
<A/>
<x/>
<B/>
<x/>
<y/>
<C/>
<x/>
I am building this hierarchical structure:
<part_A>
<item_specific_to_A/>
<A/>
<x/>
</part_A>
<part_B>
<B/>
<x/>
<item_specific_to_B/>
<y/>
</part_B>
<part_C>
<C/>
<item_specific_to_C/>
<x/>
</part_C>
This is to say, each group needs specific processing. Currently I am
using xsl:choose to recognize a group by its "leader":
<xsl:for-each-group select="*" group-starting-with="A|B|C">
<xsl:choose>
<xsl:when test="current-group()[1] = A">
<part_A>
<item_specific_to_A/>
<xsl:apply-templates select="current-group()"/>
</part_A>
</xsl:when>
<!-- xsl:when statements for the other two cases left out -->
</xsl:choose>
</xsl:for-each-group>
<!-- template rules for copying the individual elements left out -->
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
(because some groups might need the same kind of processing)? 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 or named
templates, which would finally return the resulting sequence.
Am I dreaming here of a control flow "too dynamic" to be legal in XSLT2?
If not, what could the key definition and function call look like?
Yves
--~------------------------------------------------------------------
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>
--~--