View | Details | Raw Unified | Return to bug 7309
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/NORMARCslim2intranetDetail.xsl (+535 lines)
Line 0 Link Here
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-community.org/items"
6
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7
  exclude-result-prefixes="marc items">
8
    <xsl:import href="NORMARCslimUtils.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
16
        <!-- Sysprefs -->
17
        <xsl:variable name="OPACBaseURL" select="marc:sysprefs/marc:syspref[@name='OPACBaseURL']"/>
18
19
        <xsl:variable name="leader" select="marc:leader"/>
20
        <xsl:variable name="leader6" select="substring($leader,7,1)"/>
21
        <xsl:variable name="leader7" select="substring($leader,8,1)"/>
22
        <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
23
        <xsl:variable name="field019b" select="marc:datafield[@tag=019]/marc:subfield[@code='b']"/>
24
        <xsl:variable name="biblionumber" select="marc:datafield[@tag=999]/marc:subfield[@code='c']"/>
25
        <xsl:variable name="materialTypeCode">
26
            <xsl:choose>
27
                <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Mon</xsl:when>
28
                <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>
29
                <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>
30
                <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kar</xsl:when>
31
                <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>
32
                <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
33
                <xsl:when test="$leader6='o'">kom</xsl:when>
34
                <xsl:when test="$field019b='h' or $leader6='r'">trd</xsl:when>
35
                <xsl:when test="$field019b='j' or $leader6='a'">
36
                    <xsl:choose>
37
                        <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Mon</xsl:when>
38
                        <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Per</xsl:when>
39
                    </xsl:choose>
40
                </xsl:when>
41
            </xsl:choose>
42
        </xsl:variable>
43
        <xsl:variable name="materialTypeLabel">
44
                        <xsl:choose>
45
                <xsl:when test="$field019b='b' or $field019b='k' or $field019b='l' or $leader6='b'">Bok</xsl:when>
46
                <xsl:when test="$field019b='e' or contains($field019b,'ec') or contains($field019b,'ed') or contains($field019b,'ee') or contains($field019b,'ef') or $leader6='g'">Film og video</xsl:when>
47
                <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'">Musikalier</xsl:when>
48
                <xsl:when test="$field019b='a' or contains($field019b,'ab') or contains($field019b,'aj') or $leader6='e' or $leader6='f'">Kart</xsl:when>
49
                <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'">Grafisk materiale</xsl:when>
50
                <xsl:when test="$field019b='g' or contains($field019b,'gb') or contains($field019b,'gd') or contains($field019b,'ge') or $leader6='m'">Fil</xsl:when>
51
                <xsl:when test="$leader6='o'">Kombidokument</xsl:when>
52
                <xsl:when test="$field019b='h' or $leader6='r'">Tredimensjonal gjenstand</xsl:when>
53
                <xsl:when test="$field019b='j' or $leader6='a'">
54
                    <xsl:choose>
55
                        <xsl:when test="$leader7='a' or $leader7='c' or $leader7='m' or $leader7='p'">Bok</xsl:when>
56
                        <xsl:when test="$field019b='j' or $leader7='b' or $leader7='s'">Periodikum</xsl:when>
57
                    </xsl:choose>
58
                </xsl:when>
59
            </xsl:choose>
60
61
        </xsl:variable>
62
63
        <!-- Tittel og ansvarsopplysninger -->
64
        <xsl:if test="marc:datafield[@tag=245]">
65
        <h1>
66
            <xsl:for-each select="marc:datafield[@tag=245]">
67
                    <xsl:call-template name="subfieldSelect">
68
                        <xsl:with-param name="codes">a</xsl:with-param>
69
                    </xsl:call-template>
70
                    <xsl:if test="marc:subfield[@code='b']">
71
                        <xsl:text> : </xsl:text>
72
                        <xsl:call-template name="subfieldSelect">
73
                            <xsl:with-param name="codes">b</xsl:with-param>
74
                        </xsl:call-template>
75
                    </xsl:if>
76
                    <xsl:if test="marc:subfield[@code='h']">
77
                        <xsl:text> </xsl:text>
78
                        (<xsl:call-template name="subfieldSelect">
79
                            <xsl:with-param name="codes">h</xsl:with-param>
80
                        </xsl:call-template>) 
81
                    </xsl:if>
82
                    <xsl:text> </xsl:text>
83
                    <xsl:call-template name="subfieldSelect">
84
                        <xsl:with-param name="codes">np</xsl:with-param>
85
                    </xsl:call-template>
86
            </xsl:for-each>
87
        </h1>
88
        </xsl:if>
89
90
        <!-- Author Statement -->
91
		<!-- 245$9 is Koha authority number --> 
92
        <xsl:choose>
93
        <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]">
94
        <h5 class="author">av
95
        <xsl:for-each select="marc:datafield[@tag=100 or @tag=700]">
96
        <a>
97
        <xsl:choose>
98
            <xsl:when test="marc:subfield[@code=9]">
99
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
100
            </xsl:when>
101
            <xsl:otherwise>
102
            <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
103
            </xsl:otherwise>
104
        </xsl:choose>
105
        <xsl:call-template name="nameABCDQ"/></a>
106
        <xsl:choose>
107
        <xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
108
        </xsl:for-each>
109
110
        <xsl:for-each select="marc:datafield[@tag=110 or @tag=710]">
111
        <a>
112
        <xsl:choose>
113
            <xsl:when test="marc:subfield[@code=9]">
114
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
115
            </xsl:when>
116
            <xsl:otherwise>
117
            <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>      
118
            </xsl:otherwise>
119
        </xsl:choose>
120
        <xsl:call-template name="nameABCDN"/></a>
121
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
122
        </xsl:for-each>
123
124
        <xsl:for-each select="marc:datafield[@tag=111 or @tag=711]">
125
        <a>
126
        <xsl:choose>
127
            <xsl:when test="marc:subfield[@code=9]">
128
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
129
            </xsl:when>
130
            <xsl:otherwise>
131
            <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
132
            </xsl:otherwise>
133
        </xsl:choose>
134
        <xsl:call-template name="nameACDEQ"/></a>
135
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
136
137
        </xsl:for-each>
138
        </h5>
139
        </xsl:when>
140
        </xsl:choose>
141
142
143
        <xsl:if test="$materialTypeCode!=''">
144
        <span class="results_summary"><span class="label">Materialtype: </span>
145
        <xsl:element name="img"><xsl:attribute name="src">/opac-tmpl/prog/famfamfam/<xsl:value-of select="$materialTypeCode"/>.png</xsl:attribute><xsl:attribute name="alt"></xsl:attribute></xsl:element>
146
        <xsl:value-of select="$materialTypeLabel"/>
147
        </span>
148
        </xsl:if>
149
150
        <!--Series -->
151
        <xsl:if test="marc:datafield[@tag=440 or @tag=490]">
152
	        <span class="results_summary"><span class="label">Series: </span>
153
	        <xsl:for-each select="marc:datafield[@tag=440]">
154
	             <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
155
	            <xsl:call-template name="chopPunctuation">
156
	                            <xsl:with-param name="chopString">
157
	                                <xsl:call-template name="subfieldSelect">
158
	                                    <xsl:with-param name="codes">av</xsl:with-param>
159
	                                </xsl:call-template>
160
	                            </xsl:with-param>
161
	                        </xsl:call-template>
162
				</a>
163
	                    <xsl:text> </xsl:text><xsl:call-template name="part"/>
164
	            <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
165
	        </xsl:for-each>
166
	
167
	        <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
168
	             <a href="/cgi-bin/koha/catalogue/search.pl?q=se:{marc:subfield[@code='a']}">
169
	                        <xsl:call-template name="chopPunctuation">
170
	                            <xsl:with-param name="chopString">
171
	                                <xsl:call-template name="subfieldSelect">
172
	                                    <xsl:with-param name="codes">av</xsl:with-param>
173
	                                </xsl:call-template>
174
	                            </xsl:with-param>
175
	                        </xsl:call-template>
176
	            </a>
177
	                    <xsl:call-template name="part"/>
178
	        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
179
	        </xsl:for-each>
180
	        </span>
181
        </xsl:if>
182
183
        <!-- Publisher Statement -->
184
        
185
        <xsl:if test="marc:datafield[@tag=260]">
186
        <span class="results_summary"><span class="label">Utgiver: </span>
187
            <xsl:for-each select="marc:datafield[@tag=260]">
188
                <xsl:call-template name="chopPunctuation">
189
                  <xsl:with-param name="chopString">
190
                    <xsl:call-template name="subfieldSelect">
191
                        <xsl:with-param name="codes">bcg</xsl:with-param>
192
                    </xsl:call-template>
193
                   </xsl:with-param>
194
               </xsl:call-template>
195
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
196
            </xsl:for-each>
197
        </span> 
198
        </xsl:if>
199
200
        <!-- Edition Statement -->
201
        
202
        <xsl:if test="marc:datafield[@tag=250]">
203
        <span class="results_summary"><span class="label">Utgave: </span>
204
            <xsl:for-each select="marc:datafield[@tag=250]">
205
                <xsl:call-template name="chopPunctuation">
206
                  <xsl:with-param name="chopString">
207
                    <xsl:call-template name="subfieldSelect">
208
                        <xsl:with-param name="codes">ab</xsl:with-param>
209
                    </xsl:call-template>
210
                   </xsl:with-param>
211
               </xsl:call-template>
212
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
213
            </xsl:for-each>
214
        </span>
215
        </xsl:if>
216
217
        <!-- Description -->
218
        
219
        <xsl:if test="marc:datafield[@tag=300]">
220
        <span class="results_summary"><span class="label">Beskrivelse: </span>
221
            <xsl:for-each select="marc:datafield[@tag=300]">
222
                <xsl:call-template name="chopPunctuation">
223
                  <xsl:with-param name="chopString">
224
                    <xsl:call-template name="subfieldSelect">
225
                        <xsl:with-param name="codes">abceg</xsl:with-param>
226
                    </xsl:call-template>
227
                   </xsl:with-param>
228
               </xsl:call-template>
229
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
230
            </xsl:for-each>
231
        </span>
232
       </xsl:if>
233
234
       <abbr class="unapi-id" title="koha:biblionumber:{marc:datafield[@tag=999]/marc:subfield[@code='c']}" ><!-- unAPI --></abbr>
235
236
       <xsl:if test="marc:datafield[@tag=020]">
237
        <span class="results_summary"><span class="label">ISBN: </span>
238
        <xsl:for-each select="marc:datafield[@tag=020]">
239
        <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
240
                <xsl:value-of select="marc:subfield[@code='a']"/>
241
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
242
        </xsl:for-each>
243
        </span>
244
        </xsl:if>
245
246
        <xsl:if test="marc:datafield[@tag=022]">
247
        <span class="results_summary"><span class="label">ISSN: </span>
248
        <xsl:for-each select="marc:datafield[@tag=022]">
249
                <xsl:value-of select="marc:subfield[@code='a']"/>
250
                <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
251
        </xsl:for-each>
252
        </span>
253
        </xsl:if>
254
255
        <!-- Other Title  Statement -->
256
257
        <xsl:if test="marc:datafield[@tag=246]">
258
        <span class="results_summary"><span class="label">Parallelltittel: </span>
259
            <xsl:for-each select="marc:datafield[@tag=246]">
260
                <xsl:call-template name="chopPunctuation">
261
                  <xsl:with-param name="chopString">
262
                    <xsl:call-template name="subfieldSelect">
263
                        <xsl:with-param name="codes">abhfgnp</xsl:with-param>
264
                    </xsl:call-template>
265
                   </xsl:with-param>
266
               </xsl:call-template>
267
                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
268
            </xsl:for-each>
269
        </span>
270
       </xsl:if>
271
272
        <!-- Uniform Title  Statement -->
273
274
        <xsl:if test="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
275
        <span class="results_summary"><span class="label">Standardtittel: </span>
276
        <xsl:for-each select="marc:datafield[@tag=130]|marc:datafield[@tag=240]|marc:datafield[@tag=730][@ind2!=2]">
277
            <xsl:variable name="str">
278
                <xsl:for-each select="marc:subfield">
279
                    <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'])))">
280
                        <xsl:value-of select="text()"/>
281
                        <xsl:text> </xsl:text>
282
                     </xsl:if>
283
                </xsl:for-each>
284
            </xsl:variable>
285
            <xsl:call-template name="chopPunctuation">
286
                <xsl:with-param name="chopString">
287
                    <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
288
                        
289
                </xsl:with-param>
290
            </xsl:call-template>
291
            <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
292
        </xsl:for-each>
293
        </span>
294
        </xsl:if>
295
296
        <xsl:if test="marc:datafield[substring(@tag, 1, 1) = '6']">
297
            <span class="results_summary"><span class="label">Emner: </span>
298
            <xsl:for-each select="marc:datafield[substring(@tag, 1, 1) = '6']">
299
            <a>
300
            <xsl:choose>
301
            <xsl:when test="marc:subfield[@code=9]">
302
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
303
            </xsl:when>
304
            <xsl:otherwise>
305
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
306
            </xsl:otherwise>
307
            </xsl:choose>
308
            <xsl:call-template name="chopPunctuation">
309
                <xsl:with-param name="chopString">
310
                    <xsl:call-template name="subfieldSelect">
311
                        <xsl:with-param name="codes">abcdvxyz</xsl:with-param>
312
                        <xsl:with-param name="subdivCodes">vxyz</xsl:with-param>
313
                        <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
314
                    </xsl:call-template>
315
                </xsl:with-param>
316
            </xsl:call-template></a>
317
            <xsl:choose>
318
            <xsl:when test="position()=last()"></xsl:when>
319
            <xsl:otherwise> | </xsl:otherwise>
320
            </xsl:choose>
321
322
            </xsl:for-each>
323
            </span>
324
        </xsl:if>
325
326
        <xsl:if test="marc:datafield[@tag=856]">
327
        <span class="results_summary"><span class="label">Nettbasert ressurs: </span>
328
        <xsl:for-each select="marc:datafield[@tag=856]">
329
            <a><xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
330
        <xsl:choose>
331
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
332
                    <xsl:call-template name="subfieldSelect">
333
                        <xsl:with-param name="codes">y3z</xsl:with-param>
334
                    </xsl:call-template>
335
            </xsl:when>
336
        <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
337
        Klikk her for tilgang
338
        </xsl:when>
339
        </xsl:choose>
340
        </a>
341
            <xsl:choose>
342
            <xsl:when test="position()=last()"></xsl:when>
343
            <xsl:otherwise> | </xsl:otherwise>
344
            </xsl:choose>  
345
        </xsl:for-each>
346
        </span>
347
        </xsl:if>
348
        
349
        <!-- NORMARC does not define indicators for 505
350
        <xsl:if test="marc:datafield[@tag=505]">
351
        <xsl:for-each select="marc:datafield[@tag=505]">
352
        <span class="results_summary"><span class="label">
353
        <xsl:choose>
354
        <xsl:when test="@ind1=0">
355
            Contents:
356
        </xsl:when>
357
        <xsl:when test="@ind1=1">
358
            Incomplete contents:
359
        </xsl:when>
360
        <xsl:when test="@ind1=1">
361
            Partial contents:
362
        </xsl:when>
363
        </xsl:choose>  
364
        </span>
365
        <xsl:choose>
366
        <xsl:when test="@ind2=0">
367
            <xsl:for-each select="marc:subfield[@code='t']">
368
                <xsl:value-of select="marc:subfield[@code=t]"/> <xsl:value-of select="marc:subfield[@code=r]"/>
369
            </xsl:for-each> 
370
        </xsl:when>
371
        <xsl:otherwise>
372
            <xsl:call-template name="subfieldSelect">
373
                <xsl:with-param name="codes">au</xsl:with-param>
374
            </xsl:call-template>
375
        </xsl:otherwise>
376
        </xsl:choose>
377
        </span>
378
        </xsl:for-each>
379
        </xsl:if>
380
        -->
381
        <xsl:if test="marc:datafield[@tag=505]">
382
	        <xsl:call-template name="subfieldSelect">
383
                <xsl:with-param name="codes">a</xsl:with-param>
384
            </xsl:call-template>
385
		</xsl:if>
386
		
387
        <!-- 780 -->
388
        <xsl:if test="marc:datafield[@tag=780]">
389
        <xsl:for-each select="marc:datafield[@tag=780]">
390
        <span class="results_summary"><span class="label">
391
        <xsl:choose>
392
	        <xsl:when test="@ind2=0">
393
	            Fortsettelse av:
394
	        </xsl:when>
395
	        <xsl:when test="@ind2=1">
396
	            Delvis fortsettelse av:
397
	        </xsl:when>
398
	        <xsl:when test="@ind2=2">
399
	            Avløser:
400
	        </xsl:when>
401
	        <xsl:when test="@ind2=3">
402
	            Avløser delvis:
403
	        </xsl:when>
404
	        <xsl:when test="@ind2=4">
405
	            Sammenslåing av: ... ; og ...
406
	        </xsl:when>
407
	        <xsl:when test="@ind2=5">
408
	            Har tatt opp:
409
	        </xsl:when>
410
	        <xsl:when test="@ind2=6">
411
	            Har delvis tatt opp:
412
	        </xsl:when>
413
	        <xsl:when test="@ind2=7">
414
	            Utskilt fra:
415
	        </xsl:when>
416
        </xsl:choose>
417
        </span>
418
                <xsl:variable name="f780">
419
                    <xsl:call-template name="subfieldSelect">
420
                        <xsl:with-param name="codes">a_t</xsl:with-param>
421
                    </xsl:call-template>
422
                </xsl:variable>
423
             <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="translate($f780, '()', '')"/></xsl:attribute>
424
                <xsl:value-of select="translate($f780, '()', '')"/>
425
            </a>
426
        </span>
427
 
428
        <xsl:choose>
429
        <xsl:when test="@ind1=0">
430
            <span class="results_summary"><xsl:value-of select="marc:subfield[@code='n']"/></span>
431
        </xsl:when>
432
        </xsl:choose>
433
434
        </xsl:for-each>
435
        </xsl:if>
436
437
        <!-- 785 -->
438
        <xsl:if test="marc:datafield[@tag=785]">
439
        <xsl:for-each select="marc:datafield[@tag=785]">
440
        <span class="results_summary"><span class="label">
441
        <xsl:choose>
442
	        <xsl:when test="@ind2=0">
443
	            Fortsettelse i:
444
	        </xsl:when>
445
	        <xsl:when test="@ind2=1">
446
	            Fortsettes delvis i:
447
	        </xsl:when>
448
	        <xsl:when test="@ind2=2">
449
	            Avløst av:
450
	        </xsl:when>
451
	        <xsl:when test="@ind2=3">
452
	            Delvis avløst av:
453
	        </xsl:when>
454
	        <xsl:when test="@ind2=4">
455
	            Gått inn i:
456
	        </xsl:when>
457
	        <xsl:when test="@ind2=5">
458
	            Delvis gått inn i:
459
	        </xsl:when>
460
	        <xsl:when test="@ind2=6">
461
	            Fortsettes av: ...; og ...
462
	        </xsl:when>
463
	        <xsl:when test="@ind2=7">
464
	             	Slått sammen med: .., til: ...
465
	        </xsl:when>
466
        </xsl:choose>
467
        </span>
468
                   <xsl:variable name="f785">
469
                    <xsl:call-template name="subfieldSelect">
470
                        <xsl:with-param name="codes">a_t</xsl:with-param>
471
                    </xsl:call-template>
472
                </xsl:variable>
473
474
                <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="translate($f785, '()', '')"/></xsl:attribute>
475
                <xsl:value-of select="translate($f785, '()', '')"/>
476
            </a>
477
478
        </span>
479
        </xsl:for-each>
480
        </xsl:if>
481
482
        <!-- This will only work if the OPACBaseURL syspref is set. -->
483
        <xsl:if test="string-length($OPACBaseURL) > 0">
484
        <p>OPAC View: <a>
485
                      <xsl:attribute name="href">http://<xsl:value-of select="$OPACBaseURL"/>/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
486
                      <xsl:attribute name="target">_blank</xsl:attribute>
487
                      Open in new window
488
                      </a></p>
489
         </xsl:if>
490
491
    </xsl:template>
492
493
    <xsl:template name="part">
494
        <xsl:variable name="partNumber">
495
            <xsl:call-template name="specialSubfieldSelect">
496
                <xsl:with-param name="axis">n</xsl:with-param>
497
                <xsl:with-param name="anyCodes">n</xsl:with-param>
498
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
499
            </xsl:call-template>
500
        </xsl:variable>
501
        <xsl:variable name="partName">
502
            <xsl:call-template name="specialSubfieldSelect">
503
                <xsl:with-param name="axis">p</xsl:with-param>
504
                <xsl:with-param name="anyCodes">p</xsl:with-param>
505
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
506
            </xsl:call-template>
507
        </xsl:variable>
508
        <xsl:if test="string-length(normalize-space($partNumber))">
509
                <xsl:call-template name="chopPunctuation">
510
                    <xsl:with-param name="chopString" select="$partNumber"/>
511
                </xsl:call-template>
512
        </xsl:if>
513
        <xsl:if test="string-length(normalize-space($partName))">
514
                <xsl:call-template name="chopPunctuation">
515
                    <xsl:with-param name="chopString" select="$partName"/>
516
                </xsl:call-template>
517
        </xsl:if>
518
    </xsl:template>
519
520
    <xsl:template name="specialSubfieldSelect">
521
        <xsl:param name="anyCodes"/>
522
        <xsl:param name="axis"/>
523
        <xsl:param name="beforeCodes"/>
524
        <xsl:param name="afterCodes"/>
525
        <xsl:variable name="str">
526
            <xsl:for-each select="marc:subfield">
527
                <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])">
528
                    <xsl:value-of select="text()"/>
529
                    <xsl:text> </xsl:text>
530
                </xsl:if>
531
            </xsl:for-each>
532
        </xsl:variable>
533
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
534
    </xsl:template>
535
</xsl:stylesheet>
(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/NORMARCslimUtils.xsl (-1 / +205 lines)
Line 0 Link Here
0
- 
1
<?xml version='1.0'?>
2
<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
	<xsl:template name="datafield">
4
		<xsl:param name="tag"/>
5
		<xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
6
		<xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
7
		<xsl:param name="subfields"/>
8
		<xsl:element name="datafield">
9
			<xsl:attribute name="tag">
10
				<xsl:value-of select="$tag"/>
11
			</xsl:attribute>
12
			<xsl:attribute name="ind1">
13
				<xsl:value-of select="$ind1"/>
14
			</xsl:attribute>
15
			<xsl:attribute name="ind2">
16
				<xsl:value-of select="$ind2"/>
17
			</xsl:attribute>
18
			<xsl:copy-of select="$subfields"/>
19
		</xsl:element>
20
	</xsl:template>
21
22
	<xsl:template name="subfieldSelect">
23
		<xsl:param name="codes"/>
24
		<xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
25
		<xsl:param name="subdivCodes"/>
26
		<xsl:param name="subdivDelimiter"/>
27
		<xsl:variable name="str">
28
			<xsl:for-each select="marc:subfield">
29
				<xsl:if test="contains($codes, @code)">
30
                    <xsl:if test="contains($subdivCodes, @code)">
31
                        <xsl:value-of select="$subdivDelimiter"/>
32
                    </xsl:if>
33
					<xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
34
				</xsl:if>
35
			</xsl:for-each>
36
		</xsl:variable>
37
		<xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
38
	</xsl:template>
39
40
	<xsl:template name="buildSpaces">
41
		<xsl:param name="spaces"/>
42
		<xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
43
		<xsl:if test="$spaces>0">
44
			<xsl:value-of select="$char"/>
45
			<xsl:call-template name="buildSpaces">
46
				<xsl:with-param name="spaces" select="$spaces - 1"/>
47
				<xsl:with-param name="char" select="$char"/>
48
			</xsl:call-template>
49
		</xsl:if>
50
	</xsl:template>
51
52
	<xsl:template name="chopPunctuation">
53
		<xsl:param name="chopString"/>
54
		<xsl:variable name="length" select="string-length($chopString)"/>
55
		<xsl:choose>
56
			<xsl:when test="$length=0"/>
57
			<xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
58
				<xsl:call-template name="chopPunctuation">
59
					<xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
60
				</xsl:call-template>
61
			</xsl:when>
62
			<xsl:when test="not($chopString)"/>
63
			<xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
64
		</xsl:choose>
65
<xsl:text> </xsl:text>
66
	</xsl:template>
67
68
<xsl:template name="nameABCDQ">
69
<xsl:call-template name="chopPunctuation">
70
<xsl:with-param name="chopString">
71
<xsl:call-template name="subfieldSelect">
72
<xsl:with-param name="codes">aq</xsl:with-param>
73
</xsl:call-template>
74
</xsl:with-param>
75
<xsl:with-param name="punctuation">
76
<xsl:text>:,;/ </xsl:text>
77
</xsl:with-param>
78
</xsl:call-template>
79
<xsl:call-template name="termsOfAddress"/>
80
</xsl:template>
81
82
<xsl:template name="nameABCDN">
83
<xsl:for-each select="marc:subfield[@code='a']">
84
<xsl:call-template name="chopPunctuation">
85
<xsl:with-param name="chopString" select="."/>
86
</xsl:call-template>
87
</xsl:for-each>
88
<xsl:for-each select="marc:subfield[@code='b']">
89
<xsl:value-of select="."/>
90
</xsl:for-each>
91
<xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
92
<xsl:call-template name="subfieldSelect">
93
<xsl:with-param name="codes">cdn</xsl:with-param>
94
</xsl:call-template>
95
</xsl:if>
96
</xsl:template>
97
98
<xsl:template name="nameACDEQ">
99
<xsl:call-template name="subfieldSelect">
100
<xsl:with-param name="codes">acdeq</xsl:with-param>
101
</xsl:call-template>
102
</xsl:template>
103
104
<xsl:template name="termsOfAddress">
105
<xsl:if test="marc:subfield[@code='b' or @code='c']">
106
<xsl:call-template name="chopPunctuation">
107
<xsl:with-param name="chopString">
108
<xsl:call-template name="subfieldSelect">
109
<xsl:with-param name="codes">bc</xsl:with-param>
110
</xsl:call-template>
111
</xsl:with-param>
112
</xsl:call-template>
113
</xsl:if>
114
</xsl:template>
115
116
    <!-- Function m880Select:  Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
117
        - should be called immediately before the corresonding latin tags are processed 
118
        - tags in right-to-left languages are displayed floating right
119
        * Parameter:
120
           + basetags: display these tags if found in linkage section ( subfield 6) of tag 880
121
           + codes: display these subfields codes
122
        * Options: 
123
            - class: wrap output in <span class="$class">...</span>
124
            - label: prefix each(!) tag with label $label
125
            - bibno: link to biblionumber $bibno
126
            - index: build a search link using index $index with subfield $a as key; if subfield $9 is present use index 'an' with key $9 instead.
127
         * Limitations:
128
            - displays every field on a separate line (to switch between rtl and ltr)
129
         * Pitfalls:
130
           (!) output might be empty
131
    -->
132
    <xsl:template name="m880Select">
133
         <xsl:param name="basetags"/> <!-- e.g.  100,700,110,710 -->
134
        <xsl:param name="codes"/> <!-- e.g. abc  -->
135
        <xsl:param name="class"/> <!-- e.g. results_summary -->
136
        <xsl:param name="label"/> <!-- e.g.  Edition -->
137
        <xsl:param name="bibno"/>
138
        <xsl:param name="index"/> <!-- e.g.  au -->
139
140
        <xsl:for-each select="marc:datafield[@tag=880]">
141
            <xsl:variable name="code6" select="marc:subfield[@code=6]"/>
142
            <xsl:if test="contains(string($basetags), substring($code6,1,3))">
143
                <span>
144
                    <xsl:if test="boolean($class)">
145
                        <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
146
                    </xsl:if>
147
                    <xsl:choose>
148
                        <!-- display right-to-left tags floating right of their left-to-right counterparts -->
149
                        <xsl:when test="substring($code6,10,2) ='/r'">
150
                            <xsl:attribute name="style">display:block; text-align:right; float:right; width:50%; padding-left:20px</xsl:attribute>
151
                            <xsl:attribute name="dir">rtl</xsl:attribute>
152
                        </xsl:when>
153
                        <xsl:otherwise>
154
                            <xsl:attribute name="style">display:block; </xsl:attribute>
155
                        </xsl:otherwise>
156
                    </xsl:choose>
157
                    <xsl:if test="boolean($label)">
158
                        <span class="label">
159
                            <xsl:value-of select="$label"/>
160
                        </span>
161
                    </xsl:if>
162
                    <xsl:variable name="str">
163
                        <xsl:for-each select="marc:subfield">
164
                            <xsl:if test="contains($codes, @code)">
165
                                <xsl:value-of select="text()"/>
166
                                <xsl:text> </xsl:text>
167
                            </xsl:if>
168
                        </xsl:for-each>
169
                    </xsl:variable>
170
                    <xsl:choose>
171
                        <xsl:when test="boolean($bibno)">
172
                            <a>
173
                                <xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of  select="$bibno"/></xsl:attribute>
174
                                <xsl:value-of select="$str"/>
175
                            </a>
176
                        </xsl:when>
177
                       <xsl:when test="boolean($index) and boolean(marc:subfield[@code=9])">
178
                            <a>
179
                                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of  select="marc:subfield[@code=9]"/></xsl:attribute>
180
                                  <xsl:value-of select="$str"/>
181
                            </a>
182
                        </xsl:when>
183
                        <xsl:when test="boolean($index)">
184
                            <a>
185
                                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of  select="$index"/>:<xsl:value-of  select="marc:subfield[@code='a']"/></xsl:attribute>
186
                                <xsl:value-of select="$str"/>
187
                            </a>
188
                        </xsl:when>
189
                        <xsl:otherwise>
190
                            <xsl:value-of select="$str"/>
191
                        </xsl:otherwise>
192
                    </xsl:choose>
193
                </span>
194
            </xsl:if>
195
        </xsl:for-each>
196
197
    </xsl:template>
198
199
</xsl:stylesheet>
200
201
<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
202
<metaInformation>
203
<scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
204
</metaInformation>
205
-->

Return to bug 7309