[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Merging lines of 3 words or less
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|