|
Subject: Re: [xsl] xsl:for-each-group Problem From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Wed, 21 Nov 2007 13:22:42 +0000 |
On 21/11/2007, Byomokesh Sahoo <sahoo.byomokesh@xxxxxxxxx> wrote:
> Hi All,
>
> I am facing xsl-for-each group problem in my Input xml file. Please
> see below my Input file.
>
> XML File
> ========
>
> <researcher>
> <title>Rethinking Foreign Policy</title>
> <question>Approach be abandoned?</question>
> <abstract>some Text</abstract>
> <section>Section The Issues</section>
> <para>some text</para>
> <section>Background</section>
> <para>some text</para>
> </researcher>
>
> I need ouput
> ============
>
> <researcher>
> <cover>
> <title>Rethinking Foreign Policy</title>
> <question>Approach be abandoned?</question>
> <abstract>some Text</abstract>
> </cover>
> <section label="the.issues">
> <section>Section The Issues</section>
> <para>some text</para>
> </section>
> <section label="Background">
> <section>Background</section>
> <para>some text</para>
> </section>
> </researcher>
Use:
<xsl:template match="researcher">
<xsl:for-each-group select="*" group-starting-with="section">
<xsl:choose>
<xsl:when test="current-group()[1][self::title]">
<cover>
<xsl:copy-of select="current-group()"/>
</cover>
</xsl:when>
<xsl:otherwise>
<section label="{.[self::section]}">
<xsl:copy-of select="current-group()"/>
</section>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:template>
You'll need to sort out the label attribute to be how you want it, as
its not obvious from your example output.
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] xsl:for-each-group Problem, Byomokesh Sahoo | Thread | Re: [xsl] xsl:for-each-group Proble, Florent Georges |
| [xsl] xsl:for-each-group Problem, Byomokesh Sahoo | Date | Re: [xsl] Iterating recursivly on a, ML mail |
| Month |