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() < 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