RE: [xsl] Grouping Titles under Correct Category

Subject: RE: [xsl] Grouping Titles under Correct Category
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 11 May 2007 21:09:38 +0100
This is a completely standard grouping problem. Grouping is much easier in
XSLT 2.0 using xsl:for-each-group, but if you really need to stick with 1.0,
go to http://www.jenitennison.com/xslt/grouping to learn how to do it.

This code:

string-length(category) != string-length(following::category)

is wildly out.

And why do you want to disable-output-escaping?

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: Brent Solly [mailto:free12spir@xxxxxxxxx] 
> Sent: 11 May 2007 20:37
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Grouping Titles under Correct Category
> 
> Input XML
> ----------
> <?xml version="1.0" encoding="UTF-8"?>
> <rss>
> <channel>   
>       <item>
>          <title>Ogre Battle is sold out</title>
>          <description> There is a high demand for this rare 
> game.</description>
>          <category>SNES</category>       
>       </item>
>       <item>
>          <title>Final Fantasy 3 Breaks FF2 Record</title>
>          <description>It was thought impossible to outdo FF2 
> gameplay.</description>
>          <category>SNES</category>  
>       </item>
>       <item>
>          <title>SNES is the Ultimate System</title>
>          <description>This new system has revolutionized 
> controller design.</description>
>          <category>SNES</category>   
>       </item>
>       <item>
>          <title>Sonic The Hedgehog an instant success</title>
>          <description>A new Mario is been born.</description>
>          <category>SEGA Genesis</category>
>       </item>
>       <item>
>          <title>Joe Montanna Talking Football is amazing</title>
>          <description>Listen play by play in this new form of 
> football game.</description>
>          <category>SEGA Genesis</category>
>       </item>
>  </channel>
> </rss>
> ----------------
> 
> Stylesheet
> -----------
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
> <xsl:strip-space elements="*" />
> <xsl: output method="html" encoding="UTF-8"/>
> <!--Author: Brent Solly-->
> <!--Games -->
> <xsl:template name="body" match="/">
>     <xsl:choose>
> 	    <xsl:when test="rss/channel/generator = 'Systems'">
>    <!-- Lists all categories, but not at top of titles
> -->
>  <xsl:for-each select="rss/channel/item">
>      <xsl:variable name="tracker"
> select="position()-1"/>
>       <xsl:if test="category != ''">
>         <xsl:if test="string-length(category) != 
> string-length(following::category)">
>            <b><xsl:value-of
> select="category"/></b><br/>         
>          </xsl:if>
>       <xsl:value-of select="//item[$tracker]/title"
> disable-output-escaping="yes"/><br/> 
>       </xsl:if> 
>    </xsl:for-each>
>   </xsl:when>
>   </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
> -----------
> 
> 
> 
> Desired Output
> --------------
> SNES
>   Ogre Battle is sold out
>   Final Fantasy 3 Breaks FF2 Record
>   SNES is the ultimate system
> 
> SEGA Genesis
>   Sonic The Hedgehog an instant success
>   Joe Montanna Talking Football is amazing
>   
> ---------------
> 
> 
> Output Received
> --------------------------
> Ogre Battle is sold out
> SNES
> Final Fantasy 3 Breaks FF2 Record
> SNES is the Ultimate System
> SEGA Genesis
> Sonic The Hedgehog an instant success
> ------------------------------
> 
> Is there anyway to achieve the Desired Output?  I have seen 
> many hints, but still no luck.
> 
> I'm using the Cooktop development environment.  Its a 
> freeware, and not supported anymore, but still works nicely.
> Processor Version: XSLT Processor VersionVendor:
> TransformiixVendor 
> 
> version="1.0"
> 
> 
> Any state, any entity, any ideology that fails to recognize 
> the worth, the dignity, the rights of man - That state is obsolete.
> -spooky man from Twilight Zone (1961)
> 
> http://s8.invisionfree.com/Solo_Tee_and_Company/index.php?act=idx

Current Thread