Bug 14716: URI-encode URLs in NORMARC xsl templates.
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / xslt / NORMARCslim2intranetDetail.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
4 <!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
5
6 <xsl:stylesheet version="1.0"
7   xmlns:marc="http://www.loc.gov/MARC21/slim"
8   xmlns:items="http://www.koha-community.org/items"
9   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10   xmlns:str="http://exslt.org/strings"
11   exclude-result-prefixes="marc items str">
12     <xsl:import href="NORMARCslimUtils.xsl"/>
13     <xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
14     <xsl:template match="/">
15             <xsl:apply-templates/>
16     </xsl:template>
17
18     <xsl:template match="marc:record">
19
20         <!-- Sysprefs -->
21         <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/>
22         <xsl:variable name="OPACBaseURL" select="marc:sysprefs/marc:syspref[@name='OPACBaseURL']"/>
23         <xsl:variable name="SubjectModifier"><xsl:if test="marc:sysprefs/marc:syspref[@name='TraceCompleteSubfields']='1'">,complete-subfield</xsl:if></xsl:variable>
24         <xsl:variable name="TraceSubjectSubdivisions" select="marc:sysprefs/marc:syspref[@name='TraceSubjectSubdivisions']"/>
25         <xsl:variable name="OpacSuppression" select="marc:sysprefs/marc:syspref[@name='OpacSuppression']"/>
26         <xsl:variable name="TracingQuotesLeft">
27           <xsl:choose>
28             <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">{</xsl:when>
29             <xsl:otherwise>"</xsl:otherwise>
30           </xsl:choose>
31         </xsl:variable>
32         <xsl:variable name="TracingQuotesRight">
33           <xsl:choose>
34             <xsl:when test="marc:sysprefs/marc:syspref[@name='UseICU']='1'">}</xsl:when>
35             <xsl:otherwise>"</xsl:otherwise>
36           </xsl:choose>
37         </xsl:variable>
38         <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
39
40         <xsl:variable name="leader" select="marc:leader"/>
41         <xsl:variable name="leader6" select="substring($leader,7,1)"/>
42         <xsl:variable name="leader7" select="substring($leader,8,1)"/>
43         <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
44         <xsl:variable name="field019b" select="marc:datafield[@tag=019]/marc:subfield[@code='b']"/>
45         <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
46         <xsl:variable name="typeOf008">
47             <!-- The logic here should be exactly the same for NORMARCslim2intranetDetail.xsl, NORMARCslim2intranetResults.xsl, NORMARCslim2OPACDetail.xsl and NORMARCslim2OPACResults.xsl -->
48             <xsl:choose>
49                 <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Mon</xsl:when>
50                 <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">FV</xsl:when>
51                 <xsl:when test="$field019b='c' or $field019b='d' or contains($field019b,'da') or contains($field019b,'db') or contains($field019b,'dc') or contains($field019b,'dd') or contains($field019b,'dg') or contains($field019b,'dh') or contains($field019b,'di') or contains($field019b,'dj') or contains($field019b,'dk') or $leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">Mus</xsl:when>
52                 <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kar</xsl:when>
53                 <xsl:when test="$field019b='f' or $field019b='i' or contains($field019b,'ib') or contains($field019b,'ic') or contains($field019b,'fd') or contains($field019b,'ff') or contains($field019b,'fi') or $leader6='k'">gra</xsl:when>
54                 <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
55                 <xsl:when test="$leader6='o'">kom</xsl:when>
56                 <xsl:when test="$field019b='h' or $leader6='r'">trd</xsl:when>
57                 <xsl:when test="$field019b='j' or $leader6='a'">
58                     <xsl:choose>
59                         <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Mon</xsl:when>
60                         <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Per</xsl:when>
61                     </xsl:choose>
62                 </xsl:when>
63             </xsl:choose>
64         </xsl:variable>
65
66         <!-- Indicate if record is suppressed in OPAC -->
67         <xsl:if test="$OpacSuppression = 1">
68             <xsl:if test="marc:datafield[@tag=942][marc:subfield[@code='n'] = '1']">
69                 <span class="results_summary suppressed_opac">Suppressed in OPAC</span>
70             </xsl:if>
71         </xsl:if>
72
73         <!-- Tittel og ansvarsopplysninger -->
74         <xsl:if test="marc:datafield[@tag=245]">
75         <h1>
76             <xsl:for-each select="marc:datafield[@tag=245]">
77                     <xsl:call-template name="subfieldSelect">
78                         <xsl:with-param name="codes">a</xsl:with-param>
79                     </xsl:call-template>
80                     <xsl:if test="marc:subfield[@code='h']">
81                         <xsl:text> </xsl:text>
82                         (<xsl:call-template name="subfieldSelect">
83                             <xsl:with-param name="codes">h</xsl:with-param>
84                         </xsl:call-template>) 
85                     </xsl:if>
86                     <xsl:if test="marc:subfield[@code='b']">
87                         <xsl:text> : </xsl:text>
88                         <xsl:call-template name="subfieldSelect">
89                             <xsl:with-param name="codes">b</xsl:with-param>
90                         </xsl:call-template>
91                     </xsl:if>
92                     <xsl:text> </xsl:text>
93                     <xsl:call-template name="subfieldSelect">
94                         <xsl:with-param name="codes">np</xsl:with-param>
95                     </xsl:call-template>
96             </xsl:for-each>
97         </h1>
98         </xsl:if>
99
100         <!-- Author Statement -->
101                 <!-- 245$9 is Koha authority number --> 
102         <xsl:choose>
103         <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]">
104         <h5 class="author">av
105         <xsl:for-each select="marc:datafield[@tag=100 or @tag=700]">
106         <a>
107         <xsl:choose>
108             <xsl:when test="marc:subfield[@code=9]">
109                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
110             </xsl:when>
111             <xsl:otherwise>
112             <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
113             </xsl:otherwise>
114         </xsl:choose>
115         <xsl:call-template name="nameABCDQ"/></a>
116         <xsl:choose>
117         <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
118         </xsl:for-each>
119
120         <xsl:for-each select="marc:datafield[@tag=110 or @tag=710]">
121         <a>
122         <xsl:choose>
123             <xsl:when test="marc:subfield[@code=9]">
124                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
125             </xsl:when>
126             <xsl:otherwise>
127             <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
128             </xsl:otherwise>
129         </xsl:choose>
130         <xsl:call-template name="nameABCDN"/></a>
131         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
132         </xsl:for-each>
133
134         <xsl:for-each select="marc:datafield[@tag=111 or @tag=711]">
135         <a>
136         <xsl:choose>
137             <xsl:when test="marc:subfield[@code=9]">
138                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
139             </xsl:when>
140             <xsl:otherwise>
141             <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
142             </xsl:otherwise>
143         </xsl:choose>
144         <xsl:call-template name="nameACDEQ"/></a>
145         <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
146
147         </xsl:for-each>
148         </h5>
149         </xsl:when>
150         </xsl:choose>
151
152
153         <xsl:if test="$typeOf008!=''">
154         <span class="results_summary">
155             <span class="label">Materialtype: </span>
156             <xsl:choose>
157                 <xsl:when test="$typeOf008='Mon'"><img src="/intranet-tmpl/prog/img/famfamfam/BK.png" alt="Bok" title="Bok"/> Bok</xsl:when>
158                 <xsl:when test="$typeOf008='Per'"><img src="/intranet-tmpl/prog/img/famfamfam/AR.png" alt="Periodika" title="Periodika"/> Periodika</xsl:when>
159                 <xsl:when test="$typeOf008='Fil'"><img src="/intranet-tmpl/prog/img/famfamfam/CF.png" alt="Fil" title="Fil"/> Fil</xsl:when>
160                 <xsl:when test="$typeOf008='Kar'"><img src="/intranet-tmpl/prog/img/famfamfam/MP.png" alt="Kart" title="Kart"/> Kart</xsl:when>
161                 <xsl:when test="$typeOf008='FV'"><img  src="/intranet-tmpl/prog/img/famfamfam/VM.png" alt="Film og video" title="Film og video"/> Film og video</xsl:when>
162                 <xsl:when test="$typeOf008='Mus'"><img src="/intranet-tmpl/prog/img/famfamfam/PR.png" alt="Musikktrykk og lydopptak" title="Musikktrykk og lydopptak"/> Musikk</xsl:when>
163                 <xsl:when test="$typeOf008='gra'"><img src="/intranet-tmpl/prog/img/famfamfam/GR.png" alt="Grafisk materiale" title="Grafisk materiale"/> Grafisk materiale</xsl:when>
164                 <xsl:when test="$typeOf008='kom'"><img src="/intranet-tmpl/prog/img/famfamfam/MX.png" alt="Kombidokumenter" title="Kombidokumenter"/> Kombidokumenter</xsl:when>
165                 <xsl:when test="$typeOf008='trd'"><img src="/intranet-tmpl/prog/img/famfamfam/TD.png" alt="Tre-dimensjonale gjenstander" title="Tre-dimensjonale gjenstander"/> Tre-dimensjonale gjenstander</xsl:when>
166             </xsl:choose>
167         </span>
168         </xsl:if>
169
170         <!--Series -->
171         <xsl:if test="marc:datafield[@tag=440 or @tag=490]">
172                 <span class="results_summary"><span class="label">Series: </span>
173                 <xsl:for-each select="marc:datafield[@tag=440]">
174                     <a>
175                     <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
176                         <xsl:call-template name="chopPunctuation">
177                                     <xsl:with-param name="chopString">
178                                         <xsl:call-template name="subfieldSelect">
179                                             <xsl:with-param name="codes">av</xsl:with-param>
180                                         </xsl:call-template>
181                                     </xsl:with-param>
182                                 </xsl:call-template>
183                                 </a>
184                             <xsl:text> </xsl:text><xsl:call-template name="part"/>
185                     <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
186                 </xsl:for-each>
187         
188                 <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
189                     <a>
190                     <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
191                                 <xsl:call-template name="chopPunctuation">
192                                     <xsl:with-param name="chopString">
193                                         <xsl:call-template name="subfieldSelect">
194                                             <xsl:with-param name="codes">av</xsl:with-param>
195                                         </xsl:call-template>
196                                     </xsl:with-param>
197                                 </xsl:call-template>
198                     </a>
199                             <xsl:call-template name="part"/>
200                 <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
201                 </xsl:for-each>
202                 </span>
203         </xsl:if>
204
205         <!-- Analytics -->
206         <xsl:if test="$leader7='s' or $leader7='c'">
207         <span class="results_summary analytics"><span class="label">Analytics: </span>
208             <a>
209             <xsl:choose>
210             <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
211                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=rcn:<xsl:value-of select="str:encode-uri(marc:controlfield[@tag=001], true())"/>+and+(bib-level:a+or+bib-level:b)</xsl:attribute>
212             </xsl:when>
213             <xsl:otherwise>
214                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Host-item:<xsl:value-of select="str:encode-uri(translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', ''), true())"/></xsl:attribute>
215             </xsl:otherwise>
216             </xsl:choose>
217             <xsl:text>Show analytics</xsl:text>
218             </a>
219         </span>
220         </xsl:if>
221
222         <!-- 773 - Links from child to parent -->
223         <xsl:if test="marc:datafield[@tag=773]">
224         <xsl:for-each select="marc:datafield[@tag=773]">
225         <xsl:if test="@ind1=0">
226         <span class="results_summary in"><span class="label">
227         <xsl:choose>
228         <xsl:when test="@ind2=' '">
229             In:
230         </xsl:when>
231         <xsl:when test="@ind2=8">
232             <xsl:if test="marc:subfield[@code='i']">
233                 <xsl:value-of select="marc:subfield[@code='i']"/>
234             </xsl:if>
235         </xsl:when>
236         </xsl:choose>
237         </span>
238                 <xsl:variable name="f773">
239                     <xsl:call-template name="chopPunctuation"><xsl:with-param name="chopString"><xsl:call-template name="subfieldSelect">
240                         <xsl:with-param name="codes">a_t</xsl:with-param>
241                     </xsl:call-template></xsl:with-param></xsl:call-template>
242                 </xsl:variable>
243             <xsl:choose>
244                 <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
245                     <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
246                         <xsl:value-of select="translate($f773, '()', '')"/>
247                     </a>
248                     <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
249                 </xsl:when>
250                 <xsl:when test="marc:subfield[@code='0']">
251                     <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/detail.pl?biblionumber=<xsl:value-of select="marc:subfield[@code='0']"/></xsl:attribute>
252                         <xsl:value-of select="$f773"/>
253                     </a>
254                 </xsl:when>
255                 <xsl:otherwise>
256                     <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=ti,phr:<xsl:value-of select="str:encode-uri(translate($f773, '()', ''), true())"/></xsl:attribute>
257                         <xsl:value-of select="$f773"/>
258                     </a>
259                     <xsl:if test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
260                 </xsl:otherwise>
261             </xsl:choose>
262         </span>
263         <xsl:if test="marc:subfield[@code='n']">
264             <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
265         </xsl:if>
266         </xsl:if>
267         </xsl:for-each>
268         </xsl:if>
269
270         <!-- Publisher Statement -->
271         
272         <xsl:if test="marc:datafield[@tag=260]">
273         <span class="results_summary"><span class="label">Utgiver: </span>
274             <xsl:for-each select="marc:datafield[@tag=260]">
275                 <xsl:call-template name="chopPunctuation">
276                   <xsl:with-param name="chopString">
277                     <xsl:call-template name="subfieldSelect">
278                         <xsl:with-param name="codes">bcg</xsl:with-param>
279                     </xsl:call-template>
280                    </xsl:with-param>
281                </xsl:call-template>
282                     <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
283             </xsl:for-each>
284         </span> 
285         </xsl:if>
286
287         <!-- Edition Statement -->
288         
289         <xsl:if test="marc:datafield[@tag=250]">
290         <span class="results_summary"><span class="label">Utgave: </span>
291             <xsl:for-each select="marc:datafield[@tag=250]">
292                 <xsl:call-template name="chopPunctuation">
293                   <xsl:with-param name="chopString">
294                     <xsl:call-template name="subfieldSelect">
295                         <xsl:with-param name="codes">ab</xsl:with-param>
296                     </xsl:call-template>
297                    </xsl:with-param>
298                </xsl:call-template>
299                     <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
300             </xsl:for-each>
301         </span>
302         </xsl:if>
303
304         <!-- Description -->
305         
306         <xsl:if test="marc:datafield[@tag=300]">
307         <span class="results_summary"><span class="label">Beskrivelse: </span>
308             <xsl:for-each select="marc:datafield[@tag=300]">
309                 <xsl:call-template name="chopPunctuation">
310                   <xsl:with-param name="chopString">
311                     <xsl:call-template name="subfieldSelect">
312                         <xsl:with-param name="codes">abceg</xsl:with-param>
313                     </xsl:call-template>
314                    </xsl:with-param>
315                </xsl:call-template>
316                     <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
317             </xsl:for-each>
318         </span>
319        </xsl:if>
320
321        <abbr class="unapi-id" title="koha:biblionumber:{marc:datafield[@tag=999]/marc:subfield[@code='c']}" ><!-- unAPI --></abbr>
322
323         <!-- Build ISBN -->
324         <xsl:if test="marc:datafield[@tag=020]/marc:subfield[@code='a']">
325           <span class="results_summary isbn"><span class="label">ISBN: </span>
326             <xsl:for-each select="marc:datafield[@tag=020]/marc:subfield[@code='a']">
327               <span property="isbn">
328                 <xsl:value-of select="."/>
329                 <xsl:choose>
330                   <xsl:when test="position()=last()">
331                     <xsl:text>.</xsl:text>
332                   </xsl:when>
333                   <xsl:otherwise>
334                     <xsl:text>; </xsl:text>
335                   </xsl:otherwise>
336                 </xsl:choose>
337               </span>
338             </xsl:for-each>
339           </span>
340         </xsl:if>
341
342         <!-- Build ISSN -->
343         <xsl:if test="marc:datafield[@tag=022]/marc:subfield[@code='a']">
344           <span class="results_summary issn"><span class="label">ISSN: </span>
345             <xsl:for-each select="marc:datafield[@tag=022]/marc:subfield[@code='a']">
346               <span property="issn">
347                 <xsl:value-of select="."/>
348                 <xsl:choose>
349                   <xsl:when test="position()=last()">
350                     <xsl:text>.</xsl:text>
351                   </xsl:when>
352                   <xsl:otherwise>
353                     <xsl:text>; </xsl:text>
354                   </xsl:otherwise>
355                 </xsl:choose>
356               </span>
357             </xsl:for-each>
358           </span>
359         </xsl:if>
360
361         <!-- Other Title  Statement -->
362
363         <xsl:if test="marc:datafield[@tag=246]">
364         <span class="results_summary"><span class="label">Parallelltittel: </span>
365             <xsl:for-each select="marc:datafield[@tag=246]">
366                 <xsl:call-template name="chopPunctuation">
367                   <xsl:with-param name="chopString">
368                     <xsl:call-template name="subfieldSelect">
369                         <xsl:with-param name="codes">abhfgnp</xsl:with-param>
370                     </xsl:call-template>
371                    </xsl:with-param>
372                </xsl:call-template>
373                     <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
374             </xsl:for-each>
375         </span>
376        </xsl:if>
377
378         <!-- Uniform Title  Statement -->
379
380         <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
381         <span class="results_summary"><span class="label">Standardtittel: </span>
382         <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
383             <xsl:variable name="str">
384                 <xsl:for-each select="marc:subfield">
385                     <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
386                         <xsl:value-of select="text()"/>
387                         <xsl:text> </xsl:text>
388                      </xsl:if>
389                 </xsl:for-each>
390             </xsl:variable>
391             <xsl:call-template name="chopPunctuation">
392                 <xsl:with-param name="chopString">
393                     <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
394                         
395                 </xsl:with-param>
396             </xsl:call-template>
397             <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
398         </xsl:for-each>
399         </span>
400         </xsl:if>
401
402         <!-- Subjects -->
403
404         <xsl:if test="marc:datafield[substring(@tag, 1, 1) = '6']">
405             <span class="results_summary subjects"><span class="label">Emne(r): </span>
406             <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
407             <a>
408             <xsl:choose>
409             <!-- Will implement this later
410                 <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'">
411                     <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
412                 </xsl:when>
413             -->
414             <xsl:when test="$TraceSubjectSubdivisions='1'">
415                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:call-template name="subfieldSelect">
416                         <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
417                         <xsl:with-param name="delimeter"> AND </xsl:with-param>
418                         <xsl:with-param name="prefix">(su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/></xsl:with-param>
419                         <xsl:with-param name="suffix"><xsl:value-of select="$TracingQuotesRight"/>)</xsl:with-param>
420                     </xsl:call-template>
421                 </xsl:attribute>
422             </xsl:when>
423             <xsl:otherwise>
424                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su<xsl:value-of select="$SubjectModifier"/>:<xsl:value-of select="$TracingQuotesLeft"/><xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/><xsl:value-of select="$TracingQuotesRight"/></xsl:attribute>
425             </xsl:otherwise>
426             </xsl:choose>
427             <xsl:call-template name="chopPunctuation">
428                 <xsl:with-param name="chopString">
429                     <xsl:call-template name="subfieldSelect">
430                         <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
431                         <xsl:with-param name="subdivCodes">vxyz</xsl:with-param>
432                         <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
433                     </xsl:call-template>
434                 </xsl:with-param>
435             </xsl:call-template>
436             </a>
437             <xsl:choose>
438             <xsl:when test="position()=last()"></xsl:when>
439             <xsl:otherwise> | </xsl:otherwise>
440             </xsl:choose>
441
442             </xsl:for-each>
443             </span>
444         </xsl:if>
445
446         <xsl:if test="marc:datafield[@tag=856]">
447         <span class="results_summary"><span class="label">Nettbasert ressurs: </span>
448         <xsl:for-each select="marc:datafield[@tag=856]">
449             <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
450         <xsl:choose>
451             <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
452                     <xsl:call-template name="subfieldSelect">
453                         <xsl:with-param name="codes">y3z</xsl:with-param>
454                     </xsl:call-template>
455             </xsl:when>
456         <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
457         Klikk her for tilgang
458         </xsl:when>
459         </xsl:choose>
460         </a>
461             <xsl:choose>
462             <xsl:when test="position()=last()"></xsl:when>
463             <xsl:otherwise> | </xsl:otherwise>
464             </xsl:choose>  
465         </xsl:for-each>
466         </span>
467         </xsl:if>
468         
469         <!-- NORMARC does not define indicators for 505
470         <xsl:if test="marc:datafield[@tag=505]">
471         <xsl:for-each select="marc:datafield[@tag=505]">
472         <span class="results_summary"><span class="label">
473         <xsl:choose>
474         <xsl:when test="@ind1=0">
475             Contents:
476         </xsl:when>
477         <xsl:when test="@ind1=1">
478             Incomplete contents:
479         </xsl:when>
480         <xsl:when test="@ind1=1">
481             Partial contents:
482         </xsl:when>
483         </xsl:choose>  
484         </span>
485         <xsl:choose>
486         <xsl:when test="@ind2=0">
487             <xsl:for-each select="marc:subfield[@code='t']">
488                 <xsl:value-of select="marc:subfield[@code=t]"/> <xsl:value-of select="marc:subfield[@code=r]"/>
489             </xsl:for-each> 
490         </xsl:when>
491         <xsl:otherwise>
492             <xsl:call-template name="subfieldSelect">
493                 <xsl:with-param name="codes">au</xsl:with-param>
494             </xsl:call-template>
495         </xsl:otherwise>
496         </xsl:choose>
497         </span>
498         </xsl:for-each>
499         </xsl:if>
500         -->
501         <xsl:if test="marc:datafield[@tag=505]">
502                 <xsl:call-template name="subfieldSelect">
503                 <xsl:with-param name="codes">a</xsl:with-param>
504             </xsl:call-template>
505                 </xsl:if>
506                 
507         <!-- 780 -->
508         <xsl:if test="marc:datafield[@tag=780]">
509         <xsl:for-each select="marc:datafield[@tag=780]">
510         <span class="results_summary"><span class="label">
511         <xsl:choose>
512                 <xsl:when test="@ind2=0">
513                     Fortsettelse av:
514                 </xsl:when>
515                 <xsl:when test="@ind2=1">
516                     Delvis fortsettelse av:
517                 </xsl:when>
518                 <xsl:when test="@ind2=2">
519                     Avløser:
520                 </xsl:when>
521                 <xsl:when test="@ind2=3">
522                     Avløser delvis:
523                 </xsl:when>
524                 <xsl:when test="@ind2=4">
525                     Sammenslåing av: ... ; og ...
526                 </xsl:when>
527                 <xsl:when test="@ind2=5">
528                     Har tatt opp:
529                 </xsl:when>
530                 <xsl:when test="@ind2=6">
531                     Har delvis tatt opp:
532                 </xsl:when>
533                 <xsl:when test="@ind2=7">
534                     Utskilt fra:
535                 </xsl:when>
536         </xsl:choose>
537         </span>
538                 <xsl:variable name="f780">
539                     <xsl:call-template name="subfieldSelect">
540                         <xsl:with-param name="codes">a_t</xsl:with-param>
541                     </xsl:call-template>
542                 </xsl:variable>
543              <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="str:encode-uri(translate($f780, '()', ''), true())"/></xsl:attribute>
544                 <xsl:value-of select="translate($f780, '()', '')"/>
545             </a>
546         </span>
547  
548         <xsl:choose>
549         <xsl:when test="@ind1=0">
550             <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
551         </xsl:when>
552         </xsl:choose>
553
554         </xsl:for-each>
555         </xsl:if>
556
557         <!-- 785 -->
558         <xsl:if test="marc:datafield[@tag=785]">
559         <xsl:for-each select="marc:datafield[@tag=785]">
560         <span class="results_summary"><span class="label">
561         <xsl:choose>
562                 <xsl:when test="@ind2=0">
563                     Fortsettelse i:
564                 </xsl:when>
565                 <xsl:when test="@ind2=1">
566                     Fortsettes delvis i:
567                 </xsl:when>
568                 <xsl:when test="@ind2=2">
569                     Avløst av:
570                 </xsl:when>
571                 <xsl:when test="@ind2=3">
572                     Delvis avløst av:
573                 </xsl:when>
574                 <xsl:when test="@ind2=4">
575                     Gått inn i:
576                 </xsl:when>
577                 <xsl:when test="@ind2=5">
578                     Delvis gått inn i:
579                 </xsl:when>
580                 <xsl:when test="@ind2=6">
581                     Fortsettes av: ...; og ...
582                 </xsl:when>
583                 <xsl:when test="@ind2=7">
584                         Slått sammen med: .., til: ...
585                 </xsl:when>
586         </xsl:choose>
587         </span>
588                    <xsl:variable name="f785">
589                     <xsl:call-template name="subfieldSelect">
590                         <xsl:with-param name="codes">a_t</xsl:with-param>
591                     </xsl:call-template>
592                 </xsl:variable>
593
594                 <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="str:encode-uri(translate($f785, '()', ''), true())"/></xsl:attribute>
595                 <xsl:value-of select="translate($f785, '()', '')"/>
596             </a>
597
598         </span>
599         </xsl:for-each>
600         </xsl:if>
601
602         <!-- This will only work if the OPACBaseURL syspref is set. -->
603         <xsl:if test="string-length($OPACBaseURL) > 0">
604         <p>OPAC View: <a>
605                       <xsl:attribute name="href"><xsl:value-of select="$OPACBaseURL"/>/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
606                       <xsl:attribute name="target">_blank</xsl:attribute>
607                       Open in new window
608                       </a></p>
609          </xsl:if>
610
611     </xsl:template>
612
613     <xsl:template name="part">
614         <xsl:variable name="partNumber">
615             <xsl:call-template name="specialSubfieldSelect">
616                 <xsl:with-param name="axis">n</xsl:with-param>
617                 <xsl:with-param name="anyCodes">n</xsl:with-param>
618                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
619             </xsl:call-template>
620         </xsl:variable>
621         <xsl:variable name="partName">
622             <xsl:call-template name="specialSubfieldSelect">
623                 <xsl:with-param name="axis">p</xsl:with-param>
624                 <xsl:with-param name="anyCodes">p</xsl:with-param>
625                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
626             </xsl:call-template>
627         </xsl:variable>
628         <xsl:if test="string-length(normalize-space($partNumber))">
629                 <xsl:call-template name="chopPunctuation">
630                     <xsl:with-param name="chopString" select="$partNumber"/>
631                 </xsl:call-template>
632         </xsl:if>
633         <xsl:if test="string-length(normalize-space($partName))">
634                 <xsl:call-template name="chopPunctuation">
635                     <xsl:with-param name="chopString" select="$partName"/>
636                 </xsl:call-template>
637         </xsl:if>
638     </xsl:template>
639
640     <xsl:template name="specialSubfieldSelect">
641         <xsl:param name="anyCodes"/>
642         <xsl:param name="axis"/>
643         <xsl:param name="beforeCodes"/>
644         <xsl:param name="afterCodes"/>
645         <xsl:variable name="str">
646             <xsl:for-each select="marc:subfield">
647                 <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])">
648                     <xsl:value-of select="text()"/>
649                     <xsl:text> </xsl:text>
650                 </xsl:if>
651             </xsl:for-each>
652         </xsl:variable>
653         <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
654     </xsl:template>
655 </xsl:stylesheet>