[xsl] for-each-group

Subject: [xsl] for-each-group
From: "Rick Quatro rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 28 Mar 2018 15:52:47 -0000
Hi All,

 

I have a <step> element that looks something like this:

 

<steps>

  <step>

    <para>Intro stuff</para>

    <para>More intro stuff</para>

    <figure/>

    <figure/>

    <para>Conclusion stuff</para>

    <para>More conclusion stuff</para>

  </step>

</steps>

 

I want 4 separate groups:

 

1) First two <para> elements.

2) First <figure>

3) Second <figure>

4) Last two <para> elements.

 

Here is my stylesheet:

 

<?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="2.0">

    

    <xsl:template match="/steps">

        <xsl:apply-templates select="step"/>

    </xsl:template>

    

    <xsl:template match="step">

        <xsl:for-each-group select="*" group-starting-with="figure">

            <xsl:message select="count(current-group())"></xsl:message>

        </xsl:for-each-group>

    </xsl:template>

    

</xsl:stylesheet>

 

I get the first two groups, but the last two <para> elements are part of the
last <figure>'s group instead of being separate.

 

I tried using group-by="figure" but I don't get any output. Any help would
be appreciated. Thank you very much.

 

Rick

 

Rick Quatro

Carmen Publishing Inc.

rick@xxxxxxxxxxxxxxx

FrameMaker toys: www.frameexpert.com/store

585-366-4017

Current Thread