On 20.05.2021 22:20, rick(_at_)rickquatro(_dot_)com wrote:
The idea is that when I see a “NOTE” string, I want that entry and all
following within the same group to be <note> elements. So I am look for
preceding-sibling or self that contains “NOTE” but restricted to the
same group. I am using XSLT 3. Thank you very much.
Perhaps using an inner group-starting-with:
<xsl:template match="dataroot">
<root>
<xsl:for-each-group select="*" group-by="FIG_NO">
<entry>
<figure>{current-grouping-key()}</figure>
<xsl:for-each-group select="current-group()"
group-starting-with="*[PART_DES[matches(., 'NOTE')]]">
<xsl:choose>
<xsl:when test="self::*[PART_DES[matches(., 'NOTE')]]">
<xsl:iterate select="current-group()">
<note>{PART_DES}</note>
</xsl:iterate>
</xsl:when>
<xsl:otherwise>
<xsl:iterate select="current-group()">
<description>{PART_DES}</description>
</xsl:iterate>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</entry>
</xsl:for-each-group>
</root>
</xsl:template>
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--