Rick,
Think on second group you want <xsl:for-each-group select="current-group()/*">
Try this:
<?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:output indent="yes"/>
<xsl:template match="/">
<xsl:result-document href="rick-output.xml">
<xsl:apply-templates/>
</xsl:result-document>
</xsl:template>
<xsl:template match="root">
<root>
<xsl:for-each-group select="*"
group-adjacent="
if (self::topic) then
1
else
0">
<xsl:choose>
<xsl:when test="current-grouping-key() = 1">
<ol>
<xsl:for-each-group select="current-group()/*"
group-adjacent="
if (self::subtopic) then
1
else
0">
<xsl:choose>
<xsl:when test="current-grouping-key() = 1">
<ul>
<xsl:apply-templates
select="current-group()"/>
</ul>
</xsl:when>
<xsl:otherwise>
<li>
<xsl:apply-templates
select="current-group()"/>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</ol>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</root>
</xsl:template>
<xsl:template match="topic | subtopic">
<li>
<xsl:apply-templates/>
</li>
</xsl:template>
<!-- Identity transform. -->
<xsl:template match="@* | node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
TerryBadger
On Monday, May 11, 2020, 12:36:32 PM EDT, Liam R. E. Quin
liam(_at_)fromoldbooks(_dot_)org
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
On Mon, 2020-05-11 at 15:47 +0000, Wendell Piez
wapiez(_at_)wendellpiez(_dot_)com
wrote:
Hi,
Alternatively, if you wish to continue using xsl:apply-templates
idiomatically and capture all nodes in traversal without the ungainly
"current-group()/node()", you could write
<xsl:for-each select="current-group()">
<xsl:apply-templates/>
</xsl:for-each>
This does something slightly different in the presence of comments and
processing instructions i think. THe coffee hasn't worked here yet.
Also, Rick already has <xsl:apply-templates select="current-group()">
elsewhere in their XSLT :)
Liam
--
Liam Quin, https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations: http://www.fromoldbooks.org
--~----------------------------------------------------------------
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
--~--