Re: [xsl] Multiple for-each-group in a single template

Subject: Re: [xsl] Multiple for-each-group in a single template
From: "Vasu Chakkera" <vasucv@xxxxxxxxx>
Date: Thu, 20 Nov 2008 11:13:13 +0000
Good.
David has replied back with that assumption of input XML.
Vasu

On Thu, Nov 20, 2008 at 11:12 AM, V.Ramkumar
<v.ramkumar@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> Well formed Input only I am using. Mistakes happened when I compose a
> mail(sample input)
>
> <body>
>       <p class="heading-1">Heading 1</p>
>               <p>para 1</p>
>               <p class="box">para 2</p>
>               <p class="box">para 3</p>
>               <p>para 4</p>
>       <p class="heading-2">Heading 2</p>
>               <p>para 1</p>
>               <p class="exercise">para 2</p>
>               <p class="exercise">para 3</p>
>               <p>para 4</p>
> </body>
>
>
> Regards,
> Ramkumar
>
> -----Original Message-----
> From: Vasu Chakkera [mailto:vasucv@xxxxxxxxx]
> Sent: Thursday, November 20, 2008 4:38 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Multiple for-each-group in a single template
>
> Your XML is not wel formed.  if you could send back the XML that is
> properly closes ( see the h1, h2, and p class= "heading.. ) is not
> closed.
> its hard to device a solution with out knowing the correct input.
>
> <body>
>       <p class="heading-1">Heading 1</p>
>               <p>para 1</p>
>               <p class="box">para 2</p>
>               <p class="box">para 3</p>
>               <p>para 4</p>
>       <p class="heading-2">Heading 2</p>
>               <p>para 1</p>
>               <p class="exercise">para 2</p>
>               <p class="exercise">para 3</p>
>               <p>para 4</p>
> </body>
>
> Vasu
>
>> Hi List,
>>
>> I am getting duplicate when use multiple for-each-group in a single
> template
>> (based on single parent). Please find mistakes in my xslt.
>>
>> Input:
>> <body>
>>        <p class="heading-1">Heading 1</h1>
>>                <p>para 1</p>
>>                <p class="box">para 2</p>
>>                <p class="box">para 3</p>
>>                <p>para 4</p>
>>        <p class="heading-2">Heading 2</h2>
>>                <p>para 1</p>
>>                <p class="exercise">para 2</p>
>>                <p class="exercise">para 3</p>
>>                <p>para 4</p>
>> </body>
>>
>> Exp.Output:
>>
>> <body>
>>        <section title="Heading-1">
>>                <p>para 1</p>
>>                <box>
>>                        <p>para 2</p>
>>                        <p>para 3</p>
>>                </box>
>>                        <p>para 4</p>
>>        </section>
>>        <section title="Heading-2">
>>                <p>para 1</p>
>>                <excecise>
>>                        <p>para 2</p>
>>                        <p>para 3</p>
>>                </excecise>
>>                <p>para 4</p>
>>        </section>
>> </body>
>>
>> My XSLT: (sample)
>>        <xsl:template match="body">
>>        <body>
>>                        <xsl:for-each-group select="*"
>> group-adjacent="string(self::p/@class[contains(.,'box')])">
>>                        <xsl:choose>
>>                                <xsl:when
>> test="self::p/@class[contains(.,'box')]">
>>                                        <box>
>>                                                <xsl:apply-templates
>> select="current-group()"/>
>>                                        </box>
>>                                </xsl:when>
>>                                <xsl:otherwise>
>>                                        <xsl:apply-templates
>> select="current-group()"/>
>>                                </xsl:otherwise>
>>                        </xsl:choose>
>>                        </xsl:for-each-group>
>>                <xsl:for-each-group select="*"
>> group-adjacent="string(self::p/@class[contains(.,'exercise')])">
>>                        <xsl:choose>
>>                                <xsl:when
>> test="self::p/@class[contains(.,'exercise')]">
>>                                        <exercise>
>>                                                <xsl:apply-templates
>> select="current-group()"/>
>>                                        </exercise>
>>                                </xsl:when>
>>                                <xsl:otherwise>
>>                                        <xsl:apply-templates
>> select="current-group()"/>
>>                                </xsl:otherwise>
>>                        </xsl:choose>
>>                </xsl:for-each-group>
>> ......like wise section and all
>>
>>        </body>
>>
>> Regards,
>> Ramkumar
>>
>>
>
>
>
> --
> Vasu Chakkera
> Numerical Algorithms Group Ltd.
> Oxford
> www.vasucv.com
>
>



-- 
Vasu Chakkera
Numerical Algorithms Group Ltd.
Oxford
www.vasucv.com

Current Thread