[Home] [By Thread] [By Date] [Recent Entries]
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
|

Cart



