229bbb99dc039405cdec012582be58df5703f1ba
[www/www.git] / cscweb.xsl
1 <?xml version='1.0'?>
2
3 <xsl:stylesheet version="1.0"
4                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5                 xmlns:csc="http://www.csclub.uwaterloo.ca/cow"
6                 extension-element-prefixes="csc">
7
8 <xsl:output method="html" />
9
10 <xsl:template match="cscpage">
11
12 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
13 </xsl:text>
14 <html>
15 <head>
16  <title><xsl:value-of select="@title"/></title>
17   <style type="text/css">
18    <![CDATA[<!-- @import url('/default.css'); -->]]>
19   </style>
20 </head>
21 <body>
22 <xsl:apply-templates select="biglogo"/>
23 <xsl:apply-templates select="header">
24  <xsl:with-param name="title" select="@title"/>
25 </xsl:apply-templates>
26 <xsl:apply-templates select="section|menu"/>
27 <xsl:apply-templates select="footer"/>
28 </body>
29 </html>
30 </xsl:template>
31
32 <xsl:template match="section">
33  <h2><xsl:value-of select="@title"/></h2>
34  <xsl:apply-templates />
35 </xsl:template>
36
37 <xsl:template match="biglogo" name="menu">
38   <table cellspacing="0" cellpadding="2" border="0" align="center">
39    <tr>
40     <td width="174" rowspan="2"><img src="/logos/csc_160_70.png" alt="CSC" width="165" height="75" /></td>
41     <td>University of Waterloo</td>
42    </tr>
43    <tr>
44     <td>Computer Science Club</td>
45    </tr>
46   </table>
47 </xsl:template>
48
49 <xsl:template match="menuitem">
50     <td class="button">
51      <a href="{@href}"><img border="0" src="/buttons/{@icon}.png"
52      width="40" height="40" alt="" /></a><br />
53      <a href="{@href}"><xsl:value-of select="@title"/></a>
54     </td>
55 </xsl:template>
56
57 <xsl:template match="menudefs">
58  <table cellspacing="1" cellpadding="3" border="0" bgcolor="black" align="center">
59   <tr>
60    <xsl:apply-templates select="menuitem"/>
61   </tr>
62  </table>
63 </xsl:template>
64
65 <xsl:template match="menu" name="menu">
66  <xsl:apply-templates select="document('menu.xml')/menudefs"/>
67 </xsl:template>
68
69 <xsl:template match="header" name="header">
70   <table cellspacing="0" cellpadding="2" border="0" width="100%"
71   bgcolor="#cee6ff">
72    <tr>
73     <td width="84"><a href="/"><img src="/logos/csc_80_35.png"
74     alt="CSC" width="80" height="35" border="0" /></a></td>
75     <td class="pagetitle"><xsl:value-of select="$title"/></td>
76    </tr>
77    <tr>
78     <td colspan="2">
79      <xsl:apply-templates
80       select="document(concat($pwd,'/directory.xml'))/directory"/>
81     </td>
82    </tr>
83  </table>
84 </xsl:template>
85
86 <xsl:template match="directory">
87  [<a href="index.html"><xsl:value-of select="@title"/></a>]
88  <xsl:apply-templates match="diritem"/>
89 </xsl:template>
90
91 <xsl:template match="diritem">
92  [<a href="{@href}"><xsl:value-of select="@title"/></a>]
93 </xsl:template>
94
95 <xsl:template match="footer" name="footer">
96  <hr />
97  <xsl:call-template name="menu"/>
98  <p>
99   This page was generated on <xsl:value-of select="$date"/> at
100   <xsl:value-of select="$time"/>.
101  </p>
102  <p>
103    Copyright 2002 the Computer Science Club of the University of
104    Waterloo. Please direct website comments to the <a
105    href="mailto:www@csclub.uwaterloo.ca">Webmaster</a>. 
106  </p>
107 </xsl:template>
108
109 <xsl:template match="newsdefs">
110  <xsl:apply-templates select="newsitem"/>
111 </xsl:template>
112
113 <xsl:template match="newsitem">
114    <tr>
115     <td class="newsdate"><xsl:value-of select="@date"/></td>
116     <td rowspan="2" valign="top" class="newsitem"><xsl:apply-templates/></td>
117    </tr>
118    <tr>
119     <td class="newsauthor"><xsl:value-of select="@author"/></td>
120    </tr>
121 </xsl:template>
122
123 <xsl:template match="news" name="news">
124  <tr>
125   <th colspan="2" class="news">
126    News
127   </th>
128  </tr>
129  <xsl:apply-templates select="document('news.xml')/newsdefs"/>
130  <tr>
131   <td class="newsitem" colspan="2">
132    <a href="news/">Older news items</a> are available. Make sure you
133    check out the <a href="nntp://uw.csc">uw.csc</a> newsgroup and our
134    announcement boards on the second and third floor of MC for more
135    updates.
136   </td>
137  </tr>
138 </xsl:template>
139
140 <xsl:template match="events" name="events">
141    <tr>
142     <th colspan="2" class="news">
143      Upcoming Events
144     </th>
145    </tr>
146    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
147     <xsl:sort select="translate(@date, '-', '')"
148               order="ascending"
149               data-type="number"/>
150     <xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
151      <tr>
152       <td class="eventdate"><xsl:value-of select="@date"/></td>
153       <td rowspan="2" valign="top" class="eventitem">
154         <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
155          <xsl:value-of select="@title"/>
156         </a>.
157         <xsl:value-of select="short"/>
158       </td>
159      </tr>
160      <tr>
161       <td class="eventroom"><xsl:value-of select="@time"/>,
162       <xsl:value-of select="@room"/></td>
163      </tr>
164     </xsl:if>
165    </xsl:for-each>
166    <tr>
167     <td class="eventitem" colspan="2"><a href="events/">Past
168     events</a> are available.</td>
169    </tr>
170 </xsl:template>
171
172 <xsl:template match="eventdefs">
173  <xsl:apply-templates/>
174 </xsl:template>
175
176 <xsl:template match="eventitem">
177  <xsl:document method="html"
178   href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
179 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
180 </xsl:text>
181 <html>
182 <head>
183  <title><xsl:value-of select="@title"/></title>
184   <style type="text/css">
185    <![CDATA[<!-- @import url('/default.css'); -->]]>
186   </style>
187 </head>
188 <body>
189  <xsl:call-template name="header">
190   <xsl:with-param name="title" select="@title"/>
191  </xsl:call-template>
192  <p>
193   Held in <xsl:value-of select="@room"/> at
194   <xsl:value-of select="@date"/>, <xsl:value-of select="@time"/>.
195  </p>
196  <h2>Abstract</h2>
197  <xsl:apply-templates select="abstract"/>
198  <xsl:call-template name="footer"/>
199 </body>
200 </html>
201  </xsl:document>
202 </xsl:template>
203
204 <xsl:template match="news-and-events">
205  <table cellspacing="1" cellpadding="2" bgcolor="black">
206   <xsl:call-template name="news"/>
207   <xsl:call-template name="events"/>
208  </table>
209 </xsl:template>
210
211 <xsl:template match="events-this-term">
212   <p>The events for <xsl:value-of select="csc:term($date)"/> are listed here.</p>
213    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
214     <xsl:sort select="translate(@date, '-', '')"
215               order="ascending"
216               data-type="number"/>
217     <xsl:if test="csc:term(@date) = csc:term($date)">
218      <h3><xsl:value-of select="@title"/></h3>
219      <p>
220       <b><xsl:value-of select="@room"/>,
221       <xsl:value-of select="@date"/>, <xsl:value-of
222       select="@time"/>: </b>
223       <xsl:value-of select="short"/>
224       <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
225        More information</a>.
226      </p>
227     </xsl:if>
228    </xsl:for-each>
229 </xsl:template>
230
231 <xsl:template match="generate-event-files">
232  <xsl:apply-templates select="document('events.xml')/eventdefs"/>
233 </xsl:template>
234
235 <xsl:template match="old-events">
236  <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
237   <xsl:sort select="term"
238             order="descending"
239             data-type="number"/>
240
241  </xsl:for-each>
242 </xsl:template>
243
244 <xsl:template match="execlist">
245  <h3>Elected positions</h3>
246  <ul>
247   <xsl:apply-templates select="exec[@type='elected']"/>
248  </ul>
249  <h3>Appointed positions</h3>
250  <ul>
251   <xsl:apply-templates select="exec[@type='appointed']"/>
252  </ul>
253 </xsl:template>
254
255 <xsl:template match="exec">
256  <li><xsl:value-of select="@name"/> is this term's <b><xsl:value-of
257  select="@position"/></b>. You can <a
258  href="mailto:{@userid}@csclub.uwaterloo.ca">e-mail them</a><xsl:if
259  test="not(@href='')"> or <a href="{@href}">visit their
260  homepage</a></xsl:if>.
261  </li>
262 </xsl:template>
263
264 <xsl:template match="*">
265 <xsl:copy>
266 <xsl:copy-of select="@*" />
267 <xsl:apply-templates />
268 </xsl:copy>
269 </xsl:template>
270
271
272 </xsl:stylesheet>