Re: [xsl] Group problem with blank elements

Subject: Re: [xsl] Group problem with blank elements
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Fri, 1 Jul 2005 01:06:49 -0700 (PDT)
Hi Prakash,
  (IMHO) XPath expressions have unique nature.
Sometimes they seem right, but they don't work.

  But with the XSLT stylesheet you posted, both
Xalan-J 2.6 and Saxon 6.5.3 are giving error.

As a wierd thought, I think the XML parser I have
does'nt work properly.

Regards,
Mukul

--- omprakash.v@xxxxxxxxxxxxx wrote:

> 
> 
> 
> 
> 
> Hi,
>         Works fine for me. Iam using xalan.
> 
> Cheers,
> prakash
> 
> 
> 
> 
>                                                     
>                                                     
>                              
>                       Mukul Gandhi                  
>                                                     
>                              
>                       <mukul_gandhi@ya         To:  
>    xsl-list@xxxxxxxxxxxxxxxxxxxxxx                  
>                              
>                       hoo.com>                 cc:  
>    (bcc: omprakash.v/Polaris)                       
>                              
>                                               
> Subject: Re: [xsl] Group problem with blank elements
>                                    
>                       07/01/2005 11:38              
>                                                     
>                              
>                       AM                            
>                                                     
>                              
>                       Please respond                
>                                                     
>                              
>                       to xsl-list                   
>                                                     
>                              
>                                                     
>                                                     
>                              
>                                                     
>                                                     
>                              
> 
> 
> 
> 
> I am sorry..
> 
> The real error is
> -----------------
> Error at xsl:apply-templates on line 67 of
> file:/C:/xml/xsleg/xslt/posgroup1.xsl
> :
>   Invalid element within xsl:apply-templates:
> Error at xsl:param on line 69 of
> file:/C:/xml/xsleg/xslt/posgroup1.xsl:
>   xsl:param must be immediately within a template,
> function or stylesheet
> Error at xsl:param on line 69 of
> file:/C:/xml/xsleg/xslt/posgroup1.xsl:
>   Variable is already declared in this template
> Error at xsl:param on line 69 of
> file:/C:/xml/xsleg/xslt/posgroup1.xsl:
>   xsl:param must be the first element within a
> template
> Transformation failed: Failed to compile stylesheet.
> 4
> errors detected.
> Press any key to continue . . .
> 
> Regards,
> Mukul
> 
> --- Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote:
> 
> > Hi Prakash,
> >   Your stylesheet look fine.. But when I run it
> with
> > Saxon 6.5.3, I get an error -
> >
> > Error on line 2 column 6 of
> > file:/C:/xml/xsleg/xslt/posgroup1.xsl:
> >   Error reported by XML parser: The processing
> > instruction target matching "[xX]
> > [mM][lL]" is not allowed.
> > Transformation failed: Failed to parse stylesheet
> >
> > Regards,
> > Mukul
> >
> > --- omprakash.v@xxxxxxxxxxxxx wrote:
> >
> > >
> > >
> > >
> > >
> > >
> > > Hi,
> > >
> > > The following xslt 1.0 stylesheet should work
> with
> > a
> > > little tweaking. If
> > > there is an easier way to do this in 1.0, Iam
> not
> > > aware of it. probably
> > > much easier in xslt 2.0.
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet version="1.0"
> > >
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > >
> > > <xsl:output method="xml" indent="yes" />
> > >
> > >
> > > <xsl:template match="/root">
> > >
> > > <xsl:apply-templates
> select="statement-message[1]"
> > > mode="wrap"/>
> > >
> > > </xsl:template>
> > >
> > > <xsl:template match="statement-message"
> > mode="wrap">
> > >
> > >
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[1][self::statement-message][not(string-length(following-sibling::*[self::statement-message])
> 
> > >  = 0)][1]" mode="nowrap">
> > > <xsl:with-param name="parent" select="."/>
> > > <xsl:with-param name="dotag" select="0"/>
> > > </xsl:apply-templates>
> > >
> > > <!--
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[1][self::statement-message]"
> > > mode="nowrap"/>
> > > -->
> > >
> > >
> > > </xsl:template>
> > >
> > > <xsl:template match="statement-message[. = '']">
> > >
> > > <xsl:value-of select="'here'"/>
> > >
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[1][self::statement-message]"
> > > mode="wrap"/>
> > > </xsl:template>
> > >
> > >
> > >
> > > <xsl:template match="statement-message"
> > > mode="nowrap">
> > > <xsl:param name="parent"/>
> > > <xsl:param name="dotag"/>
> > >
> > >
> > > <xsl:choose>
> > > <xsl:when test="number($dotag) = 0">
> > >
> > > <statement-message>
> > > <xsl:value-of select="$parent"/>
> > > <xsl:value-of select="."/>
> > >
> > > <xsl:choose>
> > > <!--
> > > <xsl:when
> > >
> >
>
test="not(string-length(following-sibling::*[self::statement-message][1])
> > > =
> > > 0)">
> > > -->
> > > <xsl:when test="not(string-length(.) = 0)">
> > >
> > >
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[self::statement-message][not(string-length(following-sibling::*[self::statement-message])
> 
> > >  = 0)][1]" mode="nowrap">
> > > <xsl:with-param name="parent" select="."/>
> > > <xsl:param name="dotag" select="1"/>
> > > </xsl:apply-templates>
> > >
> > > </xsl:when>
> > > <xsl:otherwise>
> > >
> > > <xsl:apply-templates
> select="statement-message"/>
> > > </xsl:otherwise>
> > > </xsl:choose>
> > >
> > > </statement-message>
> > > </xsl:when>
> > >
> > >
> > > <xsl:otherwise>
> > >
> > > <xsl:value-of select="."/>
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[self::statement-message][not(string-length(following-sibling::*[self::statement-message])
> 
> > >  = 0)][1]" mode="nowrap"/>
> > > </xsl:otherwise>
> > > </xsl:choose>
> > >
> > > <xsl:choose>
> > > <xsl:when
> > >
> >
>
test="string-length(following-sibling::*[self::statement-message][1])
> > > = 0">
> > >
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[1][self::statement-message]"
> > > mode="wrap"/>
> > >
> > > </xsl:when>
> > > </xsl:choose>
> > >
> > >
> > >
> > > <!--
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[self::statement-message][not(string-length(following-sibling::*[self::statement-message])
> 
> > >  = 0)][1]" mode="wrap"/>
> > > -->
> > >
> > >
> > > </xsl:template>
> > >
> > > <xsl:template match="statement-message[. = '']">
> > >
> > > <xsl:value-of select="'here'"/>
> > >
> > > <xsl:apply-templates
> > >
> >
>
select="following-sibling::*[1][self::statement-message]"
> > > mode="wrap"/>
> > >
> > > </xsl:template>
> > >
> > >
> > > </xsl:stylesheet>
> > >
> > >
> > > Hope this helps.
> > >
> > > Cheers,
> > > prakash
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> > >
> >
> > >
> > >                       "Ed Yau"
> >
> > >
> >
> > >
> > >                       <eyau@vstrading.        
> To:
> >
> > >    <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> >
> > >
> > >                       co.uk>                  
> cc:
> >
> > >    (bcc: omprakash.v/Polaris)
> >
> > >
> > >
> > > Subject: [xsl] Group problem with blank elements
> >
> > >
> > >                       06/30/2005 11:00
> >
> > >
> >
> > >
> > >                       PM
> >
> > >
> >
> > >
> > >                       Please respond
> >
> > >
> >
> > >
> > >                       to xsl-list
> >
> > >
> >
> > >
> > >
> >
> > >
> >
> > >
> > >
> >
> > >
> >
> > >
> > >
> > >
> > >
> > >
> > > 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-space(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
> > >
> > >
> > >
> > >
> > >
> > > This e-Mail may contain proprietary and
> > confidential
> > > information and is sent for the intended
> > > recipient(s) only.
> > > If by an addressing or transmission error this
> > mail
> > > has been misdirected to you, you are requested
> to
> > > delete this mail immediately.
> > > You are also hereby notified that any use, any
> > form
> > > of reproduction, dissemination, copying,
> > disclosure,
> > > modification,
> > > distribution and/or publication of this e-mail
> > > message, contents or its attachment other than
> by
> > > its intended recipient/s is strictly prohibited.
> > >
> > > Visit Us at http://www.polaris.co.in
> > >
> > >
> >
> >
> >
> >
> > __________________________________
> > Yahoo! Mail
> > Stay connected, organized, and protected. Take the
> > tour:
> > http://tour.mail.yahoo.com/mailtour.html
> >
> >
> 
> 
> 
> 
> ____________________________________________________
> Yahoo! Sports
> Rekindle the Rivalries. Sign up for Fantasy Football
> http://football.fantasysports.yahoo.com
> 
> 
> 
> 
> 
> This e-Mail may contain proprietary and confidential
> information and is sent for the intended
> recipient(s) only. 
> If by an addressing or transmission error this mail
> has been misdirected to you, you are requested to
> delete this mail immediately.
> You are also hereby notified that any use, any form
> of reproduction, dissemination, copying, disclosure,
> modification,
> distribution and/or publication of this e-mail
> message, contents or its attachment other than by
> its intended recipient/s is strictly prohibited.
> 
> Visit Us at http://www.polaris.co.in
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Current Thread