08a6fdf19a8615bb0230ecb4372ea43a6da8d23f
[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 <a name="pagetop"></a>
24 <xsl:apply-templates select="biglogo"/>
25 <xsl:apply-templates select="header">
26 <xsl:with-param name="title" select="@title"/>
27 </xsl:apply-templates>
28 <xsl:apply-templates select="section|menu"/>
29 <xsl:apply-templates select="footer"/>
30 </body>
31 </html>
32 </xsl:template>
33
34 <xsl:template match="section">
35  <xsl:if test="@id != ''"><a id="{@id}" /></xsl:if>
36  <h2><xsl:value-of select="@title"/></h2>
37  <xsl:apply-templates />
38 </xsl:template>
39
40 <xsl:template match="biglogo" name="biglogo">
41 <div class="biglogo">
42   <table cellspacing="0" cellpadding="0" border="0" align="left">
43    <tr>
44     <td width="109"><a href="http://www.uwaterloo.ca/"><img
45     src="/logos/uw_logo_100_68.gif" alt="University of Waterloo"
46     width="100" height="68" align="center" border="0" /></a></td>
47     <!--<td width="174"><a href="/"><img src="/logos/csc_160_70.png"
48     alt="Computer Science Club" width="165" height="75" align="center"
49     border="0" /></a></td>-->
50     <td width="91"><a href="http://www.acm.org"><img width="82"
51     height="103" src="/logos/acm_logo.gif" alt="A Student Chapter of
52     the ACM" align="center" border="0" /></a></td>
53    </tr>
54   </table>
55 </div>
56 </xsl:template>
57
58 <xsl:template match="mediafile">
59         <xsl:param name="ext" />
60         <xsl:param name="pre" />
61         <a href="{$pre}/files/{@file}{$ext}"><xsl:value-of select="@type" /></a>, 
62 </xsl:template>
63
64 <xsl:template match="flvfile">
65   <script type="text/javascript" src="flash/swfobject.js"></script>
66   <p id="player1"><a href="http://www.macromedia.com/go/getflashplayer">
67     Get the Flash Player</a> to see this video using Flash Player.
68   </p>
69   <script type="text/javascript">
70     var s1 = new SWFObject("flash/flvplayer.swf","single","400","300","7");
71     s1.addParam("allowfullscreen","true");
72     s1.addVariable("file","http://csclub.uwaterloo.ca/files/<xsl:value-of select="@file" />");
73 <!--    s1.addVariable("image","preview.jpg"); -->
74     s1.write("player1");
75   </script>
76 </xsl:template>
77
78 <xsl:template match="mediaitem">
79          <xsl:document method="html"
80   href="{translate(concat($root, '/media/', @title , '.html'), ' ', ' ')}">
81 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
82 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
83 </xsl:text>
84 <html xmlns="http://www.w3.org/1999/xhtml">
85 <head>
86  <title><xsl:value-of select="@title"/></title>
87   <style type="text/css">
88    <![CDATA[<!-- @import url('/default.css'); -->]]>
89   </style>
90 </head>
91 <body bgcolor="#ffffff">
92  <xsl:call-template name="header">
93   <xsl:with-param name="title" select="@title"/>
94  </xsl:call-template>
95  <h2>Abstract</h2>
96  <p>
97  <xsl:apply-templates select="abstract"/>
98  </p>
99  <xsl:apply-templates select="flvfile">
100  </xsl:apply-templates>
101  <p>
102  </p>
103
104  <p>
105  Download "<xsl:value-of select="@title"/>" in a number of formats via 
106  <strong><ul>
107   <li>HTTP (web browser):
108    <xsl:apply-templates select="mediafile">
109     <xsl:with-param name="ext"></xsl:with-param>
110    </xsl:apply-templates>
111   </li>
112   <br/>
113   <li>BitTorrent:
114    <xsl:apply-templates select="mediafile" >
115     <xsl:with-param name="ext">.torrent</xsl:with-param>
116    </xsl:apply-templates>
117   </li>
118 <!--  <li>Dijjer (a mostly seamless BitTorrent alternative):
119    <xsl:apply-templates select="mediafile" >
120     <xsl:with-param name="pre">http://dijjer.org/get/http://www.csclub.uwaterloo.ca</xsl:with-param>
121    </xsl:apply-templates>
122   </li> -->
123  </ul></strong>
124  </p>
125
126 <!-- Slashdot It link --> 
127 <!-- <a 
128 href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)"> <img src="http://images.slashdot.org/favicon.gif" alt="Slashdot" border="0" height="16" width="16"></img></a>
129 <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
130 <a href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)">Slashdot It!</a> -->
131
132 <!-- AddThis Bookmark Button -->
133 <script type="text/javascript">
134   addthis_url    = location.href;
135   addthis_title  = document.title;
136   addthis_pub    = 'calumt';
137 </script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
138
139 <!-- digg button -->
140 <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
141 <script language="javascript" src="http://reddit.com/button.js?t=3"></script>
142 <!--
143 <script type="text/javascript">
144 google_ad_client = "pub-5235744946475097";
145 google_ad_width = 728;
146 google_ad_height = 90;
147 google_ad_format = "728x90_as";
148 google_ad_type = "text_image";
149 //2007-03-21: mcc
150 google_ad_channel = "1106187834";
151 </script>
152 <script type="text/javascript"
153   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
154 </script>
155 -->
156
157  <xsl:call-template name="footer"/>
158 </body>
159 </html>
160  </xsl:document>
161         <li><a href= "{@title}.html"><xsl:value-of select="@title" /></a></li>
162 </xsl:template>
163
164 <xsl:template match="menuitem">
165     <td align="center" class="menuitem">
166      <a href="{@href}"><img border="0" src="/buttons/{@icon}.png"
167      width="40" height="40" alt="{@title}" /><!--</a>--><br />
168      <!--<a href="{@href}">--><xsl:value-of select="@title"/></a>
169     </td>
170 </xsl:template>
171
172 <xsl:template match="menudefs">
173  <div class="menuspace">
174  <table cellspacing="0" cellpadding="0" border="0" align="center" class="menubar">
175   <tr>
176    <xsl:apply-templates select="menuitem"/>
177   </tr>
178  </table>
179  </div>
180 </xsl:template>
181
182 <xsl:template match="menu" name="menu">
183  <xsl:apply-templates select="document('menu.xml')/menudefs"/>
184 </xsl:template>
185
186 <xsl:template match="header" name="header">
187   <a name="pagetop"></a>
188   <div id="vfeed"></div>
189   <div class="webtitle"><div class="webtitle-inner">
190   <table cellpadding="0" cellspacing="0" border="0" align="left"><tr>
191     <td width="90">
192       <a href="/"><img src="/logos/csc_80_35_white.png" alt="CSC Logo" /></a>
193     </td><td>
194       <a href="/"><img src="/logos/csc_title.png" alt="CSC Title" /></a>
195     </td><td valign="top" align="right">
196     </td>
197   </tr></table>
198   </div></div>
199   <table cellspacing="0" cellpadding="2" border="0" width="100%"
200   class="template-header">
201    <tr>
202     <!--<td width="84"><a href="/"><img src="/logos/csc_80_35.png"
203     alt="CSC" width="80" height="35" border="0" /></a></td>-->
204     <td colspan="2" class="pagetitle"><xsl:value-of select="@title"/></td>
205    </tr>
206    <tr>
207     <td colspan="2">
208      <xsl:apply-templates
209       select="document(concat($pwd,'/directory.xml'))/directory"/>
210     </td>
211    </tr>
212  </table>
213 </xsl:template>
214
215 <xsl:template match="directory">
216  <xsl:if test="@href = ''"><a class="headdir diritem"
217    href="index.html"><xsl:value-of
218    select="@title"/></a></xsl:if><xsl:if test="@href != ''">
219       <a href="{@href}"><xsl:value-of select="@title"/></a></xsl:if>
220  <xsl:apply-templates match="diritem"/>
221 </xsl:template>
222
223 <xsl:template match="diritem">
224  <a class="diritem" href="{@href}"><xsl:value-of select="@title"/></a>
225 </xsl:template>
226
227 <xsl:template match="footer" name="footer">
228  <a href="#pagetop" class="pagetop">Go to top</a>
229  <div class="footer">
230  <xsl:call-template name="menu"/>
231  <p>
232   This page was generated on <xsl:value-of select="$date"/> at
233   <xsl:value-of select="$time"/>.
234  </p>
235  <p class="infobox">
236   The overall layout is designed specially for Mozilla-based browsers.
237   It is also printer-friendly version. Please report any difficulty you
238   may find, including the version of your browser and your operating system.
239  </p>
240  <p>
241    <a href="/"><img src="/logos/csc_80_35.png" alt="CSC" align="right"/></a>
242    Copyright
243    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
244    2002<xsl:text disable-output-escaping="yes">&amp;ndash;</xsl:text>2007
245    Computer Science Club of the University of Waterloo.<br />
246    KDE Crystal theme icons are copyright
247    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
248    2002 and following years KDE Artists.<br />
249    Sunflower image is copyright Manan Tuli. Horde image is copyright horde contributors. Both available under the <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons::Attribution-ShareAlike license</a><br />
250    Gopher image is copyright Elron6900 (Flickr) and is available under the <a href="http://creativecommons.org/licenses/by-nc/2.0/">Attribution-NonCommercial 2.0</a> license.<br/>
251    Please direct website comments to the <a
252    href="mailto:www@csclub.uwaterloo.ca">Webmaster</a>.
253  </p>
254  </div>
255 </xsl:template>
256
257 <xsl:template match="newsdefs">
258  <xsl:apply-templates select="newsitem[csc:term(@date) = csc:term($date)]">
259    <xsl:sort select="translate(@date, '-', '')"
260              order="descending"
261              data-type="number"/>
262  </xsl:apply-templates>
263 </xsl:template>
264
265 <xsl:template match="newsitem">
266    <tr>
267     <td class="newsdate" bgcolor="#eeeeff"><xsl:value-of select="@date"/></td>
268     <td rowspan="2" valign="top" class="newsitem" bgcolor="white"><xsl:apply-templates/></td>
269    </tr>
270    <tr>
271     <td class="newsauthor" bgcolor="#eeeeff"><xsl:value-of select="@author"/></td>
272    </tr>
273 </xsl:template>
274
275 <xsl:template match="news" name="news">
276  <tr>
277   <th colspan="2" class="news" bgcolor="#aaaaff">
278    News
279   </th>
280  </tr>
281  <xsl:apply-templates select="document('news.xml')/newsdefs"/>
282  <tr>
283   <td class="newsitem" bgcolor="white" colspan="2">
284    <a href="news/">Older news items</a> are available. Make sure you
285    check out the <a href="/newsgroup/thread.php?group=uw.csc">uw.csc</a> newsgroup and our
286    announcement boards on the second and third floor of MC for more
287    updates.
288   </td>
289  </tr>
290 </xsl:template>
291
292 <xsl:template match="events" name="events">
293    <tr>
294     <th colspan="2" class="news" bgcolor="#aaaaff">
295      Upcoming Events <a href="events.ics">ical</a>
296     </th>
297    </tr>
298    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
299     <xsl:sort select="translate(@date, '-', '')"
300               order="ascending"
301               data-type="number"/>
302     <xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
303      <tr>
304       <td class="eventdate" bgcolor="#eeffee"><xsl:value-of select="@date"/></td>
305       <td rowspan="2" valign="top" class="eventitem" bgcolor="white">
306         <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
307          <xsl:value-of select="@title"/>
308         </a>.
309         <xsl:value-of select="short"/>
310       </td>
311      </tr>
312      <tr>
313       <td class="eventroom" bgcolor="#eeffee"><xsl:value-of select="@time"/>,
314       <xsl:value-of select="@room"/></td>
315      </tr>
316     </xsl:if>
317    </xsl:for-each>
318    <tr>
319     <td class="eventitem" bgcolor="white" colspan="2"><a href="events/">Past
320     events</a> are available.</td>
321    </tr>
322 </xsl:template>
323
324 <xsl:template match="eventdefs">
325  <xsl:apply-templates/>
326 </xsl:template>
327
328 <xsl:template match="eventitem">
329  <xsl:document method="html"
330   href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
331 <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">]]>
332 </xsl:text>
333 <html xmlns="http://www.w3.org/1999/xhtml">
334 <head>
335  <title><xsl:value-of select="@title"/></title>
336   <style type="text/css">
337    <![CDATA[<!-- @import url('/default.css'); -->]]>
338   </style>
339 </head>
340 <body bgcolor="#ffffff">
341  <xsl:call-template name="header">
342   <xsl:with-param name="title" select="@title"/>
343  </xsl:call-template>
344  <p>
345   Held in <xsl:value-of select="@room"/> at
346   <xsl:value-of select="@date"/>, <xsl:value-of select="@time"/>.
347  </p>
348  <h2>Abstract</h2>
349  <xsl:apply-templates select="abstract"/>
350  <xsl:call-template name="footer"/>
351 </body>
352 </html>
353  </xsl:document>
354 </xsl:template>
355
356 <xsl:template match="news-and-events">
357  <table cellspacing="1" cellpadding="2" bgcolor="black">
358   <xsl:call-template name="events"/>
359   <xsl:call-template name="news"/>
360  </table>
361 </xsl:template>
362
363 <xsl:template match="events-this-term" name="events-by-term">
364   <p>The events for <xsl:value-of select="csc:term($date)"/> are listed here or grab an <a href="/events.ics">ical</a>.</p>
365    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
366     <xsl:sort select="translate(@date, '-', '')"
367               order="ascending"
368               data-type="number"/>
369     <xsl:if test="csc:term(@date) = csc:term($date)">
370      <h3><a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}"><xsl:value-of select="@title"/></a></h3>
371      <p>
372       <b><xsl:value-of select="@room"/>,
373       <xsl:value-of select="@date"/>, <xsl:value-of
374       select="@time"/>: </b>
375       <xsl:value-of select="short"/>
376       <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
377        More information</a>.
378      </p>
379     </xsl:if>
380    </xsl:for-each>
381 </xsl:template>
382
383 <xsl:template match="news-this-term" name="news-by-term">
384   <p>The news for <xsl:value-of select="csc:term($date)"/> is listed here.</p>
385    <xsl:for-each select="document('news.xml')/newsdefs/newsitem">
386     <xsl:sort select="translate(@date, '-', '')"
387               order="descending"
388               data-type="number"/>
389     <xsl:if test="csc:term(@date) = csc:term($date)">
390      <p>
391       <b><xsl:value-of select="@date"/>,
392          <xsl:value-of select="@author"/>: </b> <xsl:apply-templates/>
393      </p>
394     </xsl:if>
395    </xsl:for-each>
396 </xsl:template>
397
398 <xsl:template match="members-this-term">
399   <p>The members for <xsl:value-of select="csc:term($date)"/> are
400   listed here. We currently have <xsl:value-of
401   select="count(document('members.xml')/memberlist/member)"/> members.</p>
402   <table>
403     <tr>
404       <th>Member ID</th>
405       <th>Name</th>
406       <th>Program</th>
407     </tr>
408     <xsl:for-each select="document('members.xml')/memberlist/member">
409       <tr>
410         <xsl:if test="position() mod 2 = 0">
411           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
412         </xsl:if>
413         <td><xsl:value-of select="@id"/></td>
414         <td><xsl:value-of select="@name"/></td>
415         <td><xsl:value-of select="@program"/></td>
416       </tr>
417     </xsl:for-each>
418   </table>
419 </xsl:template>
420
421 <xsl:template match="all-books">
422   <p>The books we currently own include:</p>
423   <table>
424     <tr>
425       <th>Title</th>
426       <th>Author</th>
427     </tr>
428     <xsl:for-each select="document('books.xml')/booklist/book">
429       <tr>
430         <xsl:if test="position() mod 2 = 0">
431           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
432         </xsl:if>
433         <td><a href="/office/books/{translate(@isbn, ' ', '_')}.html"><xsl:value-of
434         select="@title"/><xsl:if test="@edition != ''"> (<xsl:value-of
435         select="@edition"/>)</xsl:if></a></td>
436         <td><xsl:value-of select="@author"/></td>
437       </tr>
438 <xsl:document method="html" href="{translate(concat($root, '/office/books/', @isbn, '.html'), ' ', '_')}">
439 <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">]]>
440 </xsl:text>
441 <html xmlns="http://www.w3.org/1999/xhtml">
442 <head>
443  <title>Book: <xsl:value-of select="@title"/></title>
444   <style type="text/css">
445    <![CDATA[<!-- @import url('/default.css'); -->]]>
446   </style>
447 </head>
448 <body bgcolor="#ffffff">
449  <xsl:call-template name="header">
450     <xsl:with-param name="title" select="@title"/>
451     <xsl:with-param name="pwd" select="concat($pwd, '/books')"/>
452  </xsl:call-template>
453 <p>
454  <b>Title: </b> <xsl:value-of select="@title"/><br />
455  <b>Edition: </b> <xsl:value-of select="@edition"/><br />
456  <b>ISBN: </b> <xsl:value-of select="@isbn"/><br />
457  <b>Author: </b> <xsl:value-of select="@author"/><br />
458  <b>Published: </b> <xsl:value-of select="@published"/><br />
459 </p>
460   <xsl:call-template name="footer"/>
461 </body>
462 </html>
463  </xsl:document>
464     </xsl:for-each>
465   </table>
466 </xsl:template>
467
468 <xsl:template match="generate-event-files">
469  <xsl:apply-templates select="document('events.xml')/eventdefs"/>
470 </xsl:template>
471
472 <xsl:key name="eventterm"
473     match="/eventdefs/eventitem"
474     use="csc:term(@date)" />
475
476   <xsl:template match="old-events">
477     <xsl:for-each
478       select="document('events.xml')/eventdefs/eventitem">
479
480      <xsl:sort select="translate(@date, '-', '')"
481               order="descending"
482               data-type="number"/>
483
484       <xsl:if
485               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
486         <p><a href="{translate(concat('old-',
487         csc:term(@date), '.html'), ' ', '_')}">
488             <xsl:value-of
489               select="csc:term(@date)"/></a></p>
490  <xsl:document method="html" href="{translate(concat($root, '/events/old-', csc:term(@date), '.html'), ' ', '_')}">
491 <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">]]>
492 </xsl:text>
493 <html xmlns="http://www.w3.org/1999/xhtml">
494 <head>
495  <title>Events for <xsl:value-of select="csc:term(@date)"/></title>
496   <style type="text/css">
497    <![CDATA[<!-- @import url('/default.css'); -->]]>
498   </style>
499 </head>
500 <body bgcolor="#ffffff">
501  <xsl:call-template name="header">
502   <xsl:with-param name="title" select="concat('Events for ', csc:term(@date))"/>
503  </xsl:call-template>
504  <xsl:call-template name="events-by-term">
505    <xsl:with-param name="date" select="@date"/>
506  </xsl:call-template>
507  <xsl:call-template name="footer"/>
508 </body>
509 </html>
510  </xsl:document>
511       </xsl:if>
512     </xsl:for-each>
513   </xsl:template>
514   
515 <xsl:key name="newsterm"
516     match="/newsdefs/newsitem"
517     use="csc:term(@date)" />
518
519   <xsl:template match="old-news">
520     <xsl:for-each
521       select="document('news.xml')/newsdefs/newsitem">
522
523      <xsl:sort select="translate(@date, '-', '')"
524               order="descending"
525               data-type="number"/>
526
527       <xsl:if
528               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
529         <p><a href="{translate(concat('old-',
530         csc:term(@date), '.html'), ' ', '_')}">
531             <xsl:value-of
532               select="csc:term(@date)"/></a></p>
533  <xsl:document method="html" href="{translate(concat($root, '/news/old-', csc:term(@date), '.html'), ' ', '_')}">
534 <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">]]>
535 </xsl:text>
536 <html xmlns="http://www.w3.org/1999/xhtml">
537 <head>
538  <title>News for <xsl:value-of select="csc:term(@date)"/></title>
539   <style type="text/css">
540    <![CDATA[<!-- @import url('/default.css'); -->]]>
541   </style>
542 </head>
543 <body bgcolor="#ffffff">
544  <xsl:call-template name="header">
545   <xsl:with-param name="title" select="concat('News for ', csc:term(@date))"/>
546  </xsl:call-template>
547  <xsl:call-template name="news-by-term">
548    <xsl:with-param name="date" select="@date"/>
549  </xsl:call-template>
550  <xsl:call-template name="footer"/>
551 </body>
552 </html>
553  </xsl:document>
554       </xsl:if>
555     </xsl:for-each>
556   </xsl:template>
557   
558 <xsl:template match="execlist">
559  <h3>Elected positions</h3>
560  <ul>
561   <xsl:apply-templates select="exec[@type='elected']"/>
562  </ul>
563  <h3>Appointed positions</h3>
564  <ul>
565   <xsl:apply-templates select="exec[@type='appointed']"/>
566  </ul>
567 </xsl:template>
568
569 <xsl:template match="exec">
570  <li><xsl:value-of select="@name"/> is this term's <b><xsl:value-of
571  select="@position"/></b>. You can <a
572  href="mailto:{@userid}@csclub.uwaterloo.ca">e-mail the <xsl:value-of select="@position"/></a><xsl:if
573  test="not(@href='')"> or <a href="{@href}">visit 
574  <xsl:choose>
575   <xsl:when test="@sex='male'"> his </xsl:when>
576   <xsl:when test="@sex='female'"> her </xsl:when>
577   <xsl:otherwise> his or her </xsl:otherwise>
578  </xsl:choose>
579  homepage</a></xsl:if>.
580  </li>
581 </xsl:template>
582
583 <xsl:template match="*">
584 <xsl:copy>
585 <xsl:copy-of select="@*" />
586 <xsl:apply-templates />
587 </xsl:copy>
588 </xsl:template>
589
590
591 </xsl:stylesheet>