xsl-list
[Top] [All Lists]

Urgent Help Needed in XSLT

2002-09-20 13:44:29
Hi XSLT Professionals,

I'm a beginner of XSLT.  I have following XML that used by a discussion group:

<?xml version="1.0" encoding="ISO-8859-1"?>
<livelink applanguage='USA' appversion='9.1.0' dtdversion='1.2'>
        <llnode created='2002-09-19T14:42:37' name='1st Topic' objname='Topic' 
size='0'>
                <message>1st Topic in Char</message>
        </llnode>
        <llnode created='2002-09-19T14:42:50' name='2nd Topic' objname='Topic' 
size='0'>
                <message>2nd Topic in Char</message>
        </llnode>
        <llnode created='2002-09-19T14:43:01' name='3rd Topic' objname='Topic' 
size='0'>
                <message>3rd Topic</message>
        </llnode>
        <llnode created='2002-09-19T14:43:09' name='4th Topic' objname='Topic' 
size='0'>
                <message>4th Topic</message>
        </llnode>
        <llnode created='2002-09-19T14:43:18'  name='5th Topic' objname='Topic' 
size='2'>
                <message>5th Topic</message>
                <llnode created='2002-09-19T14:44:47' name='1st Reply'  
objname='Reply' size='1'>
                        <message>1st Reply</message>
                        <llnode created='2002-09-19T14:47:59' name='reply'  
objname='Reply' size='1'>
                                <message>reply</message>
                                <llnode created='2002-09-19T15:09:54' 
name='reply'  objname='Reply' size='1'>
                                        <message>reply</message>
                                                <llnode 
created='2002-09-19T15:14:17' name='reply'  objname='Reply' size='0'>
                                                        <message>reply</message>
                                                </llnode>
                                </llnode>
                        </llnode>
                </llnode>
                <llnode created='2002-09-19T14:49:36' name='reply' 
objname='Reply' size='0'>
                        <message>reply</message>
                </llnode>
        </llnode>
        <llnode created='2002-09-19T14:49:08' name='6th Topic' objname='Topic' 
size='1'>
                <message>6th Topic</message>
                <llnode created='2002-09-19T14:53:47' name='reply' 
objname='Reply' size='0'>
                        <message>reply</message>
                </llnode>
        </llnode>
        <llnode created='2002-09-19T14:42:04' name='7th Topic' objname='Topic' 
size='0'>
                <message>7th Topic</message>
        </llnode>
        <llnode created='2002-09-19T14:43:26' name='8th Topic' objname='Topic' 
size='1'>
                <message>8th Topic</message>
                <llnode created='2002-09-19T14:44:34' name='1st Reply' 
objname='Reply' size='1'>
                        <message>1st Reply</message>
                        <llnode created='2002-09-19T14:50:09' name='reply' 
objname='Reply' size='0'>
                                <message>reply</message>
                        </llnode>
                        </llnode>
        </llnode>
        <llnode created='2002-09-19T14:41:36' name='9th Topic' 
parentid='-267307' size='0'>
                <message>9th Topic</message>
        </llnode>
        <llnode created='2002-09-19T14:41:53' name='10th Topic' 
parentid='-267307' size='0'>
                <message>10th Topic</message>
        </llnode>
        <llnode created='2002-09-19T15:02:00' name='11th Topic' 
parentid='-267307' size='1'>
                <message>11th Topic</message>
                <llnode created='2002-09-19T15:03:10' name='reply' 
parentid='268284' size='1'>
                        <message>reply</message>
                        <llnode created='2002-09-19T15:04:52' name='reply' 
parentid='268285' size='1'>
                                <message>reply</message>
                                <llnode created='2002-09-19T15:06:37' 
name='reply' parentid='268504' size='0'>
                                        <message>reply</message>
                                </llnode>
                        </llnode>
                </llnode>
        </llnode>
        <llnode created='2002-09-19T14:41:36' name='12th Topic' 
parentid='-267307' size='0'>
                <message>12th Topic</message>
        </llnode>
        ......
</llnode>
</livelink>

I need to create a html to get the latest 10 Discussion Topic.  I did following 
XSLT:

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"; version = 
"1.0" > 
        <xsl:output method = "html" /> 
        <xsl:template match="livelink">
                
        <html>
        <body>  
        <table>
        
        <tr>
                <td><b><br/>Latest Discussion Posts
                </b></td>
        </tr>
        
                <xsl:for-each select="//*[(_at_)objname='Topic'] | 
//*[(_at_)objname='Reply']">
                        <xsl:sort select="@created" order="descending" />
                                <xsl:if test="position() &lt; 11">
        <tr>
                <td>
                                <xsl:value-of 
select="ancestor-or-self::*[(_at_)objname='Topic']/@name" />
                                <xsl:text> - </xsl:text>
                                <xsl:value-of select="@created" />
                </td>
        </tr>
                                </xsl:if>
                </xsl:for-each>
        </table>
        </body>
        </html>
        </xsl:template>
        
</xsl:stylesheet> 

The output is as follows:

Latest Discussion Posts 
5th Topic - 2002-09-19T15:14:17
5th Topic - 2002-09-19T15:09:54
11th Topic - 2002-09-19T15:06:37
11th Topic - 2002-09-19T15:04:52
11th Topic - 2002-09-19T15:03:10
11th Topic - 2002-09-19T15:02:00
......

The above output isn't what I want.  I want each topic only display once.

I have struggled with the problem for three days.  Could you please help me 
with this?  I will really appreciate it.

Thanks in advance,
Yan

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



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