Subject: Re: [xsl] Merging lines of 3 words or less From: James Cummings <cummings.james@xxxxxxxxx> Date: Thu, 8 Sep 2005 11:40:53 +0100 |
On 9/8/05, David Carlisle <davidc@xxxxxxxxx> wrote: > > Your code looked OK, but I think it's easier with for-each group, > basically you want to group adjacent lines together, starting each group > with a long line, you can express that directly: > > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> > <xsl:template match="/"><xsl:apply-templates/></xsl:template> > <xsl:template match="node()|@*" priority="-1"> > <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy> > </xsl:template> > <xsl:template match="lg"> > <lg n="{@n}"> > <xsl:for-each-group select="l" group-starting-with="l[w[4]]"> > <l n="{position()}"> > <xsl:for-each select="current-group()"> > <xsl:copy-of select="(node(),' ')"/> > </xsl:for-each> > </l> > </xsl:for-each-group> > </lg> > </xsl:template> See that is a lot shorter and seems to even make sense. I tend to still approach things in an XSLT1.0 sort of way. I'm always a bit confused by xsl:for-each group. Here it is selecting lines and then is saying that it starts with lines which have more than 4 words? Then inside the recreated line for each of the current group (which is what at this point?) it copies any node() under that? Well, at least my first attempt did work, even if it wasn't nearly so elegant. :-( -James -- James Cummings, Cummings dot James at GMail dot com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Merging lines of 3 words , David Carlisle | Thread | Re: [xsl] Merging lines of 3 words , David Carlisle |
Re: [xsl] Merging lines of 3 words , David Carlisle | Date | Re: [xsl] Merging lines of 3 words , James Cummings |
Month |