[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: grouping, sorting, splitting

Subject: Re: grouping, sorting, splitting
From: beowulf <carisenda@xxxxxxxxx>
Date: Tue, 19 Apr 2005 18:49:56 +0100
entry sorting
Many thanks to everyone who replied to help me out, the whole
pipelining things has been like a bright light in a dark corner.

Thanks again,
Stephen

On 4/19/05, Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote:
> I found another bug in my stylesheet.. (there was a
> wrong <tr> tag appearing)..
>
> Following is the modified stylesheet -
>
> <?xml version="1.0"?>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>
> <xsl:output method="html" indent="yes" />
>
> <xsl:key name="by-date" match="entry" use="@date" />
>
> <xsl:template match="/page">
>     <html>
>       <head>
>         <title/>
>       </head>
>       <body>
>         <table>
>           <xsl:for-each select="entry[generate-id() =
> generate-id(key('by-date', @date)[1])]">
>             <xsl:for-each select="key('by-date',
> @date)">
>               <xsl:sort select="title" />
>               <xsl:if test="(position() = 1) or
> ((position() - 1) mod 3 = 0)">
>                 <xsl:variable name="pos"
> select="position()" />
>                 <xsl:call-template name="generateTRs">
>                   <xsl:with-param name="node-set"
> select="key('by-date', @date)[position() >=
> $pos][position() <= ($pos + 2)]" />
>                 </xsl:call-template>
>               </xsl:if>
>             </xsl:for-each>
>             <!-- a dummy row -->
>             <tr>
>               <td>-</td><td>-</td><td>-</td>
>             </tr>
>           </xsl:for-each>
>         </table>
>       </body>
>     </html>
> </xsl:template>
>
> <xsl:template name="generateTRs">
>     <xsl:param name="node-set" />
>
>     <tr>
>       <xsl:for-each select="$node-set">
>         <td>
>           <xsl:value-of select="title" />
>         </td>
>       </xsl:for-each>
>       <xsl:call-template name="generateRemainingTDs">
>          <xsl:with-param name="n" select="3 -
> count($node-set)" />
>       </xsl:call-template>
>     </tr>
> </xsl:template>
>
> <xsl:template name="generateRemainingTDs">
>     <xsl:param name="n" />
>
>     <xsl:if test="$n > 0">
>       <td/>
>       <xsl:call-template name="generateRemainingTDs">
>         <xsl:with-param name="n" select="$n - 1" />
>       </xsl:call-template>
>     </xsl:if>
> </xsl:template>
>
> </xsl:stylesheet>
>
> For e.g., when it is applied to XML -
>
> <page>
>   <entry date="2005-04-15">
>     <title>foo</title>
>   </entry>
>   <entry date="2005-04-15">
>     <title>bar</title>
>   </entry>
>   <entry date="2005-04-15">
>     <title>baz</title>
>   </entry>
>   <entry date="2004-04-15">
>     <title>a</title>
>   </entry>
>   <entry date="2004-04-15">
>     <title>b</title>
>   </entry>
>   <entry date="2004-02-05">
>     <title>c</title>
>   </entry>
>   <entry date="2003-04-15">
>     <title>d</title>
>   </entry>
>   <entry date="2003-04-15">
>     <title>e</title>
>   </entry>
>   <entry date="2003-02-05">
>     <title>f</title>
>   </entry>
>   <entry date="2002-02-05">
>     <title>g</title>
>   </entry>
> </page>
>
> The output produced is -
>
> <html>
>    <head>
>       <meta http-equiv="Content-Type"
> content="text/html; charset=UTF-8">
>       <title></title>
>    </head>
>    <body>
>       <table>
>          <tr>
>             <td>foo</td>
>             <td>bar</td>
>             <td>baz</td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>          <tr>
>             <td>a</td>
>             <td>b</td>
>             <td></td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>          <tr>
>             <td>c</td>
>             <td></td>
>             <td></td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>          <tr>
>             <td>d</td>
>             <td>e</td>
>             <td></td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>          <tr>
>             <td>f</td>
>             <td></td>
>             <td></td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>          <tr>
>             <td>g</td>
>             <td></td>
>             <td></td>
>          </tr>
>          <tr>
>             <td>-</td>
>             <td>-</td>
>             <td>-</td>
>          </tr>
>       </table>
>    </body>
> </html>
>
> Regards,
> Mukul
>
>
> --- David Carlisle <davidc@xxxxxxxxx> wrote:
> > >
> > Actually we just said that it's better (for your
> > brain, if not for your
> > computer) to do it in two passes. I did explictly
> > note that since the
> > sorting criterion is pretty simple in this case, you
> > could probaby do it
> > in one pass.
> >
> > David
> >
> >
> ________________________________________________________________________
> > This e-mail has been scanned for all viruses by
> > Star. The
> > service is powered by MessageLabs. For more
> > information on a proactive
> > anti-virus service working around the clock, around
> > the globe, visit:
> > http://www.star.net.uk
> >
> ________________________________________________________________________
> >
> >
>
> __________________________________
> Do you Yahoo!?
> Plan great trips with Yahoo! Travel: Now over 17,000 guides!
> http://travel.yahoo.com/p-travelguide
>
>


--
"Nothing spoils fun like learning how it builds character."
Calvin, Calvin & Hobbes

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.