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>
--~--