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