|
Subject: RE: [xsl] Getting unique nodes filtering by several attributes and mixing files From: Jarno.Elovirta@xxxxxxxxx Date: Tue, 25 Nov 2003 10:45:23 +0200 |
Hi,
> One of the XML files (week_schedule.xml) is the list of
> programs to be on
> air for
> two different TV channels. This list contains an "onAir" node for each
> advertisment
> (commercials) block. It's the only way to know which programs
> will be on air
> next
> week, yes :(
…
> <!-- my_would_be_even_better_result.xml -->
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <tv>
> <program progName='Friends' date='17/11/2003'
> channel='1' weekDay='Mon' start='10:00' end='10:45'
> ads='10:15,10:30'/>
> <program progName='Friends' date='23/11/2003'
> channel='1' weekDay='Sun' start='09:00' end='09:45'
> ads='14:15,14:30,...'/>
> <program progName='X-Files' date='22/11/2003'
> channel='2' weekDay='Sat' start='14:00' end='15:30'
> ads='09:15,09:30'/>
> </tv>
<xsl:variable name="sep" select="''"/>
<xsl:variable name="schedule" select="document('week_schedule.xml', /)"/>
<xsl:key name="lookup" match="onAir" use="concat(@progName, $sep, @weekDay, $sep, @channel)"/>
<xsl:template match="programs">
<tv>
<xsl:for-each select="program">
<xsl:copy>
<xsl:variable name="key" select="concat(@progName, $sep, @weekDay, $sep, @channel)"/>
<xsl:for-each select="$schedule">
<xsl:variable name="air" select="key('lookup', $key)"/>
<xsl:copy-of select="$air/@date"/>
<xsl:attribute name="adsAt">
<xsl:for-each select="$air/@adsAt">
<xsl:if test="not(position() = 1)">,</xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:attribute>
</xsl:for-each>
<xsl:copy-of select="@*"/>
</xsl:copy>
</xsl:for-each>
</tv>
</xsl:template>
Will you get you almost there, you just need to add sorting based on program name and airdate—you need to do a look up to get the date, but you can't use the key for that, sorry. See the FAQ on how to sort dates.
Cheers,
Jarno - Revolution By Night: Faithless (Edit) (by Ronan Harris)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Getting unique nodes filterin, Iván Montoro Ten | Thread | RE: [xsl] Getting unique nodes filt, Iván Montoro Ten |
| Re: [xsl] Re: Re: Sibling in the Pa, Dongling Ding | Date | RE: [xsl] parsing post script, Michael Müller-Hille |
| Month |