Re: [xsl] Process the following group

Subject: Re: [xsl] Process the following group
From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 8 Jul 2022 14:02:40 -0000
Rick,

That being said, this can also be done in one pass, and indeed without
xsl:for-each-group at all ....

<xsl:key name="myDivs" match="div2" use="(preceding-sibling::div1,
following-sibling::div1)[1]/generate-id()"/>

<xsl:template match="div1">
  <xsl:copy>
    <xsl:apply-templates select="key('myDivs',generate-id())"
mode="include"/>
  </xsl:copy>
</xsl:template>

etc.

This works on the principle that groups can be created by relating elements
together using keys (old 1.0 approach).

Not disagreeing with Eliot's advice here however -- splitting into multiple
passes will often yield a more maintainable as well as clearer solution to
a problem. A solution like this is both more obscure, and more apt to break
when something subtle turns up.

Cheers, Wendell



On Fri, Jul 8, 2022 at 9:30 AM rick@xxxxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi Eliot, thank you for walking me through the logic. It makes sense so I
> will try to code it that way. But I think the advice from you and others to
> do a multiple pass may be a more robust approach. Thanks to all that
> responded. -Rick
>
>
>
> *From:* Eliot Kimber eliot.kimber@xxxxxxxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
> *Sent:* Thursday, July 7, 2022 6:11 PM
> *To:* xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> *Subject:* Re: [xsl] Process the following group
>
>
>
> So the first two div2 elements should be grouped with the first div1?
>
>
>
> If you do group-starting-with div1 then the first two div2s will be in the
> first group and that group will not start with a div1, so you can have
> logic to ignore that first group and then in a group that starts with
> <div1>, you can pull any <div2> elements that do not have a <div1>
> preceding sibling, which will get the <div2>s that would have formed the
> first group. No subsequent group will have <div2>s that do not have a
> <div1> preceding sibling.
>
>
>
> But this is also a case where it might be easier to pre-process your
> content before grouping, for example, to move things so that therebs
always
> a <div1> before any <div2>s or what ever it might be.
>
> I generally find these kinds of challenges are most effectively solved by
> breaking them into several steps, each one of which is relatively easy to
> implement.
>
>
>
> Cheers,
>
>
>
> E.
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/174322> (by
> email <>)
>


--
...Wendell Piez... ...wendell -at- nist -dot- gov...
...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org...
...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...

Current Thread