[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Merging lines of 3 words or less
You can read this as a special case of the following: <xsl:for-each-group select="line" group-starting-with="line[XXX]"> do group-heading <xsl:for-each select="current-group()"> process a line </xsl:for-each> do group-footing </xsl:for-each-group> Which means: process all the lines; before the first line and whenever you encounter one that satisfies XXX, produce a group heading; at the end of a group, produce a group footing. The value of current-group() is the set of lines making up the group you are processing at the time. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: James Cummings [mailto:cummings.james@xxxxxxxxx] > Sent: 08 September 2005 11:41 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: 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
|