This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: sorting and listing



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]