[xsl] Re: sorting and listing

Subject: [xsl] Re: sorting and listing
From: "Yang" <sfyang@xxxxxxxxxxxxx>
Date: Wed, 29 Aug 2001 11:20:28 +0800
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@xxxxxxxxxxxxx






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


Current Thread