[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Grouping the information - XSLT


Subject: Re: [xsl] Grouping the information - XSLT
From: Jörg Heinicke <joerg.heinicke@xxxxxx>
Date: Tue, 09 Oct 2001 15:29:28 +0200

With preceding::term[1] you select the first node called 'term' in reverse document order. What you want is something like preceding::*[1][self::term].

Joerg

Kumar V. wrote:

Hi Friends,

I have some problem in the grouping the parallel information in the XSLT. I hope, you people will provide me a solution. <term> and <def> are defined as parallel elements. <def> element can occur without <term>.

Xml Coding:
<term>A</term><def>A stands for ...</def>
<term>B</term><def>B stands for ...</def>
<def>C stands for ....</def>
<def>D stands for ....</def>
<term>E</term><def>E stands for ...</def>

Output Should be:
<p align="justify">A    A stands for ...</p>
<p align="justify">B    B stands for ...</p>
<p align="justify">C stands for ....</p>
<p align="justify">D stands for ....</p>
<p align="justify">E    E stands for ...</p>

I am using the below template to display the above output. But it is not coming perfectly.

<xsl:template match="def">
<p align="justify">
<xsl:if test="preceding::term[1]">
<xsl:value-of select="preceding::term[1]"/>
</xsl:if>
<xsl:if test="not(preceding::term)">
</xsl:if>
<xsl:apply-templates/></p>
</xsl:template>

Output using the above template

<p align="justify">A    A stands for ...</p>
<p align="justify">B    B stands for ...</p>
<p align="justify">B    C stands for ....</p>
<p align="justify">B    D stands for ....</p>
<p align="justify">E    E stands for ...</p>

Thanks in Advance.

Regards,
Kumar V.


--

System Development
VIRBUS AG
Fon +49(0)341-979-7435
Fax +49(0)341-979-7409
joerg.heinicke@xxxxxxxxx
www.virbus.de


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list




Current Thread