adding famfamfam iconset, improving isbn for amazon content, etc.
[srvgit] / koha-tmpl / opac-tmpl / prog / en / xslt / MARC21slim2OPACResults.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
3 <xsl:stylesheet version="1.0"
4   xmlns:marc="http://www.loc.gov/MARC21/slim"
5   xmlns:items="http://www.koha.org/items"
6   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7   exclude-result-prefixes="marc items">
8     <xsl:import href="MARC21slimUtils.xsl"/>
9     <xsl:output method="html" indent="yes"/>
10     <xsl:key name="item-by-status" match="items:item" use="items:status"/>
11     <xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
12
13     <xsl:template match="/">
14             <xsl:apply-templates/>
15     </xsl:template>
16     <xsl:template match="marc:record">
17         <xsl:variable name="leader" select="marc:leader"/>
18         <xsl:variable name="leader6" select="substring($leader,7,1)"/>
19         <xsl:variable name="leader7" select="substring($leader,8,1)"/>
20         <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
21         <xsl:variable name="isbn" select="marc:datafield[@tag=020]/marc:subfield[@code='a']"/>
22         <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
23         <xsl:variable name="typeOf008">
24             <xsl:choose>
25                 <xsl:when test="$leader6='a'">
26                     <xsl:choose>
27                         <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
28                         <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">SE</xsl:when>
29                     </xsl:choose>
30                 </xsl:when>
31                 <xsl:when test="$leader6='t'">BK</xsl:when>
32                 <xsl:when test="$leader6='p'">MM</xsl:when>
33                 <xsl:when test="$leader6='m'">CF</xsl:when>
34                 <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
35                 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'">VM</xsl:when>
36                 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">MU</xsl:when>
37             </xsl:choose>
38         </xsl:variable>
39         <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"/>
40         <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"/>
41         <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"/>
42         <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"/>
43         <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"/>
44         <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
45         <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"/>
46         <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
47         <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"/>
48
49         <xsl:variable name="physicalDescription">
50             <!--3.2 change tmee 007/11 -->
51             <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
52                 reformatted digital
53             </xsl:if>
54             <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
55                 digitized microfilm
56             </xsl:if>
57             <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
58                 digitized other analog
59             </xsl:if>
60
61             <xsl:variable name="check008-23">
62                 <xsl:if test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='SE' or $typeOf008='MM'">
63                     <xsl:value-of select="true()"></xsl:value-of>
64                 </xsl:if>
65             </xsl:variable>
66             <xsl:variable name="check008-29">
67                 <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
68                     <xsl:value-of select="true()"></xsl:value-of>
69                 </xsl:if>
70             </xsl:variable>
71             <xsl:choose>
72                 <xsl:when test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
73                     braille
74                 </xsl:when>
75                 <xsl:when test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='SE') and ($controlField008-23=' ' or $controlField008='r'))">
76                     print
77                 </xsl:when>
78                 <xsl:when test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
79                     <img src="/opac-tmpl/prog/famfamfam/silk/computer.png"/> electronic
80                 </xsl:when>
81                 <xsl:when test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
82                     microfiche
83                 </xsl:when>
84                 <xsl:when test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
85                     microfilm
86                 </xsl:when>
87             </xsl:choose>
88             <!-- 1/04 fix -->
89             <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
90                     <xsl:call-template name="chopBrackets">
91                         <xsl:with-param name="chopString">
92                             <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"></xsl:value-of>
93                         </xsl:with-param>
94                     </xsl:call-template>
95             </xsl:if>
96             <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
97                     <xsl:call-template name="chopBrackets">
98                         <xsl:with-param name="chopString">
99                             <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"></xsl:value-of>
100                         </xsl:with-param>
101                     </xsl:call-template>
102             </xsl:if>
103             <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
104                     <xsl:call-template name="chopBrackets">
105                         <xsl:with-param name="chopString">
106                             <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"></xsl:value-of>
107                         </xsl:with-param>
108                     </xsl:call-template>
109             </xsl:if>
110             <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
111                     <xsl:call-template name="chopBrackets">
112                         <xsl:with-param name="chopString">
113                             <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"></xsl:value-of>
114                         </xsl:with-param>
115                     </xsl:call-template>
116             </xsl:if>
117             <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
118                     <xsl:call-template name="chopBrackets">
119                         <xsl:with-param name="chopString">
120                             <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"></xsl:value-of>
121                         </xsl:with-param>
122                     </xsl:call-template>
123             </xsl:if>
124             <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
125                     <xsl:call-template name="chopBrackets">
126                         <xsl:with-param name="chopString">
127                             <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"></xsl:value-of>
128                         </xsl:with-param>
129                     </xsl:call-template>
130             </xsl:if>
131             <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
132                     <xsl:value-of select="."></xsl:value-of>
133             </xsl:for-each>
134             <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
135                 <xsl:choose>
136                     <xsl:when test="substring(text(),14,1)='a'">
137                         access
138                     </xsl:when>
139                     <xsl:when test="substring(text(),14,1)='p'">
140                         preservation
141                     </xsl:when>
142                     <xsl:when test="substring(text(),14,1)='r'">
143                         replacement
144                     </xsl:when>
145                 </xsl:choose>
146             </xsl:for-each>
147
148             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
149                 chip cartridge
150             </xsl:if>
151             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
152                 <img src="/opac-tmpl/prog/famfamfam/silk/cd.png"/> computer optical disc cartridge
153             </xsl:if>
154             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
155                 magnetic disc
156             </xsl:if>
157             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
158                 magneto-optical disc
159             </xsl:if>
160             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
161                 <img src="/opac-tmpl/prog/famfamfam/silk/cd.png"/> optical disc
162             </xsl:if>
163             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
164                 <img src="/opac-tmpl/prog/famfamfam/silk/drive_remote.png"/> remote
165             </xsl:if>
166             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
167                 tape cartridge
168             </xsl:if>
169             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
170                 tape cassette
171             </xsl:if>
172             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
173                 tape reel
174             </xsl:if>
175
176             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
177                 <img src="/opac-tmpl/prog/famfamfam/silk/globe.png"/>  celestial globe
178             </xsl:if>
179             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
180                 <img src="/opac-tmpl/prog/famfamfam/silk/globe.png"/>  earth moon globe
181             </xsl:if>
182             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
183                 <img src="/opac-tmpl/prog/famfamfam/silk/globe.png"/>  planetary or lunar globe
184             </xsl:if>
185             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
186                 <img src="/opac-tmpl/prog/famfamfam/silk/globe.png"/>  terrestrial globe
187             </xsl:if>
188
189             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
190                 kit
191             </xsl:if>
192
193             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
194                 atlas
195             </xsl:if>
196             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
197                 diagram
198             </xsl:if>
199             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
200                 map
201             </xsl:if>
202             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
203                 model
204             </xsl:if>
205             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
206                 profile
207             </xsl:if>
208             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
209                 remote-sensing image
210             </xsl:if>
211             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
212                 section
213             </xsl:if>
214             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
215                 view
216             </xsl:if>
217
218             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
219                 aperture card
220             </xsl:if>
221             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
222                 microfiche
223             </xsl:if>
224             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
225                 microfiche cassette
226             </xsl:if>
227             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
228                 microfilm cartridge
229             </xsl:if>
230             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
231                 microfilm cassette
232             </xsl:if>
233             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
234                 microfilm reel
235             </xsl:if>
236             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
237                 microopaque
238             </xsl:if>
239
240             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
241                 film cartridge
242             </xsl:if>
243             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
244                 film cassette
245             </xsl:if>
246             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
247                 film reel
248             </xsl:if>
249             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
250                 <img src="/opac-tmpl/prog/famfamfam/silk/chart_curve.png"/> chart
251             </xsl:if>
252             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
253                 collage
254             </xsl:if>
255             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
256                  <img src="/opac-tmpl/prog/famfamfam/silk/pencile.png"/> drawing
257             </xsl:if>
258             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
259                 <img src="/opac-tmpl/prog/famfamfam/silk/note.png"/> flash card
260             </xsl:if>
261             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
262                 <img src="/opac-tmpl/prog/famfamfam/silk/paintbrush.png"/>  painting
263             </xsl:if>
264             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
265                 photomechanical print
266             </xsl:if>
267             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
268                 photonegative
269             </xsl:if>
270             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
271                 photoprint
272             </xsl:if>
273             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
274                 <img src="/opac-tmpl/prog/famfamfam/silk/picture.png"/>  picture
275             </xsl:if>
276             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
277                 print
278             </xsl:if>
279             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
280                 technical drawing
281             </xsl:if>
282             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
283                 <img src="/opac-tmpl/prog/famfamfam/silk/script.png"/> notated music
284             </xsl:if>
285             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
286                 filmslip
287             </xsl:if>
288             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
289                 filmstrip cartridge
290             </xsl:if>
291             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
292                 filmstrip roll
293             </xsl:if>
294             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
295                 other filmstrip type
296             </xsl:if>
297             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
298                 <img src="/opac-tmpl/prog/famfamfam/silk/pictures.png"/> slide
299             </xsl:if>
300             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
301                 transparency
302             </xsl:if>
303             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
304                 remote-sensing image
305             </xsl:if>
306             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
307                 cylinder
308             </xsl:if>
309             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
310                 roll
311             </xsl:if>
312             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
313                 sound cartridge
314             </xsl:if>
315             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
316                 sound cassette
317             </xsl:if>
318             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
319                 <img src="/opac-tmpl/prog/famfamfam/silk/cd.png"/>  sound disc
320             </xsl:if>
321             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
322                 sound-tape reel
323             </xsl:if>
324             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
325                 sound-track film
326             </xsl:if>
327             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
328                 wire recording
329             </xsl:if>
330
331             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
332                 braille
333             </xsl:if>
334             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
335                 combination
336             </xsl:if>
337             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
338                 moon
339             </xsl:if>
340             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
341                 tactile, with no writing system
342             </xsl:if>
343
344             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
345                 braille
346             </xsl:if>
347             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
348                 <img src="/opac-tmpl/prog/famfamfam/silk/magnifier.png"/>  large print
349             </xsl:if>
350             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
351                 regular print
352             </xsl:if>
353             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
354                 text in looseleaf binder
355             </xsl:if>
356
357             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
358                 videocartridge
359             </xsl:if>
360             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
361                 videocassette
362             </xsl:if>
363             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
364                 <img src="/opac-tmpl/prog/famfamfam/silk/dvd.png"/> videodisc
365             </xsl:if>
366             <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
367                 videoreel
368             </xsl:if>
369
370             <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
371                     <xsl:value-of select="."></xsl:value-of>
372             </xsl:for-each>
373             <xsl:for-each select="marc:datafield[@tag=300]">
374                     <xsl:call-template name="subfieldSelect">
375                         <xsl:with-param name="codes">abce</xsl:with-param>
376                     </xsl:call-template>
377             </xsl:for-each>
378         </xsl:variable>
379
380     <td style="vertical-align:top;">
381      <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
382
383         <xsl:if test="marc:datafield[@tag=245]">
384         <xsl:for-each select="marc:datafield[@tag=245]">
385             <xsl:variable name="title">
386                 <xsl:choose>
387                 <xsl:when test="marc:subfield[@code='b']">
388                     <xsl:call-template name="specialSubfieldSelect">
389                         <xsl:with-param name="axis">b</xsl:with-param>
390                         <xsl:with-param name="beforeCodes">afghk</xsl:with-param>
391                     </xsl:call-template>
392                 </xsl:when>
393                 <xsl:otherwise>
394                 <xsl:call-template name="subfieldSelect">
395                     <xsl:with-param name="codes">abfgk</xsl:with-param>
396                 </xsl:call-template>
397                 </xsl:otherwise>
398                 </xsl:choose>
399             </xsl:variable>
400             <xsl:variable name="titleChop">
401                 <xsl:call-template name="chopPunctuation">
402                     <xsl:with-param name="chopString">
403                         <xsl:value-of select="$title"/>
404                     </xsl:with-param>
405                 </xsl:call-template>
406             </xsl:variable>
407             <xsl:value-of select="$titleChop"/>
408             <xsl:if test="marc:subfield[@code='b']">
409                 <xsl:text> : </xsl:text>
410                 <xsl:call-template name="chopPunctuation">
411                     <xsl:with-param name="chopString">
412                         <xsl:call-template name="specialSubfieldSelect">
413                             <xsl:with-param name="axis">b</xsl:with-param>
414                             <xsl:with-param name="anyCodes">b</xsl:with-param>
415                             <xsl:with-param name="afterCodes">afghk</xsl:with-param>
416                         </xsl:call-template>
417                     </xsl:with-param>
418                 </xsl:call-template>
419             </xsl:if><xsl:text> </xsl:text>
420             <xsl:call-template name="part"/>
421             <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
422         </xsl:for-each>
423         </xsl:if>
424     </a>
425     <p>
426
427     <xsl:choose>
428     <xsl:when test="marc:datafield[@tag=100] or marc:datafield[@tag=110] or marc:datafield[@tag=111] or marc:datafield[@tag=700] or marc:datafield[@tag=710] or marc:datafield[@tag=711]">
429
430     by 
431         <xsl:for-each select="marc:datafield[@tag=100 or @tag=700]">
432             <xsl:choose>
433             <xsl:when test="position()=last()">
434                 <xsl:call-template name="nameABCDQ"/>.
435             </xsl:when>
436             <xsl:otherwise>
437                 <xsl:call-template name="nameABCDQ"/>;
438             </xsl:otherwise>
439             </xsl:choose>
440         </xsl:for-each>
441
442         <xsl:for-each select="marc:datafield[@tag=110 or @tag=710]">
443             <xsl:choose>
444             <xsl:when test="position()=last()">
445                 <xsl:call-template name="nameABCDN"/>.
446             </xsl:when>
447             <xsl:otherwise>
448                 <xsl:call-template name="nameABCDN"/>;
449             </xsl:otherwise>
450             </xsl:choose>
451         </xsl:for-each>
452
453         <xsl:for-each select="marc:datafield[@tag=111 or @tag=711]">
454             <xsl:choose>
455             <xsl:when test="position()=last()">
456                 <xsl:call-template name="nameACDEQ"/>.
457             </xsl:when>
458             <xsl:otherwise>
459                 <xsl:call-template name="nameACDEQ"/>;
460             </xsl:otherwise>
461             </xsl:choose>
462         </xsl:for-each>
463     </xsl:when>
464     </xsl:choose>
465     </p>
466     <span class="results_summary">
467     <xsl:if test="$typeOf008">
468         <span class="label">Type: </span>
469             <xsl:choose>
470                 <xsl:when test="$leader6='a'">
471                     <xsl:choose>
472                         <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'"><img src="/opac-tmpl/prog/famfamfam/silk/book.png"/> Book</xsl:when>
473                         <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'"><img src="/opac-tmpl/prog/famfamfam/silk/newspaper.png"/> Serial</xsl:when>
474                     </xsl:choose>
475                 </xsl:when>
476                 <xsl:when test="$leader6='t'"><img src="/opac-tmpl/prog/famfamfam/silk/book.png"/> Book</xsl:when>
477                 <xsl:when test="$leader6='p'"><img src="/opac-tmpl/prog/famfamfam/silk/report_disk.png"/>Mixed Materials</xsl:when>
478                 <xsl:when test="$leader6='m'"><img src="/opac-tmpl/prog/famfamfam/silk/disk.png"/> Computer File</xsl:when>
479                 <xsl:when test="$leader6='e' or $leader6='f'"><img src="/opac-tmpl/prog/famfamfam/silk/map.png"/> Map</xsl:when>
480                 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'"><img src="/opac-tmpl/prog/famfamfam/silk/film.png"/> Visual Material</xsl:when>
481                 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'"><img src="/opac-tmpl/prog/famfamfam/silk/sound.png"/> Sound</xsl:when>
482             </xsl:choose>
483
484         <xsl:if test="string-length(normalize-space($physicalDescription))">
485                 <span class="label">; Format: </span><xsl:copy-of select="$physicalDescription"></xsl:copy-of>
486         </xsl:if>
487
488     </xsl:if>
489
490         <xsl:if test="$controlField008-21 or $controlField008-22 or $controlField008-24 or $controlField008-26 or $controlField008-29 or $controlField008-34 or $controlField008-33 or $controlField008-30-31 or $controlField008-33">
491
492         <span class="label"> Genre: </span>
493         <xsl:if test="$typeOf008='SE'">
494             <xsl:choose>
495                 <xsl:when test="$controlField008-21='d'">
496                      <img src="/opac-tmpl/prog/famfamfam/silk/database.png"/> database;
497                 </xsl:when>
498                 <xsl:when test="$controlField008-21='l'">
499                     loose-leaf;
500                 </xsl:when>
501                 <xsl:when test="$controlField008-21='m'">
502                     series;
503                 </xsl:when>
504                 <xsl:when test="$controlField008-21='n'">
505                     newspaper;
506                 </xsl:when>
507                 <xsl:when test="$controlField008-21='p'">
508                     periodical;
509                 </xsl:when>
510                 <xsl:when test="$controlField008-21='w'">
511                      <img src="/opac-tmpl/prog/famfamfam/silk/world_link.png"/> web site;
512                 </xsl:when>
513             </xsl:choose>
514         </xsl:if>
515         <xsl:if test="$typeOf008='BK' or $typeOf008='SE'">
516             <xsl:choose>
517                 <xsl:when test="contains($controlField008-24,'a')">
518                     abstract or summary;
519                 </xsl:when>
520                 <xsl:when test="contains($controlField008-24,'b')">
521                      <img src="/opac-tmpl/prog/famfamfam/silk/text_list_bullets.png"/> bibliography;
522                 </xsl:when>
523                 <xsl:when test="contains($controlField008-24,'c')">
524                     catalog;
525                 </xsl:when>
526                 <xsl:when test="contains($controlField008-24,'d')">
527                     dictionary;
528                 </xsl:when>
529                 <xsl:when test="contains($controlField008-24,'e')">
530                     encyclopedia;
531                 </xsl:when>
532                 <xsl:when test="contains($controlField008-24,'f')">
533                     handbook;
534                 </xsl:when>
535                 <xsl:when test="contains($controlField008-24,'g')">
536                     legal article;
537                 </xsl:when>
538                 <xsl:when test="contains($controlField008-24,'i')">
539                     index;
540                 </xsl:when>
541                 <xsl:when test="contains($controlField008-24,'k')">
542                     discography;
543                 </xsl:when>
544                 <xsl:when test="contains($controlField008-24,'l')">
545                     legislation;
546                 </xsl:when>
547                 <xsl:when test="contains($controlField008-24,'m')">
548                     theses;
549                 </xsl:when>
550                 <xsl:when test="contains($controlField008-24,'n')">
551                     survey of literature;
552                 </xsl:when>
553                 <xsl:when test="contains($controlField008-24,'o')">
554                     review;
555                 </xsl:when>
556                 <xsl:when test="contains($controlField008-24,'p')">
557                     programmed text;
558                 </xsl:when>
559                 <xsl:when test="contains($controlField008-24,'q')">
560                     filmography;
561                 </xsl:when>
562                 <xsl:when test="contains($controlField008-24,'r')">
563                     directory;
564                 </xsl:when>
565                 <xsl:when test="contains($controlField008-24,'s')">
566                     statistics;
567                 </xsl:when>
568                 <xsl:when test="contains($controlField008-24,'t')">
569                      <img src="/opac-tmpl/prog/famfamfam/silk/report.png"/> technical report;
570                 </xsl:when>
571                 <xsl:when test="contains($controlField008-24,'v')">
572                     legal case and case notes;
573                 </xsl:when>
574                 <xsl:when test="contains($controlField008-24,'w')">
575                     law report or digest;
576                 </xsl:when>
577                 <xsl:when test="contains($controlField008-24,'z')">
578                     treaty;
579                 </xsl:when>
580             </xsl:choose>
581             <xsl:choose>
582                 <xsl:when test="$controlField008-29='1'">
583                     conference publication;
584                 </xsl:when>
585             </xsl:choose>
586         </xsl:if>
587         <xsl:if test="$typeOf008='CF'">
588             <xsl:choose>
589                 <xsl:when test="$controlField008-26='a'">
590                     numeric data;
591                 </xsl:when>
592                 <xsl:when test="$controlField008-26='e'">
593                      <img src="/opac-tmpl/prog/famfamfam/silk/database.png"/> database;
594                 </xsl:when>
595                 <xsl:when test="$controlField008-26='f'">
596                      <img src="/opac-tmpl/prog/famfamfam/silk/font.png"/> font;
597                 </xsl:when>
598                 <xsl:when test="$controlField008-26='g'">
599                      <img src="/opac-tmpl/prog/famfamfam/silk/controller.png"/> game;
600                 </xsl:when>
601             </xsl:choose>
602         </xsl:if>
603         <xsl:if test="$typeOf008='BK'">
604             <xsl:if test="substring($controlField008,25,1)='j'">
605                 patent;
606             </xsl:if>
607             <xsl:if test="substring($controlField008,31,1)='1'">
608                 festschrift;
609             </xsl:if>
610             <xsl:if test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
611                  <img src="/opac-tmpl/prog/famfamfam/silk/user.png"/>  biography;
612             </xsl:if>
613             <xsl:choose>
614                 <xsl:when test="$controlField008-33='e'">
615                     essay;
616                 </xsl:when>
617                 <xsl:when test="$controlField008-33='d'">
618                     drama;
619                 </xsl:when>
620                 <xsl:when test="$controlField008-33='c'">
621                     comic strip;
622                 </xsl:when>
623                 <xsl:when test="$controlField008-33='l'">
624                     fiction;
625                 </xsl:when>
626                 <xsl:when test="$controlField008-33='h'">
627                     humor, satire;
628                 </xsl:when>
629                 <xsl:when test="$controlField008-33='i'">
630                     letter;
631                 </xsl:when>
632                 <xsl:when test="$controlField008-33='f'">
633                     novel;
634                 </xsl:when>
635                 <xsl:when test="$controlField008-33='j'">
636                     short story;
637                 </xsl:when>
638                 <xsl:when test="$controlField008-33='s'">
639                     speech;
640                 </xsl:when>
641             </xsl:choose>
642         </xsl:if> 
643         <xsl:if test="$typeOf008='MU'">
644             <xsl:if test="contains($controlField008-30-31,'b')">
645                 biography;
646             </xsl:if>
647             <xsl:if test="contains($controlField008-30-31,'c')">
648                 conference publication;
649             </xsl:if>
650             <xsl:if test="contains($controlField008-30-31,'d')">
651                 drama;
652             </xsl:if>
653             <xsl:if test="contains($controlField008-30-31,'e')">
654                 essay;
655             </xsl:if>
656             <xsl:if test="contains($controlField008-30-31,'f')">
657                 fiction;
658             </xsl:if>
659             <xsl:if test="contains($controlField008-30-31,'o')">
660                 folktale;
661             </xsl:if>
662             <xsl:if test="contains($controlField008-30-31,'h')">
663                 history;
664             </xsl:if>
665             <xsl:if test="contains($controlField008-30-31,'k')">
666                 humor, satire;
667             </xsl:if>
668             <xsl:if test="contains($controlField008-30-31,'m')">
669                 memoir;
670             </xsl:if>
671             <xsl:if test="contains($controlField008-30-31,'p')">
672                 poetry;
673             </xsl:if>
674             <xsl:if test="contains($controlField008-30-31,'r')">
675                 rehearsal;
676             </xsl:if>
677             <xsl:if test="contains($controlField008-30-31,'g')">
678                 reporting;
679             </xsl:if>
680             <xsl:if test="contains($controlField008-30-31,'s')">
681                 sound;
682             </xsl:if>
683             <xsl:if test="contains($controlField008-30-31,'l')">
684                 speech;
685             </xsl:if>
686         </xsl:if>
687         <xsl:if test="$typeOf008='VM'">
688             <xsl:choose>
689                 <xsl:when test="$controlField008-33='a'">
690                     art original;
691                 </xsl:when>
692                 <xsl:when test="$controlField008-33='b'">
693                     kit;
694                 </xsl:when>
695                 <xsl:when test="$controlField008-33='c'">
696                     art reproduction;
697                 </xsl:when>
698                 <xsl:when test="$controlField008-33='d'">
699                     diorama;
700                 </xsl:when>
701                 <xsl:when test="$controlField008-33='f'">
702                     filmstrip;
703                 </xsl:when>
704                 <xsl:when test="$controlField008-33='g'">
705                     legal article;
706                 </xsl:when>
707                 <xsl:when test="$controlField008-33='i'">
708                     picture;
709                 </xsl:when>
710                 <xsl:when test="$controlField008-33='k'">
711                     graphic;
712                 </xsl:when>
713                 <xsl:when test="$controlField008-33='l'">
714                     technical drawing;
715                 </xsl:when>
716                 <xsl:when test="$controlField008-33='m'">
717                     motion picture;
718                 </xsl:when>
719                 <xsl:when test="$controlField008-33='n'">
720                     chart;
721                 </xsl:when>
722                 <xsl:when test="$controlField008-33='o'">
723                     flash card;
724                 </xsl:when>
725                 <xsl:when test="$controlField008-33='p'">
726                     microscope slide;
727                 </xsl:when>
728                 <xsl:when test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2
729 ,1)='q']">
730                     model;
731                 </xsl:when>
732                 <xsl:when test="$controlField008-33='r'">
733                     realia;
734                 </xsl:when>
735                 <xsl:when test="$controlField008-33='s'">
736                     slide;
737                 </xsl:when>
738                 <xsl:when test="$controlField008-33='t'">
739                     transparency;
740                 </xsl:when>
741                 <xsl:when test="$controlField008-33='v'">
742                     videorecording;
743                 </xsl:when>
744                 <xsl:when test="$controlField008-33='w'">
745                     toy;
746                 </xsl:when>
747             </xsl:choose>
748         </xsl:if>
749         </xsl:if> 
750
751     <xsl:if test="$typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM'">
752         <xsl:choose>
753             <xsl:when test="$controlField008-22='a'">
754             <span class="label">; Audience: </span> Preschool;
755             </xsl:when>
756             <xsl:when test="$controlField008-22='b'">
757             <span class="label">; Audience: </span> Primary;
758             </xsl:when>
759             <xsl:when test="$controlField008-22='c'">
760             <span class="label">; Audience: </span> Pre-adolescent;
761             </xsl:when>
762             <xsl:when test="$controlField008-22='d'">
763             <span class="label">; Audience: </span> Adolescent;
764             </xsl:when>
765             <xsl:when test="$controlField008-22='e'">
766             <span class="label">; Audience: </span> Adult;
767             </xsl:when>
768             <xsl:when test="$controlField008-22='g'">
769             <span class="label">; Audience: </span> General;
770             </xsl:when>
771             <xsl:when test="$controlField008-22='j'">
772             <span class="label">; Audience: </span> Juvenile;
773             </xsl:when>
774             <xsl:when test="$controlField008-22='f'">
775             <span class="label">; Audience: </span> Specialized;
776             </xsl:when>
777             </xsl:choose>
778     </xsl:if>
779     <br/> 
780     <xsl:if test="marc:datafield[@tag=260]">
781     <span class="label">Publisher: </span> 
782             <xsl:for-each select="marc:datafield[@tag=260]">
783                     <xsl:call-template name="subfieldSelect">
784                         <xsl:with-param name="codes">bcg</xsl:with-param>
785                     </xsl:call-template>
786             </xsl:for-each>
787
788     </xsl:if>
789     </span>
790                <div class="holdings_summary">
791                    <xsl:if test="count(key('item-by-status', 'available'))>0">
792                    <span class="available">
793                        <xsl:text>Copies available at: </xsl:text>
794                        <xsl:variable name="available_items"
795                            select="key('item-by-status', 'available')"/>
796                        <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
797                            <xsl:value-of select="items:homebranch"/>
798                            <xsl:text> (</xsl:text>
799                            <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
800                            <xsl:text>) </xsl:text>
801                        </xsl:for-each>
802                    </span>
803                    </xsl:if>
804                    <xsl:if test="count(key('item-by-status', 'On loan'))>0">
805                    <span class="unavailable">
806                        <xsl:text>On loan (</xsl:text>
807                        <xsl:value-of select="count(key('item-by-status', 'On loan'))"/>
808                        <xsl:text>)</xsl:text>
809                    </span>
810                    </xsl:if>
811                </div>
812     </td>
813     </xsl:template>
814
815     <xsl:template name="nameABCDQ">
816             <xsl:call-template name="chopPunctuation">
817                 <xsl:with-param name="chopString">
818                     <xsl:call-template name="subfieldSelect">
819                         <xsl:with-param name="codes">aq</xsl:with-param>
820                     </xsl:call-template>
821                 </xsl:with-param>
822                 <xsl:with-param name="punctuation">
823                     <xsl:text>:,;/ </xsl:text>
824                 </xsl:with-param>
825             </xsl:call-template>
826         <xsl:call-template name="termsOfAddress"/>
827     </xsl:template>
828
829     <xsl:template name="nameABCDN">
830         <xsl:for-each select="marc:subfield[@code='a']">
831                 <xsl:call-template name="chopPunctuation">
832                     <xsl:with-param name="chopString" select="."/>
833                 </xsl:call-template>
834         </xsl:for-each>
835         <xsl:for-each select="marc:subfield[@code='b']">
836                 <xsl:value-of select="."/>
837         </xsl:for-each>
838         <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
839                 <xsl:call-template name="subfieldSelect">
840                     <xsl:with-param name="codes">cdn</xsl:with-param>
841                 </xsl:call-template>
842         </xsl:if>
843     </xsl:template>
844
845     <xsl:template name="nameACDEQ">
846             <xsl:call-template name="subfieldSelect">
847                 <xsl:with-param name="codes">acdeq</xsl:with-param>
848             </xsl:call-template>
849     </xsl:template>
850
851     <xsl:template name="termsOfAddress">
852         <xsl:if test="marc:subfield[@code='b' or @code='c']">
853             <xsl:call-template name="chopPunctuation">
854                 <xsl:with-param name="chopString">
855                     <xsl:call-template name="subfieldSelect">
856                         <xsl:with-param name="codes">bc</xsl:with-param>
857                     </xsl:call-template>
858                 </xsl:with-param>
859             </xsl:call-template>
860         </xsl:if>
861     </xsl:template>
862
863     <xsl:template name="nameDate">
864         <xsl:for-each select="marc:subfield[@code='d']">
865             <xsl:call-template name="chopPunctuation">
866                 <xsl:with-param name="chopString" select="."/>
867             </xsl:call-template>
868         </xsl:for-each>
869     </xsl:template>
870
871     <xsl:template name="role">
872         <xsl:for-each select="marc:subfield[@code='e']">
873                     <xsl:value-of select="."/>
874         </xsl:for-each>
875         <xsl:for-each select="marc:subfield[@code='4']">
876                     <xsl:value-of select="."/>
877         </xsl:for-each>
878     </xsl:template>
879
880     <xsl:template name="specialSubfieldSelect">
881         <xsl:param name="anyCodes"/>
882         <xsl:param name="axis"/>
883         <xsl:param name="beforeCodes"/>
884         <xsl:param name="afterCodes"/>
885         <xsl:variable name="str">
886             <xsl:for-each select="marc:subfield">
887                 <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
888                     <xsl:value-of select="text()"/>
889                     <xsl:text> </xsl:text>
890                 </xsl:if>
891             </xsl:for-each>
892         </xsl:variable>
893         <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
894     </xsl:template>
895
896     <xsl:template name="subtitle">
897         <xsl:if test="marc:subfield[@code='b']">
898                 <xsl:call-template name="chopPunctuation">
899                     <xsl:with-param name="chopString">
900                         <xsl:value-of select="marc:subfield[@code='b']"/>
901
902                         <!--<xsl:call-template name="subfieldSelect">
903                             <xsl:with-param name="codes">b</xsl:with-param>                                 
904                         </xsl:call-template>-->
905                     </xsl:with-param>
906                 </xsl:call-template>
907         </xsl:if>
908     </xsl:template>
909
910     <xsl:template name="part">
911         <xsl:variable name="partNumber">
912             <xsl:call-template name="specialSubfieldSelect">
913                 <xsl:with-param name="axis">n</xsl:with-param>
914                 <xsl:with-param name="anyCodes">n</xsl:with-param>
915                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
916             </xsl:call-template>
917         </xsl:variable>
918         <xsl:variable name="partName">
919             <xsl:call-template name="specialSubfieldSelect">
920                 <xsl:with-param name="axis">p</xsl:with-param>
921                 <xsl:with-param name="anyCodes">p</xsl:with-param>
922                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
923             </xsl:call-template>
924         </xsl:variable>
925         <xsl:if test="string-length(normalize-space($partNumber))">
926                 <xsl:call-template name="chopPunctuation">
927                     <xsl:with-param name="chopString" select="$partNumber"/>
928                 </xsl:call-template>
929         </xsl:if>
930         <xsl:if test="string-length(normalize-space($partName))">
931                 <xsl:call-template name="chopPunctuation">
932                     <xsl:with-param name="chopString" select="$partName"/>
933                 </xsl:call-template>
934         </xsl:if>
935     </xsl:template>
936     <xsl:template name="chopBrackets">
937         <xsl:param name="chopString"></xsl:param>
938         <xsl:variable name="string">
939             <xsl:call-template name="chopPunctuation">
940                 <xsl:with-param name="chopString" select="$chopString"></xsl:with-param>
941             </xsl:call-template>
942         </xsl:variable>
943         <xsl:if test="substring($string, 1,1)='['">
944             <xsl:value-of select="substring($string,2, string-length($string)-2)"></xsl:value-of>
945         </xsl:if>
946         <xsl:if test="substring($string, 1,1)!='['">
947             <xsl:value-of select="$string"></xsl:value-of>
948         </xsl:if>
949     </xsl:template>
950
951 </xsl:stylesheet>