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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Process the following gro, rick@xxxxxxxxxxxxxx | Thread | Re: [xsl] Process the following gro, Wendell Piez wapiez@ |
Re: [xsl] Process the following gro, rick@xxxxxxxxxxxxxx | Date | Re: [xsl] Process the following gro, Wendell Piez wapiez@ |
Month |