Rick,
Think on second group you want B <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"
B B B version="2.0">
B B B <xsl:output indent="yes"/>
B B B <xsl:template match="/">
B B B B B B B <xsl:result-document href="rick-output.xml">
B B B B B B B B B B B <xsl:apply-templates/>
B B B B B B B </xsl:result-document>
B B B </xsl:template>
B B B <xsl:template match="root">
B B B B B B B <root>
B B B B B B B B B B B <xsl:for-each-group select="*"
B B B B B B B B B B B B B B B group-adjacent="
B B B B B B B B B B B B B B B B B B B if (self::topic) then
B B B B B B B B B B B B B B B B B B B B B B B 1
B B B B B B B B B B B B B B B B B B B else
B B B B B B B B B B B B B B B B B B B B B B B 0">
B B B B B B B B B B B B B B B <xsl:choose>
B B B B B B B B B B B B B B B B B B B <xsl:when test="current-grouping-key()
= 1">
B B B B B B B B B B B B B B B B B B B B B B B <ol>
B B B B B B B B B B B B B B B B B B B B B B B B B B B <xsl:for-each-group
select="current-group()/*"
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
group-adjacent="
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B if
(self::subtopic) then
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
1
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B else
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
0">
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B <xsl:choose>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
<xsl:when test="current-grouping-key() = 1">
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
<ul>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
B B B B <xsl:apply-templates select="current-group()"/>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
</ul>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
</xsl:when>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
<xsl:otherwise>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
<li>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
B B B B <xsl:apply-templates select="current-group()"/>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
</li>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
</xsl:otherwise>
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B </xsl:choose>
B B B B B B B B B B B B B B B B B B B B B B B B B B B </xsl:for-each-group>
B B B B B B B B B B B B B B B B B B B B B B B </ol>
B B B B B B B B B B B B B B B B B B B </xsl:when>
B B B B B B B B B B B B B B B B B B B <xsl:otherwise>
B B B B B B B B B B B B B B B B B B B B B B B <xsl:apply-templates
select="current-group()"/>
B B B B B B B B B B B B B B B B B B B </xsl:otherwise>
B B B B B B B B B B B B B B B </xsl:choose>
B B B B B B B B B B B </xsl:for-each-group>
B B B B B B B </root>
B B B </xsl:template>
B B B <xsl:template match="topic | subtopic">
B B B B B B B <li>
B B B B B B B B B B B <xsl:apply-templates/>
B B B B B B B </li>
B B B </xsl:template>
B B B <!-- Identity transform. -->
B B B <xsl:template match="@* | node()">
B B B B B B B <xsl:copy copy-namespaces="no">
B B B B B B B B B B B <xsl:apply-templates select="@* | node()"/>
B B B B B B B </xsl:copy>
B B B </xsl:template>
</xsl:stylesheet>
TerryBadger
On Monday, May 11, 2020, 12:36:32 PM EDT, Liam R. E. Quin
liam@xxxxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
On Mon, 2020-05-11 at 15:47 +0000, Wendell Piez wapiez@xxxxxxxxxxxxxxx
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()">
>B <xsl:apply-templates/>
> </xsl:for-each>
This does something slightly different in the presence of commentsB 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:B http://www.fromoldbooks.org
|