xsl-list
[Top] [All Lists]

Re: [xsl] xsl:for-each-group Problem

2007-11-21 06:23:55
On 21/11/2007, Byomokesh Sahoo <sahoo(_dot_)byomokesh(_at_)gmail(_dot_)com> 
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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>