Subject: Re: [xsl] Grouping with siblings From: "Liam R. E. Quin liam@xxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sun, 16 Feb 2025 00:00:15 -0000 |
On Sat, 2025-02-15 at 20:49 +0000, rick@xxxxxxxxxxxxxx wrote: > Thank you very much Martin. That got me going in the right direction. A quick note - in some cases group-by won't work well. An example can be if the things to be wrapped are part of a longer sequence, so there's stuff outside the group but at the ame level. An approach there can be to use a mode to grab the nodes you want to be children of each chapter in the template matching chapter, and to ignore those nodes when encountered with apply-templates processing later, as the template for chapter handled them: <xsl:template match="chapter"> <chapter> <!--* or xsl:copy *--> <xsl:apply-attributes select="@*" /> <!--* find the next chapter, if any *--> B <xsl:variable name="next" as="element(chapter)?" select="following-sibling::chapter[1]" /> <!--* process all nodes up to the next chapter, * or up to the end of our container: *--> <xsl:apply-attributes select="following-sibling::node()[ if ($next) then (. << $next) else true() ]" mode="we-want-these-ones" /> </chapter> </xsl:template> <xsl:mode name="we-want-these-ones" on-no-match="shallow-copy" /> <xsl:template match="node()[preceding-sibling::chapter]" /> liam -- Liam Quin,B 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Grouping with siblings, rick@xxxxxxxxxxxxxx | Thread | Re: [xsl] Grouping with siblings, Martin Honnen martin |
Re: [xsl] Grouping with siblings, rick@xxxxxxxxxxxxxx | Date | Re: [xsl] Grouping with siblings, Martin Honnen martin |
Month |