[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping
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" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" version="3.0"> <xsl:key name="point-group" match="point[@type = 1 and preceding-sibling::*[1][self::point[@type = 1]]]" use="generate-id(preceding-sibling::point[@type = 1][not(preceding-sibling::*[1][self::point[@type = 1]])][1])"/> <xsl:mode on-no-match="shallow-copy"/> <xsl:output method="xml" indent="yes"/> <xsl:template match="point[@type = 1][not(preceding-sibling::*[1][self::point[@type = 1]])]"> <group> <xsl:copy-of select="., key('point-group', generate-id())"/> </group> </xsl:template> <xsl:template match="point[@type = 1 and preceding-sibling::*[1][self::point[@type = 1]]]"/> </xsl:stylesheet>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|