www/xsl/events.xsl

129 lines
4.8 KiB
XML
Raw Normal View History

<?xml version='1.0'?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:csc="http://www.csclub.uwaterloo.ca/cow"
extension-element-prefixes="csc">
<xsl:template match="events" name="events">
<tr>
<th colspan="2" class="news">Upcoming Events</th>
</tr>
<xsl:for-each select="document('../events.xml')/eventdefs/eventitem">
<xsl:sort select="translate(@date, '-', '')"
order="ascending" data-type="number" />
<xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
<tr>
<td class="eventdate"><xsl:value-of select="@date" /></td>
<td rowspan="2" valign="top" class="eventitem">
<a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
<xsl:value-of select="@title" />
</a>.
<xsl:value-of select="short" />
</td>
</tr>
<tr>
<td class="eventroom">
<xsl:value-of select="@time" />,
<xsl:value-of select="@room" />
</td>
</tr>
</xsl:if>
</xsl:for-each>
<tr>
<td class="eventitem" colspan="2">
<a href="events/">Past events</a> are available.
</td>
</tr>
</xsl:template>
<xsl:template match="events-this-term" name="events-by-term">
<p>The events for <xsl:value-of select="csc:term($date)" /> are listed here.
You can also <a href="${pre}events.ics">download an ICS</a> of them.</p>
<xsl:for-each select="document('../events.xml')/eventdefs/eventitem">
<xsl:sort select="translate(@date, '-', '')"
order="ascending" data-type="number" />
<xsl:if test="csc:term(@date) = csc:term($date)">
<h3><a href="{translate(concat($pre, 'events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}"><xsl:value-of select="@title" /></a></h3>
<p>
<strong>
<xsl:value-of select="@room" />,
<xsl:value-of select="@date" />,
<xsl:value-of select="@time" />:
</strong>
<xsl:value-of select="short" />.
</p>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="eventdefs">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="eventitem">
<xsl:document method="xml" encoding="ISO-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
<html>
<head>
<title><xsl:value-of select="@title" /></title>
<link rel="stylesheet" href="{$pre}default.css" type="text/css" />
</head>
<body><div>
<xsl:call-template name="header">
<xsl:with-param name="title" select="@title" />
</xsl:call-template>
<div>
Held in <xsl:value-of select="@room" /> at
<xsl:value-of select="@date" />, <xsl:value-of select="@time" />.
</div>
<h2>Abstract</h2>
<xsl:apply-templates select="abstract/node()" />
<xsl:call-template name="footer" />
</div></body>
</html>
</xsl:document>
</xsl:template>
<xsl:template match="generate-event-files">
<xsl:apply-templates select="document('../events.xml')/eventdefs" />
</xsl:template>
<xsl:key name="eventterm" match="/eventdefs/eventitem" use="csc:term(@date)" />
<xsl:template match="old-events">
<xsl:for-each select="document('events.xml')/eventdefs/eventitem">
<xsl:sort select="translate(@date, '-', '')"
order="descending" data-type="number" />
<xsl:if test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
<p><a href="{translate(concat('old-',csc:term(@date), '.html'), ' ', '_')}">
<xsl:value-of select="csc:term(@date)" />
</a></p>
<xsl:document method="xml" encoding="ISO-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
href="{translate(concat($root, '/events/old-', csc:term(@date), '.html'), ' ', '_')}">
<html>
<head>
<title>Events for <xsl:value-of select="csc:term(@date)" /></title>
<link rel="stylesheet" href="{$pre}default.css" type="text/css" />
</head>
<body><div>
<xsl:call-template name="header">
<xsl:with-param name="title"
select="concat('Events for ', csc:term(@date))" />
</xsl:call-template>
<xsl:call-template name="events-by-term">
<xsl:with-param name="date" select="@date" />
</xsl:call-template>
<xsl:call-template name="footer" />
</div></body>
</html>
</xsl:document>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>