Subject: RE: [xsl] XSL distinct group by date From: "Jacoby, Peter R." <PJACOBY@xxxxxxxxxxxx> Date: Mon, 25 Apr 2005 13:23:55 -0400 |
Mindy, If you want to group your elements by only the year portion of the date, then you need to change your xsl:key use attribute to only look at the year. Something like: <xsl:key name="documents-by-date" match="newsitem" use="substring(date, string-length(date)-3, 4)" /> Then you would call it with the same key('document-by-date', '2004') or in your code key('documents-by-date', substring(date, string-length(date)-3, 4)) One other piece that you may want to try is grouping more than just newsitem elements together (I couldn't tell from your original post if this is what you are looking for or not). You can use the union operator | to match on more than one named element. Something like: <xsl:key name="documents-by-date" match="newsitem | whitepapers | pressreleases" use="substring(date, string-length(date)-3, 4)" /> As you said, you could make it (slightly) simpler by storing the year in a separate element (or attribute), but it's not necessary to get the desired functionality. Hope this helps. -Peter -----Original Message----- From: Mindy McCutchan [mailto:karma@xxxxxxxxxxxxxx] Sent: Monday, April 25, 2005 12:54 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] XSL distinct group by date Hi, The grouping tutorial helped a bit, but I'm not sure how to match by just part of the content. This is the XSL I have so far: <xsl:key name="documents-by-date" match="newsitem" use="date" /> <xsl:template match="news"> <xsl:apply-templates select="newsitem[generate-id(.) = generate-id(key('documents-by-date', date)[1])]" /> </xsl:template> <xsl:template match="newsitem"> <xsl:value-of select="substring(date, string-length(date)-3, 4)" /> </xsl:template> I have it so it outputs just the year portion of the date( ex: 5/6/2004), but with the dates 5/6/2004, 5/7/2004, 4/8/2005, I want only 2004 & 2005 to show up once. Do I need to alter my xml to store the year seperately to group by it only? This is current structure: <news> <newsitem newsid="1"> <title>news release1</title> <date>5/6/2004</date> <description></description> <fulltext></fulltext> </newsitem> </news> Thanks! I'm really learning a lot. Mindy > >-----Original Message----- > >Date: Sun, 24 Apr 2005 08:56:55 +0100 > >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > >From: "Michael Kay" <mike@xxxxxxxxxxxx> > >Subject: RE: [xsl] XSL distinct group by date > > > >Are you familiar with > > > >http://www.jenitennison.com/xslt/grouping > > > >which gives the standard XSLT 1.0 approaches to grouping problems? > > > >Michael Kay > >http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL distinct group by dat, Mindy McCutchan | Thread | [xsl] xml document as parameter and, Sebastien Arbogast |
[xsl] First attempt at xsl:result-d, Spencer Tickner | Date | Re: [xsl] First attempt at xsl:resu, JBryant |
Month |