This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: sorting and listing
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] Re: sorting and listing
- From: "Yang" <sfyang at unisvr dot net dot tw>
- Date: Wed, 29 Aug 2001 11:20:28 +0800
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi, hussnain
>i have the following xml file with list of members with name and city:
><?xml version="1.0"?>
><?xml-stylesheet type="text/xsl" href="members.xsl"?>
><members>
> <member>
> <name>Philips</name>
> <city>London</city>
> </member>
Your problem is a typical group problem, One of efficient method is
Muenchian method. There are a lot of posts in the list which you will
find quite a lot of helpful reading material.
For your particular applications, the xslt is as:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:key name="city" match="city" use="."/>
<xsl:key name="member" match="member" use="city"/>
<!-- get the unique city name using Muenchian method-->
<xsl:variable name="city"
select="members/member/city[generate-id(.)=generate-id(key('city',.)[1])]"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="$city">
<xsl:sort select="."/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="city">
<xsl:variable name="cityName" select="."/>
<u><h1><xsl:value-of select="$cityName"/></h1></u>
<xsl:apply-templates select="key('member',$cityName)"/>
</xsl:template>
<xsl:template match="member">
<li><xsl:value-of select="name"/></li>
</xsl:template>
</xsl:stylesheet>
Hope it will help.
Cheers,
Sunfu Yang
sfyang@unisvr.net.tw
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list