|
Subject: Re: [xsl] Select distinct elements From: Philip.Strube@xxxxxxxxxxxxxxxxx (Philip Strube) Date: Thu, 22 Feb 2001 14:34:20 +0100 |
Hi Jakub,
> I need to select events for text output, but only once each.
> So the output should look like this:
>
> 11:00-14:00: Event 1
> 12:00-12:15: Event 2
> 15:00-15:30: Event 3
>
> I don't know, how to select each event original, when the same event is in
> input more times.
This is a grouping problem. Really classic question. Who could explain
it better than Jeni Tennison, I wonder why she didn't do already...
Solution:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:key name="event"
match="/day/hour/event"
use="name"/>
<xsl:template match="/">
<output>
<xsl:apply-templates />
</output>
</xsl:template>
<xsl:template match="day">
<xsl:for-each select="hour/event[generate-id() =
generate-id(key('event',name)[1])]">
<xsl:sort select="name"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="concat(timeFrom,'-',timeTo,': ',name)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Explanation:
see http://www.jenitennison.com/xslt/grouping/muenchian.html
Gruß, Philip
P.S. some other solution with saxon:distinct?
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Select distinct elements, Jakub Maly | Thread | [xsl] Test for PCDATA, Rush, Marc |
| Re: [xsl] 2.1 Must Allow Matching o, Dave Hartnoll | Date | RE: [xsl] string question, David Santamauro |
| Month |