| 
 
Subject: [xsl] Grouping based on child value From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 5 Jun 2025 18:48:47 -0000  | 
Hi all,
Here is my XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <record>
        <col1>PG</col1>
    </record>
    <record>
        <col1>1</col1>
    </record>
    <record>
        <col1>2</col1>
    </record>
    <record>
        <col1>PG</col1>
    </record>
    <record>
        <col1>3</col1>
    </record>
    <record>
        <col1>4</col1>
    </record>
</root>
I want to group all of the <record> elements, starting with
col1[starts-with(.,'PG')]. I am expecting 2 groups of 3 record elements
each. Here is my style sheet:
<?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="xs"
    version="3.0" expand-text="yes">
    <xsl:output indent="yes"/>
    <xsl:template match="root">
        <xsl:copy>
            <xsl:message
select="count(record[col1[starts-with(.,'PG')]])"></xsl:message>
            <xsl:for-each-group select="record"
group-starting-with="descendant::col1[.='PG']">
                <group></group>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
However, my result is a single group:
<?xml version="1.0" encoding="UTF-8"?>
<root>
   <group/>
</root>
Any help would be appreciated. Thank you.
Rick Quatro
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] [ANN] Come speak at Balisage , Tommie Usdin btusdin | Thread | Re: [xsl] Grouping based on child v, Martin Honnen martin | 
| [xsl] [ANN] Come speak at Balisage , Tommie Usdin btusdin | Date | Re: [xsl] Grouping based on child v, Martin Honnen martin | 
| Month |