xsl-list
[Top] [All Lists]

RE: XSL distinct group by date

2005-05-01 12:12:13
Peter,
My apologies for the late reply. I had another project pop up in between
this one. Thank you for the suggestion. That solved my problem. However,
I've encountered another issue. 

I've been using this as a guide:
http://sources.redhat.com/ml/xsl-list/2000-07/msg00458.html

I've slightly altered that XML set to fit the structure of my XML and it
doesn't do as I would have expected. I'm hoping someone can explain why to
me.

Altered XML:

<company>
        <projects>
                <project>
                        <name>Customer 1</name>
                </project>
                <project>
                        <name>Customer 2</name>
                </project>
                <project>
                        <name>Customer 2</name>
                </project>
        </projects>
        <papers>
                <paper>
                        <title>A Paper Title</title>
                </paper>
        </papers>
</company>

Now if I use the XSLT in the above link
(http://sources.redhat.com/ml/xsl-list/2000-07/msg00458.html), it does
return the distinct customer name values, but it also writes out the value
of the nodes outside the /projects level, yielding: Customer 1Customer 2 A
Paper Title

Any explanation of this behavior would be very helpful.

Thank you and again, my apologies for the delay in response.

Mindy

-----Original Message-----
Date: Mon, 25 Apr 2005 13:23:55 -0400
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
From: "Jacoby, Peter R." <PJACOBY(_at_)PARTNERS(_dot_)ORG>
Subject: RE: [xsl] XSL distinct group by date
Message-ID: 
<3CFEFF6C55FB5C42A6E68E9521D5C436DBC219(_at_)PHSXMB9(_dot_)partners(_dot_)org>

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=3D"documents-by-date" match=3D"newsitem" =
use=3D"substring(date,
string-length(date)-3, 4)" />

Then you would call it with the same=20
key('document-by-date', '2004')=20

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=3D"documents-by-date" match=3D"newsitem  | 
whitepapers |
pressreleases" use=3D"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



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>