Subject: RE: [xsl] Group problem with blank elements From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 1 Jul 2005 00:07:44 +0100 |
When you do xsl:value-of select="." directly inside xsl:for-each-group, "." refers to the first item in the group. You want to output the concatenation of all the items in the group, which you can do with string-join(current-group(), ' ') Also, each empty element that's followed by another empty element is being treated as a group containing a single member. I think I would tackle this using group-adjacent="string-length(.)=0" This will create a sequence of groups, alternating a sequence of empty elements with a sequence of non-empty elements. You can then test if the first element in the current group is non-empty, and if so, output the string-join as above. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Ed Yau [mailto:eyau@xxxxxxxxxxxxxxx] > Sent: 30 June 2005 18:31 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Group problem with blank elements > > Hiya, > > Having loads of trouble with this. On the face of it a really easy > problem. > I have a bunch of elements like so: > > <statement-message>Your account is now seriously in arrears. > To</statement-message> > > <statement-message>avoid further action a payment > of</statement-message> > > <statement-message>$82.00 is required immediately. > Any</statement-message> > > <statement-message>purchases will now be declined.</statement-message> > > <statement-message> > </statement-message> > > <statement-message> More text </statement-message> > > <statement-message> > </statement-message> > > <statement-message> > </statement-message> > > <statement-message> > </statement-message> > > I want to strip out the empty tags and merge adjacent elements as > follows: > > <statement-message> Your account is now seriously in arrears. To avoid > further action a payment of > 82.00 is required immediately. Any purchases will now be > declined.</statement-message> > > <statement-message> More text </statement-message> > > My code at the moment is: > <xsl:for-each-group select="statement-message" > group-ending-with="statement-message[string-length(normalize-s > pace(follo > wing-sibling::statement-message[1]))=0]"> > <statement-message> > <xsl:value-of select="."/> > </statement-message> > </xsl:for-each-group> > > My understanding of this is that it should start grouping from the 1st > statement message, with the groups ending as soon as an empty > element is > reached. The empty tags at the end would still be there, but at least > it should do the merge. However, the result looks like: > > <statement-message>Your account is now seriously in arrears. > To</statement-message> > <statement-message> > </statement-message> > <statement-message> More text </statement-message> > <statement-message> > </statement-message> > <statement-message> > </statement-message> > <statement-message> > </statement-message> > > So where am I going wrong? > > Ed
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Group problem with blank , JBryant | Thread | RE: [xsl] Group problem with blank , Mukul Gandhi |
RE: [xsl] Building OpenURL formatte, Michael Kay | Date | [xsl] XSL related activities at Ext, B. Tommie Usdin |
Month |