Subject: RE: [xsl] Positional grouping with exceptions From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 20 Dec 2006 15:11:12 -0000 |
Try <xsl:template match="book"> <book> <xsl:for-each-group select="*" group-starting-with="self::a[not(child::text())] | self::a[not(preceding-sibling::*[1][self::a])] | *[not(self::a)]"> <xsl:choose> <xsl:when test="self::a[not(child::text())]"> <a1><xsl:copy-of select="remove(current-group(),1)"/></a1> </xsl:when> <xsl:when test="self::a"> <a1><xsl:copy-of select="current-group()"/></a1> </xsl:when> <xsl:otherwise> <xsl:copy-of select="current-group()"/> Not tested. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Fredrik Geers [mailto:fredrik@xxxxxxxxxx] > Sent: 20 December 2006 14:48 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Positional grouping with exceptions > > I have the following xml: > > <book> > <header>title</header> > <a>text</a> > <a>text</a> > <otherelement>title</otherelement> > <a>text</a> > <a>text</a> > <a/> > <a>text</a> > </book> > > I want to group each block of consecutive <a> tags inside an > <al> tag, like this: > > <book> > <header>title</header> > <al> > <a>text</a> > <a>text</a> > </al> > <otherelement>title</otherelement> > <al> > <a>text</a> > <a>text</a> > </al> > <al> > <a>text</a> > </al> > </book> > > And like you can see in the example, I want to start a new > <al> block when an empty <a> tag is found. That's the hard > part. Well, the other part also isn't that easy... > > I can't use the technique described on > http://www.dpawson.co.uk/xsl/sect2/N4486.html#d5280e424, > because the <a> nodes are not always preceded by an element > that marks a new group. > > What would be the best technique to solve this? I'm using > Saxon 8.7.1 and XSLT 2.0. > > -- > Fredrik Geers
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Positional grouping with exce, Fredrik Geers | Thread | Re: [xsl] Positional grouping with , Andrew Welch |
Re: [xsl] Safe-guarding codepoints-, Andrew Welch | Date | Re: [xsl] Safe-guarding codepoints-, Florent Georges |
Month |