Subject: Re: [xsl] for-each-group From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 28 Mar 2018 16:27:44 -0000 |
Perhaps then it's group-adjacent="if (self::figure) then generate-id() else '#'" Michael Kay Saxonica > On 28 Mar 2018, at 17:22, Rick Quatro rick@xxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > OK, I think I get it. You are grouping on a string derived from the node name instead of the node itself. This doesn't work for my general intent, because the other elements may not all be the same. For example, I might have this: > > <steps> > <step> > <para>Intro stuff</para> > <para>More intro stuff</para> > <figure/> > <figure/> > <para>Conclusion stuff</para> > <table>More conclusion stuff</table> > <para>More conclusion stuff</para> > </step> > </steps> > > and I would want the three elements following the last figure to be in a single group. But now that I see what you are doing, I will try to work it out. Thanks. > > Rick > > From: Michael Kay mike@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> > Sent: Wednesday, March 28, 2018 12:06 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] for-each-group > > Try group-adjacent="concat(local-name(), if (self::figure) then position() else 0))" > > which will work for your example though it may not match your general intent... > > Michael Kay > Saxonica > > > > On 28 Mar 2018, at 16:53, Rick Quatro rick@xxxxxxxxxxxxxx <mailto:rick@xxxxxxxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote: > > 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 <http://www.w3.org/1999/XSL/Transform>" > xmlns:xs="http://www.w3.org/2001/XMLSchema <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 <mailto:rick@xxxxxxxxxxxxxxx> > FrameMaker toys: www.frameexpert.com/store <http://www.frameexpert.com/store> > 585-366-4017 > > > > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <x-msg://66/-list/293509> (by email) > > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <x-msg://66/-list/612310> (by email <applewebdata://483630DE-5E3A-43E4-918E-154D6F872D6A>) > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <-list/293509> (by email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] for-each-group, Martin Honnen martin | Thread | Re: [xsl] for-each-group, Rick Quatro rick@xxx |
Re: [xsl] for-each-group, Martin Honnen martin | Date | Re: [xsl] for-each-group, Rick Quatro rick@xxx |
Month |