This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: returning distinct results
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] returning distinct results
- From: Bryan Tulloch <b dot tulloch at solicitec dot com>
- Date: Thu, 30 Aug 2001 16:32:08 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
Tim,
Try select="//town[not(.=preceding::town)]" as your select
statement
Bryan
-----Original Message-----
From: Tim [mailto:xsl@cheekymail.net]
Sent: Thursday, August 30, 2001 12:55 PM
To: XSL-List@lists.mulberrytech.com
Subject: [xsl] returning distinct results
Hi,
I have a list of branches some of which are in the same town. I would
like to generate some html to display just the list of towns in a two
column list. I have the columns working but I can't work out how to
remove duplicate towns.
I am trying to order by town name and see if the previous name matches
the current but the //town[position()-1] returns an empty set.
Any ideas would be great.
Ta,
Tim.
Example XML:
<branches>
<branch>
<name>A branch</name>
<town>Aberdeen</town>
</branch>
<branch>
<name>Another branch</name>
<town>Aberdeen</town>
</branch>
<branch>
<name>Yet Another branch</name>
<town>Bournemouth</town>
</branch>
</branches>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<xsl:call-template name="alltowns"/>
</xsl:template>
<xsl:template name="alltowns">
<xsl:variable name="t-size" select="count(//town)"/>
<xsl:variable name="half" select="ceiling($t-size div
2)"/>
<table>
<tr>
<td>
<ul>
<xsl:for-each select="//town[position() <=
$half]">
<xsl:if test="position() = 1 | //town
[position()-1]/text() != ./text()">
<li><a><xsl:attribute
name="href">locationDetails.jsp?town=<xsl:value-of
select="."/></xsl:attribute><xsl:value-of select="."/></a></li>
</xsl:if>
</xsl:for-each>
</ul>
</td>
<td>
<ul>
<xsl:for-each select="//town[position() >
$half]">
<li><a><xsl:attribute
name="href">locationDetails.jsp?town=<xsl:value-of
select="."/></xsl:attribute><xsl:value-of select="."/></a></li>
</xsl:for-each>
</ul>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list