[xsl] Unique headers

Subject: [xsl] Unique headers
From: "Kanthi Damodaran" <kanthi_damodaran@xxxxxxxxxxx>
Date: Wed, 04 Apr 2001 13:34:13
Hi there

Following is a sample XML file

<MoviesList>
 <Movie>
   <Type>General</Type>
   <Title>Chocolat</Title>
 </Movie>
 <Movie>
   <Type>General</Type>
   <Title>Billy</Title>
 </Movie>
 <Movie>
   <Type>Mystery</Type>
   <Title>Ellen Brokovich</Title>
 </Movie>
 <Movie>
   <Type>Mystery</Type>
   <Title>Pelican Brief</Title>
 </Movie>
 <Movie>
   <Type>Horror</Type>
   <Title>Nightmare on Elm Street</Title>
 </Movie>
 <Movie>
   <Type>Horror</Type>
   <Title>Blair Witch Project</Title>
 </Movie>
 <Movie>
   <Type>General</Type>
   <Title>The Emperor's Groove</Title>
 </Movie>
 <Movie>
   <Type>General</Type>
   <Title>Toy Story</Title>
 </Movie>
</MoviesList>

And I want the output to be as follows -

Chocolat
Billy
Mystery
 Ellen Brokovich
 Pelican Brief
Horror
 Nightmare on Elm Street
 Blair Witch Project
The Emperor's Groove
Toy Story

My XSL file looks like this :-

<xsl:variable name="grpTypes" select="'Mystery Horror'"/>
<xsl:template match="text()"/>
 <xsl:template match="Type">
   <xsl:choose>
     <xsl:when test="contains($grpTypes, concat(' ', .))">
       <xsl:if test="not(. = preceding::Type)">
         <xsl:value-of select="concat(., '&#xA;')"/>
       </xsl:if>
       <xsl:value-of select="../Title"/>
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="../Title"/>
     </xsl:otherwise>
   </xsl:choose>
   <xsl:text>&#xA;</xsl:text>
 </xsl:template>

But the output I get it is :-

Chocolat
Billy
Mystery
 Ellen Brokovich
Mystery
 Pelican Brief
Horror
 Nightmare on Elm Street
Horror
 Blair Witch Project
The Emperor's Groove
Toy Story

Any ideas on how to get this done correctly?  Thanks in advance.
Kanthi


_________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com


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



Current Thread