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