This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: grouping adjacent siblings
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] grouping adjacent siblings
- From: utah at digitalpulp dot com
- Date: Thu, 3 May 2001 13:02:18 -0400 (EDT)
- Reply-To: xsl-list at lists dot mulberrytech dot com
On Thu, 3 May 2001, Michael Kay wrote:
> > I am trying to transform the following...
> >
> > <frag>
> > <b>house</b>
> > <a>door</a>
> > <a>wall</a>
> > <a>room</a>
> > <b>barn</b>
> > <a>hay</a>
> > <a>cow</a>
> > <a>poo</a>
> > </frag>
> >
> You can do this with something like
>
> <xsl:for-each select="b">
> <xsl:variable name="id" select="generate-id()"/>
> <xsl:apply-templates/>
> <xsl:for-each
> select="following-sibling::a[generate-id(preceding-sibling::b[1])=$id]">
> <xsl:apply-templates/>
> </xsl:for-each>
> </xsl:for-each>
>
> Mike Kay
> Software AG
thanks Michael...
just to make sure i understand before i proceed...
so I generate a unique id for the current context of <<b>>...
(which defines a local variable named $id) then I select following <<a>>
siblings using the condition that the preceding <<b>> sibling must have
the same id. Therefore if the following <<a>> occurs after the following
<<b>> it is not included in the result...
thanks again..
Utah Ingersoll
utah@digitalpulp.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list