Subject: Re: 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: 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: 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
|