Subject: Re: [xsl] Grouping From: "Christoph Naber pentium120mhz@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 21 Oct 2020 18:07:11 -0000 |
Am 21.10.2020 um 17:57 schrieb Christoph Naber pentium120mhz@xxxxxxxxx:
The group-wrap should be performed for sequences of <points> of @type = '1'. <Points> of other types and completeley other nodes should not be grouped.
Another approach not using grouping with for-each-group is trying to key on the generated id of the first node in the group; usually that leads to patterns that make my head spin but so did your original code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" B B B B xmlns:xs="http://www.w3.org/2001/XMLSchema" B B B B exclude-result-prefixes="#all" B B B B version="3.0">
B <xsl:key name="point-group" B B B B B B B B B B match="point[@type = 1 and preceding-sibling::*[1][self::point[@type = 1]]]" B B B B B B B B B B use="generate-id(preceding-sibling::point[@type = 1][not(preceding-sibling::*[1][self::point[@type = 1]])][1])"/>
B <xsl:mode on-no-match="shallow-copy"/>
B <xsl:output method="xml" indent="yes"/>
B <xsl:template match="point[@type = 1][not(preceding-sibling::*[1][self::point[@type = 1]])]"> B B B B B <group> B B B B B B B B B <xsl:copy-of select="., key('point-group', generate-id())"/> B B B B B </group> B </xsl:template>
B <xsl:template match="point[@type = 1 and preceding-sibling::*[1][self::point[@type = 1]]]"/>
</xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Grouping, Martin Honnen martin | Thread | |
Re: [xsl] Grouping, Martin Honnen martin | Date | Re: [xsl] Ungready Flag on Regex, Christophe Marchand |
Month |