Merge commit 'kc/master'
[koha.git] / koha-tmpl / opac-tmpl / prog / en / xslt / UNIMARCslim2OPACDetail.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3   xmlns:marc="http://www.loc.gov/MARC21/slim"
4   xmlns:items="http://www.koha.org/items"
5   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6   exclude-result-prefixes="marc items">
7
8 <xsl:import href="UNIMARCslimUtils.xsl"/>
9 <xsl:output method = "xml" indent="yes" omit-xml-declaration = "yes" />
10 <xsl:template match="/">
11   <xsl:apply-templates/>
12 </xsl:template>
13
14 <xsl:template match="marc:record">
15   <xsl:variable name="leader" select="marc:leader"/>
16   <xsl:variable name="leader6" select="substring($leader,7,1)"/>
17   <xsl:variable name="leader7" select="substring($leader,8,1)"/>
18   <xsl:variable name="biblionumber" select="marc:datafield[@tag=090]/marc:subfield[@code='a']"/>
19
20
21   <xsl:if test="marc:datafield[@tag=200]">
22     <xsl:for-each select="marc:datafield[@tag=200]">
23       <h1>
24         <xsl:call-template name="addClassRtl" />
25         <xsl:variable name="title" select="marc:subfield[@code='a']"/>
26         <xsl:variable name="ntitle"
27          select="translate($title, '&#x0098;&#x009C;','')"/>
28         <xsl:value-of select="$ntitle" />
29         <xsl:if test="marc:subfield[@code='e']">
30           <xsl:text> : </xsl:text>
31           <xsl:for-each select="marc:subfield[@code='e']">
32             <xsl:value-of select="."/>
33           </xsl:for-each>
34         </xsl:if>
35         <xsl:if test="marc:subfield[@code='b']">
36           <xsl:text> [</xsl:text>
37           <xsl:value-of select="marc:subfield[@code='b']"/>
38           <xsl:text>]</xsl:text>
39         </xsl:if>
40         <xsl:if test="marc:subfield[@code='f']">
41           <xsl:text> / </xsl:text>
42           <xsl:value-of select="marc:subfield[@code='f']"/>
43         </xsl:if>
44         <xsl:if test="marc:subfield[@code='g']">
45           <xsl:text> ; </xsl:text>
46           <xsl:value-of select="marc:subfield[@code='g']"/>
47         </xsl:if>
48       </h1>
49     </xsl:for-each>
50   </xsl:if>
51
52   <div id="views">
53     <span class="view">
54       <span id="Normalview">Normal View</span>
55     </span>
56     <span class="view">
57       <a id="MARCviewPop" href="/cgi-bin/koha/opac-showmarc.pl?id={marc:datafield[@tag=090]/marc:subfield[@code='a']}" title="MARC" rel="gb_page_center[600,500]">MARC View</a>
58     </span>
59     <span class="view">
60       <a id="MARCview" href="/cgi-bin/koha/opac-MARCdetail.pl?biblionumber={marc:datafield[@tag=090]/marc:subfield[@code='a']}" title="MARC">Expanded MARC View</a>
61     </span>
62     <span class="view">
63       <a id="ISBDview" href="/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber={marc:datafield[@tag=090]/marc:subfield[@code='a']}">Card View (ISBD)</a>
64     </span>
65   </div>
66
67   <xsl:call-template name="tag_4xx" />
68
69   <xsl:call-template name="tag_7xx">
70     <xsl:with-param name="tag">700</xsl:with-param>
71     <xsl:with-param name="label">Auteur principal</xsl:with-param>
72   </xsl:call-template>
73
74   <xsl:call-template name="tag_7xx">
75     <xsl:with-param name="tag">710</xsl:with-param>
76     <xsl:with-param name="label">Collectivité principale</xsl:with-param>
77   </xsl:call-template>
78
79   <xsl:call-template name="tag_7xx">
80     <xsl:with-param name="tag">701</xsl:with-param>
81     <xsl:with-param name="label">Co-auteur</xsl:with-param>
82   </xsl:call-template>
83
84   <xsl:call-template name="tag_7xx">
85     <xsl:with-param name="tag">702</xsl:with-param>
86     <xsl:with-param name="label">Auteur</xsl:with-param>
87   </xsl:call-template>
88
89   <xsl:call-template name="tag_7xx">
90     <xsl:with-param name="tag">711</xsl:with-param>
91     <xsl:with-param name="label">Collectivité co-auteur</xsl:with-param>
92   </xsl:call-template>
93
94   <xsl:call-template name="tag_7xx">
95     <xsl:with-param name="tag">712</xsl:with-param>
96     <xsl:with-param name="label">Collectivité secondaire</xsl:with-param>
97   </xsl:call-template>
98
99   <xsl:if test="marc:datafield[@tag=101]">
100           <span class="results_summary">
101       <span class="label">Langue: </span>
102       <xsl:for-each select="marc:datafield[@tag=101]">
103         <xsl:for-each select="marc:subfield">
104           <xsl:choose>
105             <xsl:when test="@code='b'">de la trad. intermédiaire, </xsl:when>
106             <xsl:when test="@code='c'">de l'œuvre originale, </xsl:when>
107             <xsl:when test="@code='d'">du résumé, </xsl:when>
108             <xsl:when test="@code='e'">de la table des matières, </xsl:when>
109             <xsl:when test="@code='f'">de la page de titre, </xsl:when>
110             <xsl:when test="@code='g'">du titre propre, </xsl:when>
111             <xsl:when test="@code='h'">d'un livret, </xsl:when>
112             <xsl:when test="@code='i'">des textes d'accompagnement, </xsl:when>
113             <xsl:when test="@code='j'">des sous-titres, </xsl:when>
114           </xsl:choose>
115           <xsl:value-of select="text()"/>
116           <xsl:choose>
117             <xsl:when test="position()=last()">
118               <xsl:text>.</xsl:text>
119             </xsl:when>
120             <xsl:otherwise>
121               <xsl:text> ; </xsl:text>
122             </xsl:otherwise>
123           </xsl:choose>
124         </xsl:for-each>
125       </xsl:for-each>
126     </span>
127   </xsl:if>
128
129   <xsl:if test="marc:datafield[@tag=102]">
130           <span class="results_summary">
131       <span class="label">Pays: </span>
132       <xsl:for-each select="marc:datafield[@tag=102]">
133         <xsl:for-each select="marc:subfield">
134           <xsl:value-of select="text()"/>
135           <xsl:choose>
136             <xsl:when test="position()=last()">
137               <xsl:text>.</xsl:text>
138             </xsl:when>
139               <xsl:otherwise><xsl:text>, </xsl:text>
140             </xsl:otherwise>
141           </xsl:choose>
142         </xsl:for-each>
143       </xsl:for-each>
144     </span>
145   </xsl:if>
146
147   <xsl:call-template name="tag_210" />
148
149   <xsl:call-template name="tag_215" />
150
151   <xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
152     <span class="results_summary"><span class="label">ISBN: </span>
153     <xsl:for-each select="marc:datafield[@tag=010]">
154       <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
155       <xsl:value-of select="marc:subfield[@code='a']"/>
156       <xsl:choose>
157         <xsl:when test="position()=last()">
158           <xsl:text>.</xsl:text>
159         </xsl:when>
160         <xsl:otherwise>
161           <xsl:text> ; </xsl:text>
162         </xsl:otherwise>
163       </xsl:choose>
164     </xsl:for-each>
165     </span>
166   </xsl:if>
167
168   <xsl:if test="marc:datafield[@tag=011]">
169     <span class="results_summary">
170       <span class="label">ISSN: </span>
171       <xsl:for-each select="marc:datafield[@tag=011]">
172         <xsl:value-of select="marc:subfield[@code='a']"/>
173         <xsl:choose>
174           <xsl:when test="position()=last()">
175             <xsl:text>.</xsl:text>
176           </xsl:when>
177           <xsl:otherwise>
178             <xsl:text>; </xsl:text>
179           </xsl:otherwise>
180         </xsl:choose>
181       </xsl:for-each>
182     </span>
183   </xsl:if>
184
185   <xsl:call-template name="tag_title">
186     <xsl:with-param name="tag">225</xsl:with-param>
187     <xsl:with-param name="label">Collection</xsl:with-param>
188   </xsl:call-template>
189
190   <xsl:if test="marc:datafield[@tag=676]">
191     <span class="results_summary">
192     <span class="label">Dewey: </span>
193       <xsl:for-each select="marc:datafield[@tag=676]">
194         <xsl:value-of select="marc:subfield[@code='a']"/>
195         <xsl:if test="marc:subfield[@code='v']">
196           <xsl:text>, </xsl:text>
197           <xsl:value-of select="marc:subfield[@code='v']"/>
198         </xsl:if>
199         <xsl:if test="marc:subfield[@code='z']">
200           <xsl:text>, </xsl:text>
201           <xsl:value-of select="marc:subfield[@code='z']"/>
202         </xsl:if>
203         <xsl:if test="not (position()=last())">
204           <xsl:text> ; </xsl:text>
205         </xsl:if>
206       </xsl:for-each>
207     </span>
208   </xsl:if>
209
210   <xsl:if test="marc:datafield[@tag=686]">
211     <span class="results_summary">
212     <span class="label">Classification: </span>
213       <xsl:for-each select="marc:datafield[@tag=686]">
214         <xsl:value-of select="marc:subfield[@code='a']"/>
215         <xsl:if test="marc:subfield[@code='b']">
216           <xsl:text>, </xsl:text>
217           <xsl:value-of select="marc:subfield[@code='b']"/>
218         </xsl:if>
219         <xsl:if test="marc:subfield[@code='c']">
220           <xsl:text>, </xsl:text>
221           <xsl:value-of select="marc:subfield[@code='c']"/>
222         </xsl:if>
223         <xsl:if test="not (position()=last())"><xsl:text> ; </xsl:text></xsl:if>
224       </xsl:for-each>
225     </span>
226   </xsl:if>
227
228   <xsl:if test="marc:datafield[@tag=327]">
229     <span class="results_summary">
230       <span class="label">Note de contenu: </span>
231       <xsl:for-each select="marc:datafield[@tag=327]">
232         <xsl:call-template name="chopPunctuation">
233           <xsl:with-param name="chopString">
234             <xsl:call-template name="subfieldSelect">
235                 <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
236                 <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
237                 <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
238             </xsl:call-template>
239           </xsl:with-param>
240         </xsl:call-template>
241       </xsl:for-each>
242     </span>
243   </xsl:if>
244
245   <xsl:if test="marc:datafield[@tag=330]">
246     <span class="results_summary">
247       <span class="label">Résumé: </span>
248       <xsl:for-each select="marc:datafield[@tag=330]">
249         <xsl:value-of select="marc:subfield[@code='a']"/>
250         <xsl:choose>
251           <xsl:when test="position()=last()">
252             <xsl:text>.</xsl:text>
253           </xsl:when>
254           <xsl:otherwise>
255             <xsl:text>; </xsl:text>
256           </xsl:otherwise>
257         </xsl:choose>
258       </xsl:for-each>
259     </span>
260   </xsl:if>
261
262   <xsl:if test="marc:datafield[@tag=317]">
263     <span class="results_summary">
264       <span class="label">Note sur la provenance: </span>
265       <xsl:for-each select="marc:datafield[@tag=317]">
266           <xsl:value-of select="marc:subfield[@code='a']"/>
267       </xsl:for-each>
268     </span>
269   </xsl:if>
270
271   <xsl:if test="marc:datafield[@tag=320]">
272     <span class="results_summary">
273       <span class="label">Bibliographie: </span>
274       <xsl:for-each select="marc:datafield[@tag=320]">
275         <xsl:value-of select="marc:subfield[@code='a']"/>
276         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
277       </xsl:for-each>
278     </span>
279   </xsl:if>
280
281   <xsl:if test="marc:datafield[@tag=328]">
282     <span class="results_summary">
283       <span class="label">Thèse: </span>
284       <xsl:for-each select="marc:datafield[@tag=328]">
285         <xsl:value-of select="marc:subfield[@code='a']"/>
286         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
287       </xsl:for-each>
288     </span>
289   </xsl:if>
290
291   <xsl:if test="marc:datafield[@tag=333]">
292     <span class="results_summary">
293       <span class="label">Public: </span>
294       <xsl:for-each select="marc:datafield[@tag=333]">
295         <xsl:value-of select="marc:subfield[@code='a']"/>
296         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
297       </xsl:for-each>
298     </span>
299   </xsl:if>
300
301   <xsl:if test="marc:datafield[@tag=955]">
302     <span class="results_summary">
303       <span class="label">SUDOC serial history: </span>
304       <xsl:for-each select="marc:datafield[@tag=955]">
305         <xsl:value-of select="marc:subfield[@code='9']"/>:
306         <xsl:value-of select="marc:subfield[@code='r']"/>
307         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
308       </xsl:for-each>
309     </span>
310   </xsl:if>
311
312   <xsl:if test="marc:datafield[@tag=955]">
313     <span class="results_summary">
314       <span class="label">SUDOC serial history: </span>
315       <xsl:for-each select="marc:datafield[@tag=955]">
316         <xsl:value-of select="marc:subfield[@code='9']"/>:
317         <xsl:value-of select="marc:subfield[@code='r']"/>
318         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
319       </xsl:for-each>
320     </span>
321   </xsl:if>
322
323   <xsl:call-template name="tag_subject">
324     <xsl:with-param name="tag">600</xsl:with-param>
325     <xsl:with-param name="label">Sujet - Nom de personne</xsl:with-param>
326   </xsl:call-template>
327
328   <xsl:call-template name="tag_subject">
329     <xsl:with-param name="tag">601</xsl:with-param>
330     <xsl:with-param name="label">Sujet - Collectivité</xsl:with-param>
331   </xsl:call-template>
332
333   <xsl:call-template name="tag_subject">
334     <xsl:with-param name="tag">602</xsl:with-param>
335     <xsl:with-param name="label">Sujet - Famille</xsl:with-param>
336   </xsl:call-template>
337
338   <xsl:call-template name="tag_subject">
339     <xsl:with-param name="tag">604</xsl:with-param>
340     <xsl:with-param name="label">Sujet - Auteur/titre</xsl:with-param>
341   </xsl:call-template>
342
343   <xsl:call-template name="tag_subject">
344     <xsl:with-param name="tag">606</xsl:with-param>
345     <xsl:with-param name="label">Sujet - Nom commun</xsl:with-param>
346   </xsl:call-template>
347
348   <xsl:call-template name="tag_subject">
349     <xsl:with-param name="tag">607</xsl:with-param>
350     <xsl:with-param name="label">Sujet - Nom géographique</xsl:with-param>
351   </xsl:call-template>
352
353   <xsl:call-template name="tag_subject">
354     <xsl:with-param name="tag">608</xsl:with-param>
355     <xsl:with-param name="label">Sujet - Forme</xsl:with-param>
356   </xsl:call-template>
357
358   <xsl:call-template name="tag_subject">
359     <xsl:with-param name="tag">610</xsl:with-param>
360     <xsl:with-param name="label">Sujet</xsl:with-param>
361   </xsl:call-template>
362
363   <xsl:call-template name="tag_subject">
364     <xsl:with-param name="tag">615</xsl:with-param>
365     <xsl:with-param name="label">Catégorie sujet</xsl:with-param>
366   </xsl:call-template>
367
368   <xsl:call-template name="tag_subject">
369     <xsl:with-param name="tag">616</xsl:with-param>
370     <xsl:with-param name="label">Marque déposée</xsl:with-param>
371   </xsl:call-template>
372
373   <xsl:if test="marc:datafield[@tag=856]">
374     <span class="results_summary">
375       <span class="label">Online Resources: </span>
376       <xsl:for-each select="marc:datafield[@tag=856]">
377         <a>
378           <xsl:attribute name="href">
379             <xsl:value-of select="marc:subfield[@code='u']"/>
380           </xsl:attribute>
381           <xsl:choose>
382             <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
383               <xsl:call-template name="subfieldSelect">
384                 <xsl:with-param name="codes">y3z</xsl:with-param>
385               </xsl:call-template>
386             </xsl:when>
387             <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
388               Click here to access online
389             </xsl:when>
390           </xsl:choose>
391         </a>
392         <xsl:choose>
393           <xsl:when test="position()=last()"></xsl:when>
394           <xsl:otherwise> | </xsl:otherwise>
395         </xsl:choose>
396       </xsl:for-each>
397     </span>
398   </xsl:if>
399
400         <!-- 780 -->
401         <xsl:if test="marc:datafield[@tag=780]">
402         <xsl:for-each select="marc:datafield[@tag=780]">
403         <span class="results_summary">
404         <xsl:choose>
405         <xsl:when test="@ind2=0">
406             <span class="label">Continues:</span>
407         </xsl:when>
408         <xsl:when test="@ind2=1">
409             <span class="label">Continues in part:</span>
410         </xsl:when>
411         <xsl:when test="@ind2=2">
412             <span class="label">Supersedes:</span>
413         </xsl:when>
414         <xsl:when test="@ind2=3">
415             <span class="label">Supersedes in part:</span>
416         </xsl:when>
417         <xsl:when test="@ind2=4">
418             <span class="label">Formed by the union: ... and: ...</span>
419         </xsl:when>
420         <xsl:when test="@ind2=5">
421             <span class="label">Absorbed:</span>
422         </xsl:when>
423         <xsl:when test="@ind2=6">
424             <span class="label">Absorbed in part:</span>
425         </xsl:when>
426         <xsl:when test="@ind2=7">
427             <span class="label">Separated from:</span>
428         </xsl:when>
429         </xsl:choose>
430                 <xsl:variable name="f780">
431                     <xsl:call-template name="subfieldSelect">
432                         <xsl:with-param name="codes">at</xsl:with-param>
433                     </xsl:call-template>
434                 </xsl:variable>
435              <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
436                 <xsl:value-of select="translate($f780, '()', '')"/>
437             </a>
438         </span>
439
440         <xsl:choose>
441         <xsl:when test="@ind1=0">
442             <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
443         </xsl:when>
444         </xsl:choose>
445
446         </xsl:for-each>
447         </xsl:if>
448
449         <!-- 785 -->
450         <xsl:if test="marc:datafield[@tag=785]">
451         <xsl:for-each select="marc:datafield[@tag=785]">
452         <span class="results_summary">
453         <xsl:choose>
454         <xsl:when test="@ind2=0">
455             <span class="label">Continued by:</span>
456         </xsl:when>
457         <xsl:when test="@ind2=1">
458             <span class="label">Continued in part by:</span>
459         </xsl:when>
460         <xsl:when test="@ind2=2">
461             <span class="label">Superseded by:</span>
462         </xsl:when>
463         <xsl:when test="@ind2=3">
464             <span class="label">Superseded in part by:</span>
465         </xsl:when>
466         <xsl:when test="@ind2=4">
467             <span class="label">Absorbed by:</span>
468         </xsl:when>
469         <xsl:when test="@ind2=5">
470             <span class="label">Absorbed in part by:</span>
471         </xsl:when>
472         <xsl:when test="@ind2=6">
473             <span class="label">Split into .. and ...:</span>
474         </xsl:when>
475         <xsl:when test="@ind2=7">
476             <span class="label">Merged with ... to form ...</span>
477         </xsl:when>
478         <xsl:when test="@ind2=8">
479             <span class="label">Changed back to:</span>
480         </xsl:when>
481
482         </xsl:choose>
483                    <xsl:variable name="f785">
484                     <xsl:call-template name="subfieldSelect">
485                         <xsl:with-param name="codes">at</xsl:with-param>
486                     </xsl:call-template>
487                 </xsl:variable>
488
489                 <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
490                 <xsl:value-of select="translate($f785, '()', '')"/>
491             </a>
492
493         </span>
494         </xsl:for-each>
495         </xsl:if>
496
497     </xsl:template>
498
499     <xsl:template name="nameABCDQ">
500             <xsl:call-template name="chopPunctuation">
501                 <xsl:with-param name="chopString">
502                     <xsl:call-template name="subfieldSelect">
503                         <xsl:with-param name="codes">aq</xsl:with-param>
504                     </xsl:call-template>
505                 </xsl:with-param>
506                 <xsl:with-param name="punctuation">
507                     <xsl:text>:,;/ </xsl:text>
508                 </xsl:with-param>
509             </xsl:call-template>
510         <xsl:call-template name="termsOfAddress"/>
511     </xsl:template>
512
513     <xsl:template name="nameABCDN">
514         <xsl:for-each select="marc:subfield[@code='a']">
515                 <xsl:call-template name="chopPunctuation">
516                     <xsl:with-param name="chopString" select="."/>
517                 </xsl:call-template>
518         </xsl:for-each>
519         <xsl:for-each select="marc:subfield[@code='b']">
520                 <xsl:value-of select="."/>
521         </xsl:for-each>
522         <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
523                 <xsl:call-template name="subfieldSelect">
524                     <xsl:with-param name="codes">cdn</xsl:with-param>
525                 </xsl:call-template>
526         </xsl:if>
527     </xsl:template>
528
529     <xsl:template name="nameACDEQ">
530             <xsl:call-template name="subfieldSelect">
531                 <xsl:with-param name="codes">acdeq</xsl:with-param>
532             </xsl:call-template>
533     </xsl:template>
534     <xsl:template name="termsOfAddress">
535         <xsl:if test="marc:subfield[@code='b' or @code='c']">
536             <xsl:call-template name="chopPunctuation">
537                 <xsl:with-param name="chopString">
538                     <xsl:call-template name="subfieldSelect">
539                         <xsl:with-param name="codes">bc</xsl:with-param>
540                     </xsl:call-template>
541                 </xsl:with-param>
542             </xsl:call-template>
543         </xsl:if>
544     </xsl:template>
545
546     <xsl:template name="part">
547         <xsl:variable name="partNumber">
548             <xsl:call-template name="specialSubfieldSelect">
549                 <xsl:with-param name="axis">n</xsl:with-param>
550                 <xsl:with-param name="anyCodes">n</xsl:with-param>
551                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
552             </xsl:call-template>
553         </xsl:variable>
554         <xsl:variable name="partName">
555             <xsl:call-template name="specialSubfieldSelect">
556                 <xsl:with-param name="axis">p</xsl:with-param>
557                 <xsl:with-param name="anyCodes">p</xsl:with-param>
558                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
559             </xsl:call-template>
560         </xsl:variable>
561         <xsl:if test="string-length(normalize-space($partNumber))">
562                 <xsl:call-template name="chopPunctuation">
563                     <xsl:with-param name="chopString" select="$partNumber"/>
564                 </xsl:call-template>
565         </xsl:if>
566         <xsl:if test="string-length(normalize-space($partName))">
567                 <xsl:call-template name="chopPunctuation">
568                     <xsl:with-param name="chopString" select="$partName"/>
569                 </xsl:call-template>
570         </xsl:if>
571     </xsl:template>
572
573     <xsl:template name="specialSubfieldSelect">
574         <xsl:param name="anyCodes"/>
575         <xsl:param name="axis"/>
576         <xsl:param name="beforeCodes"/>
577         <xsl:param name="afterCodes"/>
578         <xsl:variable name="str">
579             <xsl:for-each select="marc:subfield">
580                 <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])">
581                     <xsl:value-of select="text()"/>
582                     <xsl:text> </xsl:text>
583                 </xsl:if>
584             </xsl:for-each>
585         </xsl:variable>
586         <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
587     </xsl:template>
588
589 </xsl:stylesheet>