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