plz... work
[www/www.git] / cscweb.xsl
1 <?xml version='1.0'?>
2
3 <xsl:stylesheet version="1.1"
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 XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
13 </xsl:text>
14 <html xmlns="http://www.w3.org/1999/xhtml">
15 <head>
16  <title><xsl:value-of select="@title"/></title>
17   <link rel="stylesheet" href="/default.css" type="text/css" />
18   <style type="text/css">
19    <![CDATA[<!-- @import url('/default.css'); -->]]>
20   </style>
21 </head>
22 <body bgcolor="#ffffff">
23 <xsl:apply-templates select="biglogo"/>
24 <xsl:apply-templates select="header">
25 <xsl:with-param name="title" select="@title"/>
26 </xsl:apply-templates>
27 <xsl:apply-templates select="section|menu"/>
28 <xsl:apply-templates select="footer"/>
29 </body>
30 </html>
31 </xsl:template>
32
33 <xsl:template match="section">
34  <xsl:if test="@id != ''"><a id="{@id}" /></xsl:if>
35  <h2><xsl:value-of select="@title"/></h2>
36  <xsl:apply-templates />
37 </xsl:template>
38
39 <xsl:template match="biglogo" name="biglogo">
40   <table cellspacing="0" cellpadding="0" border="0" align="center">
41    <tr>
42     <td width="109"><a href="http://www.uwaterloo.ca/"><img
43     src="/logos/uw_logo_100_68.gif" alt="University of Waterloo"
44     width="100" height="68" align="center" border="0" /></a></td>
45     <td width="174"><a href="/"><img src="/logos/csc_160_70.png"
46     alt="Computer Science Club" width="165" height="75" align="center"
47     border="0" /></a></td>
48     <td width="91"><a href="http://www.acm.org"><img width="82"
49     height="103" src="/logos/acm_logo.gif" alt="A Student Chapter of
50     the ACM" align="center" border="0" /></a></td>
51    </tr>
52   </table>
53 </xsl:template>
54
55 <xsl:template match="mediafile" >
56         <xsl:param name="ext" />
57         <xsl:param name="pre" />
58         ,<a href="{$pre}/media/files/{@file}{$ext}"><xsl:value-of select="@type" />(<xsl:value-of select="@size" />)</a>
59 </xsl:template>
60
61 <xsl:template match="mediaitem">
62          <xsl:document method="html"
63   href="{translate(concat($root, '/media/', @title , '.html'), ' ', ' ')}">
64 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
65 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
66 </xsl:text>
67 <html xmlns="http://www.w3.org/1999/xhtml">
68 <head>
69  <title><xsl:value-of select="@title"/></title>
70   <style type="text/css">
71    <![CDATA[<!-- @import url('/default.css'); -->]]>
72   </style>
73 </head>
74 <body bgcolor="#ffffff">
75  <xsl:call-template name="header">
76   <xsl:with-param name="title" select="@title"/>
77  </xsl:call-template>
78  <h2>Abstract</h2>
79  <p>
80  <xsl:apply-templates select="abstract"/>
81  </p>
82  <p>
83  Download <xsl:value-of select="@title"/> in a number of formats via 
84 <ul>
85 <li>bittorrent
86  <xsl:param name="ext">Unset</xsl:param>
87  <xsl:apply-templates select="mediafile" >
88  <xsl:with-param name="ext">.torrent</xsl:with-param>
89  </xsl:apply-templates>
90 </li>
91 <li>
92  via dijjer (a mostly seemless bittorrent alternative):
93  <xsl:apply-templates select="mediafile" >
94  <xsl:with-param name="pre">http://dijjer.org/get/http://www.csclub.uwaterloo.ca</xsl:with-param>
95  </xsl:apply-templates>
96 </li>
97 <li>
98  via http (regular web browser):
99  <xsl:apply-templates select="mediafile" >
100  <xsl:with-param name="ext"></xsl:with-param>
101  </xsl:apply-templates>
102 </li>
103 </ul>
104 </p>
105  <xsl:call-template name="footer"/>
106 </body>
107 </html>
108  </xsl:document>
109         <li><a href= "{@title}.html"><xsl:value-of select="@title" /></a> - <xsl:apply-templates select="mediafile" /></li>
110 </xsl:template>
111
112 <xsl:template match="menuitem">
113     <td align="center" class="menuitem">
114      <a href="{@href}"><img border="0" src="/buttons/{@icon}.png"
115      width="40" height="40" alt="" /><!--</a>--><br />
116      <!--<a href="{@href}">--><xsl:value-of select="@title"/></a>
117     </td>
118 </xsl:template>
119
120 <xsl:template match="menudefs">
121  <div class="menuspace">
122  <table cellspacing="0" cellpadding="0" border="0" align="center" class="menubar">
123   <tr>
124    <xsl:apply-templates select="menuitem"/>
125   </tr>
126  </table>
127  </div>
128 </xsl:template>
129
130 <xsl:template match="menu" name="menu">
131  <xsl:apply-templates select="document('menu.xml')/menudefs"/>
132 </xsl:template>
133
134 <xsl:template match="header" name="header">
135   <div class="webtitle"><div class="webtitle-inner"><a href="/"
136     class="link2home"><img src="/logos/csc_title.png"/></a></div></div>
137   <table cellspacing="0" cellpadding="2" border="0" width="100%"
138   class="template-header">
139    <tr>
140     <!--<td width="84"><a href="/"><img src="/logos/csc_80_35.png"
141     alt="CSC" width="80" height="35" border="0" /></a></td>-->
142     <td colspan="2" class="pagetitle"><xsl:value-of select="$title"/></td>
143    </tr>
144    <tr>
145     <td colspan="2">
146      <xsl:apply-templates
147       select="document(concat($pwd,'/directory.xml'))/directory"/>
148     </td>
149    </tr>
150  </table>
151 </xsl:template>
152
153 <xsl:template match="directory">
154  [<xsl:if test="@href = ''"><a href="index.html"><xsl:value-of
155  select="@title"/></a></xsl:if><xsl:if test="@href != ''">
156       <a href="{@href}"><xsl:value-of select="@title"/></a></xsl:if>]
157  <xsl:apply-templates match="diritem"/>
158 </xsl:template>
159
160 <xsl:template match="diritem">
161  [<a href="{@href}"><xsl:value-of select="@title"/></a>]
162 </xsl:template>
163
164 <xsl:template match="footer" name="footer">
165  <hr />
166  <xsl:call-template name="menu"/>
167  <p>
168   This page was generated on <xsl:value-of select="$date"/> at
169   <xsl:value-of select="$time"/>.
170  </p>
171  <p>
172    Copyright
173    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
174    2002<xsl:text disable-output-escaping="yes">&amp;ndash;</xsl:text>2007
175    Computer Science Club of the University of Waterloo.<br />
176    KDE Crystal theme icons are copyright
177    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
178    2002 and following years KDE Artists.<br />
179    Please direct website comments to the <a
180    href="mailto:www@csclub.uwaterloo.ca">Webmaster</a>.
181  </p>
182 </xsl:template>
183
184 <xsl:template match="newsdefs">
185  <xsl:apply-templates select="newsitem[csc:term(@date) = csc:term($date)]">
186    <xsl:sort select="translate(@date, '-', '')"
187              order="descending"
188              data-type="number"/>
189  </xsl:apply-templates>
190 </xsl:template>
191
192 <xsl:template match="newsitem">
193    <tr>
194     <td class="newsdate" bgcolor="#eeeeff"><xsl:value-of select="@date"/></td>
195     <td rowspan="2" valign="top" class="newsitem" bgcolor="white"><xsl:apply-templates/></td>
196    </tr>
197    <tr>
198     <td class="newsauthor" bgcolor="#eeeeff"><xsl:value-of select="@author"/></td>
199    </tr>
200 </xsl:template>
201
202 <xsl:template match="news" name="news">
203  <tr>
204   <th colspan="2" class="news" bgcolor="#aaaaff">
205    News
206   </th>
207  </tr>
208  <xsl:apply-templates select="document('news.xml')/newsdefs"/>
209  <tr>
210   <td class="newsitem" bgcolor="white" colspan="2">
211    <a href="news/">Older news items</a> are available. Make sure you
212    check out the <a href="/newsgroup/thread.php?group=uw.csc">uw.csc</a> newsgroup and our
213    announcement boards on the second and third floor of MC for more
214    updates.
215   </td>
216  </tr>
217 </xsl:template>
218
219 <xsl:template match="events" name="events">
220    <tr>
221     <th colspan="2" class="news" bgcolor="#aaaaff">
222      Upcoming Events
223     </th>
224    </tr>
225    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
226     <xsl:sort select="translate(@date, '-', '')"
227               order="ascending"
228               data-type="number"/>
229     <xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
230      <tr>
231       <td class="eventdate" bgcolor="#eeffee"><xsl:value-of select="@date"/></td>
232       <td rowspan="2" valign="top" class="eventitem" bgcolor="white">
233         <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
234          <xsl:value-of select="@title"/>
235         </a>.
236         <xsl:value-of select="short"/>
237       </td>
238      </tr>
239      <tr>
240       <td class="eventroom" bgcolor="#eeffee"><xsl:value-of select="@time"/>,
241       <xsl:value-of select="@room"/></td>
242      </tr>
243     </xsl:if>
244    </xsl:for-each>
245    <tr>
246     <td class="eventitem" bgcolor="white" colspan="2"><a href="events/">Past
247     events</a> are available.</td>
248    </tr>
249 </xsl:template>
250
251 <xsl:template match="eventdefs">
252  <xsl:apply-templates/>
253 </xsl:template>
254
255 <xsl:template match="eventitem">
256  <xsl:document method="html"
257   href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
258 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
259 </xsl:text>
260 <html xmlns="http://www.w3.org/1999/xhtml">
261 <head>
262  <title><xsl:value-of select="@title"/></title>
263   <style type="text/css">
264    <![CDATA[<!-- @import url('/default.css'); -->]]>
265   </style>
266 </head>
267 <body bgcolor="#ffffff">
268  <xsl:call-template name="header">
269   <xsl:with-param name="title" select="@title"/>
270  </xsl:call-template>
271  <p>
272   Held in <xsl:value-of select="@room"/> at
273   <xsl:value-of select="@date"/>, <xsl:value-of select="@time"/>.
274  </p>
275  <h2>Abstract</h2>
276  <xsl:apply-templates select="abstract"/>
277  <xsl:call-template name="footer"/>
278 </body>
279 </html>
280  </xsl:document>
281 </xsl:template>
282
283 <xsl:template match="news-and-events">
284  <table cellspacing="1" cellpadding="2" bgcolor="black">
285   <xsl:call-template name="events"/>
286   <xsl:call-template name="news"/>
287  </table>
288 </xsl:template>
289
290 <xsl:template match="events-this-term" name="events-by-term">
291   <p>The events for <xsl:value-of select="csc:term($date)"/> are listed here.</p>
292    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
293     <xsl:sort select="translate(@date, '-', '')"
294               order="ascending"
295               data-type="number"/>
296     <xsl:if test="csc:term(@date) = csc:term($date)">
297      <h3><a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}"><xsl:value-of select="@title"/></a></h3>
298      <p>
299       <b><xsl:value-of select="@room"/>,
300       <xsl:value-of select="@date"/>, <xsl:value-of
301       select="@time"/>: </b>
302       <xsl:value-of select="short"/>
303       <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
304        More information</a>.
305      </p>
306     </xsl:if>
307    </xsl:for-each>
308 </xsl:template>
309
310 <xsl:template match="news-this-term" name="news-by-term">
311   <p>The news for <xsl:value-of select="csc:term($date)"/> is listed here.</p>
312    <xsl:for-each select="document('news.xml')/newsdefs/newsitem">
313     <xsl:sort select="translate(@date, '-', '')"
314               order="descending"
315               data-type="number"/>
316     <xsl:if test="csc:term(@date) = csc:term($date)">
317      <p>
318       <b><xsl:value-of select="@date"/>,
319          <xsl:value-of select="@author"/>: </b> <xsl:apply-templates/>
320      </p>
321     </xsl:if>
322    </xsl:for-each>
323 </xsl:template>
324
325 <xsl:template match="members-this-term">
326   <p>The members for <xsl:value-of select="csc:term($date)"/> are
327   listed here. We currently have <xsl:value-of
328   select="count(document('members.xml')/memberlist/member)"/> members.</p>
329   <table>
330     <tr>
331       <th>Member ID</th>
332       <th>Name</th>
333       <th>Program</th>
334     </tr>
335     <xsl:for-each select="document('members.xml')/memberlist/member">
336       <tr>
337         <xsl:if test="position() mod 2 = 0">
338           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
339         </xsl:if>
340         <td><xsl:value-of select="@id"/></td>
341         <td><xsl:value-of select="@name"/></td>
342         <td><xsl:value-of select="@program"/></td>
343       </tr>
344     </xsl:for-each>
345   </table>
346 </xsl:template>
347
348 <xsl:template match="all-books">
349   <p>The books we currently own include:</p>
350   <table>
351     <tr>
352       <th>Title</th>
353       <th>Author</th>
354     </tr>
355     <xsl:for-each select="document('books.xml')/booklist/book">
356       <tr>
357         <xsl:if test="position() mod 2 = 0">
358           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
359         </xsl:if>
360         <td><a href="/office/books/{translate(@isbn, ' ', '_')}.html"><xsl:value-of
361         select="@title"/><xsl:if test="@edition != ''"> (<xsl:value-of
362         select="@edition"/>)</xsl:if></a></td>
363         <td><xsl:value-of select="@author"/></td>
364       </tr>
365 <xsl:document method="html" href="{translate(concat($root, '/office/books/', @isbn, '.html'), ' ', '_')}">
366 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
367 </xsl:text>
368 <html xmlns="http://www.w3.org/1999/xhtml">
369 <head>
370  <title>Book: <xsl:value-of select="@title"/></title>
371   <style type="text/css">
372    <![CDATA[<!-- @import url('/default.css'); -->]]>
373   </style>
374 </head>
375 <body bgcolor="#ffffff">
376  <xsl:call-template name="header">
377     <xsl:with-param name="title" select="@title"/>
378     <xsl:with-param name="pwd" select="concat($pwd, '/books')"/>
379  </xsl:call-template>
380 <p>
381  <b>Title: </b> <xsl:value-of select="@title"/><br />
382  <b>Edition: </b> <xsl:value-of select="@edition"/><br />
383  <b>ISBN: </b> <xsl:value-of select="@isbn"/><br />
384  <b>Author: </b> <xsl:value-of select="@author"/><br />
385  <b>Published: </b> <xsl:value-of select="@published"/><br />
386 </p>
387   <xsl:call-template name="footer"/>
388 </body>
389 </html>
390  </xsl:document>
391     </xsl:for-each>
392   </table>
393 </xsl:template>
394
395 <xsl:template match="generate-event-files">
396  <xsl:apply-templates select="document('events.xml')/eventdefs"/>
397 </xsl:template>
398
399 <xsl:key name="eventterm"
400     match="/eventdefs/eventitem"
401     use="csc:term(@date)" />
402
403   <xsl:template match="old-events">
404     <xsl:for-each
405       select="document('events.xml')/eventdefs/eventitem">
406
407      <xsl:sort select="translate(@date, '-', '')"
408               order="descending"
409               data-type="number"/>
410
411       <xsl:if
412               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
413         <p><a href="{translate(concat('old-',
414         csc:term(@date), '.html'), ' ', '_')}">
415             <xsl:value-of
416               select="csc:term(@date)"/></a></p>
417  <xsl:document method="html" href="{translate(concat($root, '/events/old-', csc:term(@date), '.html'), ' ', '_')}">
418 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
419 </xsl:text>
420 <html xmlns="http://www.w3.org/1999/xhtml">
421 <head>
422  <title>Events for <xsl:value-of select="csc:term(@date)"/></title>
423   <style type="text/css">
424    <![CDATA[<!-- @import url('/default.css'); -->]]>
425   </style>
426 </head>
427 <body bgcolor="#ffffff">
428  <xsl:call-template name="header">
429   <xsl:with-param name="title" select="concat('Events for ', csc:term(@date))"/>
430  </xsl:call-template>
431  <xsl:call-template name="events-by-term">
432    <xsl:with-param name="date" select="@date"/>
433  </xsl:call-template>
434  <xsl:call-template name="footer"/>
435 </body>
436 </html>
437  </xsl:document>
438       </xsl:if>
439     </xsl:for-each>
440   </xsl:template>
441   
442 <xsl:key name="newsterm"
443     match="/newsdefs/newsitem"
444     use="csc:term(@date)" />
445
446   <xsl:template match="old-news">
447     <xsl:for-each
448       select="document('news.xml')/newsdefs/newsitem">
449
450      <xsl:sort select="translate(@date, '-', '')"
451               order="descending"
452               data-type="number"/>
453
454       <xsl:if
455               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
456         <p><a href="{translate(concat('old-',
457         csc:term(@date), '.html'), ' ', '_')}">
458             <xsl:value-of
459               select="csc:term(@date)"/></a></p>
460  <xsl:document method="html" href="{translate(concat($root, '/news/old-', csc:term(@date), '.html'), ' ', '_')}">
461 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
462 </xsl:text>
463 <html xmlns="http://www.w3.org/1999/xhtml">
464 <head>
465  <title>News for <xsl:value-of select="csc:term(@date)"/></title>
466   <style type="text/css">
467    <![CDATA[<!-- @import url('/default.css'); -->]]>
468   </style>
469 </head>
470 <body bgcolor="#ffffff">
471  <xsl:call-template name="header">
472   <xsl:with-param name="title" select="concat('News for ', csc:term(@date))"/>
473  </xsl:call-template>
474  <xsl:call-template name="news-by-term">
475    <xsl:with-param name="date" select="@date"/>
476  </xsl:call-template>
477  <xsl:call-template name="footer"/>
478 </body>
479 </html>
480  </xsl:document>
481       </xsl:if>
482     </xsl:for-each>
483   </xsl:template>
484   
485 <xsl:template match="execlist">
486  <h3>Elected positions</h3>
487  <ul>
488   <xsl:apply-templates select="exec[@type='elected']"/>
489  </ul>
490  <h3>Appointed positions</h3>
491  <ul>
492   <xsl:apply-templates select="exec[@type='appointed']"/>
493  </ul>
494 </xsl:template>
495
496 <xsl:template match="exec">
497  <li><xsl:value-of select="@name"/> is this term's <b><xsl:value-of
498  select="@position"/></b>. You can <a
499  href="mailto:{@userid}@csclub.uwaterloo.ca">e-mail the <xsl:value-of select="@position"/></a><xsl:if
500  test="not(@href='')"> or <a href="{@href}">visit 
501  <xsl:choose>
502   <xsl:when test="@sex='male'"> his </xsl:when>
503   <xsl:when test="@sex='female'"> her </xsl:when>
504   <xsl:otherwise> his or her </xsl:otherwise>
505  </xsl:choose>
506  homepage</a></xsl:if>.
507  </li>
508 </xsl:template>
509
510 <xsl:template match="*">
511 <xsl:copy>
512 <xsl:copy-of select="@*" />
513 <xsl:apply-templates />
514 </xsl:copy>
515 </xsl:template>
516
517
518 </xsl:stylesheet>