Subject: RE: 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: 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
|