Re: [xsl] Group problem with blank elements

Subject: Re: [xsl] Group problem with blank elements
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Thu, 30 Jun 2005 23:08:13 -0700 (PDT)
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

Current Thread