Add MARC field 876$f to tmarc.xsl, named "loan-period", #4411
[pazpar2-moved-to-github.git] / etc / tmarc.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
4   xmlns:tmarc="http://www.indexdata.com/turbomarc">
5
6   <xsl:output indent="yes" method="xml" version="1.0"
7     encoding="UTF-8" />
8   <xsl:param name="medium"/>
9
10   <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
11     http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
12   <xsl:template name="record-hook" />
13
14
15   <xsl:template match="/">
16       <xsl:apply-templates />
17   </xsl:template>
18
19   <xsl:template match="tmarc:collection">
20     <collection>
21       <xsl:apply-templates />
22     </collection>
23   </xsl:template>
24
25   <xsl:template match="tmarc:r">
26     <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
27     <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
28     <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
29     <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
30     <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
31     <!-- Does not always hit the right substring. The field is not always fixed-width? -->
32     <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
33     <xsl:variable name="contains110" select="tmarc:d110" />
34     <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
35     <xsl:variable name="typeofrec" select="substring(tmarc:l, 7, 1)"/>
36     <xsl:variable name="typeofvm" select="substring(tmarc:c008, 34, 1)"/>
37     <xsl:variable name="biblevel" select="substring(tmarc:l, 8, 1)"/>
38     <xsl:variable name="physdes" select="substring(tmarc:c007, 1, 1)"/>
39     <xsl:variable name="form1" select="substring(tmarc:c008, 24, 1)"/>
40     <xsl:variable name="form2" select="substring(tmarc:c008, 30, 1)"/>
41     <xsl:variable name="oclca" select="substring(tmarc:c007, 1, 1)"/>
42     <xsl:variable name="oclcb" select="substring(tmarc:c007, 2, 1)"/>
43     <xsl:variable name="oclcd" select="substring(tmarc:c007, 4, 1)"/>
44     <xsl:variable name="oclce" select="substring(tmarc:c007, 5, 1)"/>
45     <xsl:variable name="typeofserial" select="substring(tmarc:c008, 22, 1)"/>
46
47     <xsl:variable name="electronic">
48       <xsl:choose>
49         <xsl:when test="$form1='s' or $form1='q' or $form1='o' or
50            $form2='s' or $form2='q' or $form2='o'">
51            <xsl:text>yes</xsl:text>
52         </xsl:when>
53         <xsl:otherwise/>
54       </xsl:choose>
55     </xsl:variable>
56
57     <xsl:variable name="vmedium">
58       <xsl:choose>
59         <xsl:when test="string-length($medium)"><xsl:value-of select="$medium" /></xsl:when>
60         <xsl:when test="($typeofrec='a' or $typeofrec='t') and $biblevel='m'">book</xsl:when>
61         <xsl:when test="$typeofrec='j' or $typeofrec='i'">
62           <xsl:text>recording</xsl:text>
63           <xsl:choose>
64             <xsl:when test="$oclcb='d' and $oclcd='f'">-cd</xsl:when>
65             <xsl:when test="$oclcb='s'">-cassette</xsl:when>
66             <xsl:when test="$oclcb='d' and $oclcd='a' or $oclcd='b' or
67               $oclcd='c' or $oclcd='d' or $oclcd='e'">-vinyl</xsl:when>
68           </xsl:choose>
69         </xsl:when>
70         <xsl:when test="$typeofrec='g'">
71           <xsl:choose>
72             <xsl:when test="$typeofvm='m' or $typeofvm='v'">
73               <xsl:text>video</xsl:text>
74               <xsl:choose>
75                 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='v'">-dvd</xsl:when>
76                 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='s'">-blu-ray</xsl:when>
77                 <xsl:when test="$oclca='v' and $oclcb='f' and $oclce='b'">-vhs</xsl:when>
78               </xsl:choose>
79             </xsl:when>
80             <xsl:otherwise>audio-visual</xsl:otherwise>
81           </xsl:choose>
82         </xsl:when>
83         <xsl:when test="$typeofrec='a' and $biblevel='s'">
84           <xsl:choose>
85             <xsl:when test="$typeofserial='n'">newspaper</xsl:when>
86             <xsl:otherwise>journal</xsl:otherwise>
87           </xsl:choose>
88         </xsl:when>
89         <xsl:when test="$typeofrec='e' or $typeofrec='f'">map</xsl:when>
90         <xsl:when test="$typeofrec='c' or $typeofrec='d'">music-score</xsl:when>
91         <xsl:when test="$form1='a' or $form1='b' or $form1='c'">microform</xsl:when>
92         <xsl:when test="$typeofrec='t'">thesis</xsl:when>
93         <!-- <xsl:when test="$journal_title">article</xsl:when> -->
94         <xsl:when test="$typeofrec='a' or $typeofrec='i' and
95             ($typeofserial='d' or $typeofserial='w')">web</xsl:when>
96         <xsl:when test="$typeofrec='a' and $biblevel='b'">article</xsl:when>
97         <xsl:when test="$typeofrec='m'">electronic</xsl:when>
98         <xsl:when test="$title_medium">
99           <xsl:value-of select="translate($title_medium, ' []/:', '')" />
100         </xsl:when>
101         <xsl:otherwise>
102           <xsl:text>other</xsl:text>
103         </xsl:otherwise>
104       </xsl:choose>
105     </xsl:variable>
106
107     <xsl:variable name="has_fulltext">
108       <xsl:choose>
109         <xsl:when test="tmarc:d856/tmarc:sq">
110           <xsl:text>yes</xsl:text>
111         </xsl:when>
112         <xsl:when test="tmarc:d856/tmarc:si='TEXT*'">
113           <xsl:text>yes</xsl:text>
114         </xsl:when>
115         <xsl:otherwise>
116           <xsl:text>no</xsl:text>
117         </xsl:otherwise>
118       </xsl:choose>
119     </xsl:variable>
120
121     <xsl:variable name="oclc_number">
122       <xsl:choose>
123         <xsl:when test='contains(tmarc:c001,"ocn") or
124                         contains(tmarc:c001,"ocm") or
125                         contains(tmarc:c001,"OCoLC") '>
126          <xsl:value-of select="tmarc:c001"/>
127         </xsl:when>
128         <xsl:when test='contains(tmarc:d035/tmarc:sa,"ocn") or
129                         contains(tmarc:d035/tmarc:sa,"ocm") or
130                         contains(tmarc:d035/tmarc:sa,"OCoLC") '>
131          <xsl:value-of select="tmarc:d035/tmarc:sa"/>
132         </xsl:when>
133       </xsl:choose>
134     </xsl:variable>
135
136     <xsl:variable name="date_008">
137       <xsl:choose>
138         <xsl:when test="contains('cestpudikmr', substring(tmarc:c008, 7, 1))">
139           <xsl:value-of select="substring(tmarc:c008, 8, 4)" />
140         </xsl:when>
141       </xsl:choose>
142     </xsl:variable>
143
144     <xsl:variable name="date_end_008">
145       <xsl:choose>
146         <xsl:when test="contains('dikmr', substring(tmarc:c008, 7, 1))">
147           <xsl:value-of select="substring(tmarc:c008, 12, 4)" />
148         </xsl:when>
149       </xsl:choose>
150     </xsl:variable>
151
152     <pz:record>
153 <!--
154       <xsl:attribute name="mergekey">
155     <xsl:text>title </xsl:text>
156   <xsl:value-of select="tmarc:d245/tmarc:sa" />
157   <xsl:text> author </xsl:text>
158   <xsl:value-of select="tmarc:d100/tmarc:sa" />
159   <xsl:text> medium </xsl:text>
160   <xsl:value-of select="$medium" />
161     </xsl:attribute>
162   -->
163
164       <xsl:for-each select="tmarc:c001">
165         <pz:metadata type="id">
166           <xsl:value-of select="." />
167         </pz:metadata>
168       </xsl:for-each>
169
170       <pz:metadata type="oclc-number">
171         <xsl:value-of select="$oclc_number" />
172       </pz:metadata>
173
174       <xsl:for-each select="tmarc:d010">
175         <pz:metadata type="lccn">
176           <xsl:value-of select="tmarc:sa" />
177         </pz:metadata>
178       </xsl:for-each>
179
180       <xsl:for-each select="tmarc:d020">
181         <pz:metadata type="isbn">
182           <xsl:value-of select="tmarc:sa" />
183         </pz:metadata>
184       </xsl:for-each>
185
186       <xsl:for-each select="tmarc:d022">
187         <pz:metadata type="issn">
188           <xsl:value-of select="tmarc:sa" />
189         </pz:metadata>
190       </xsl:for-each>
191
192       <xsl:for-each select="tmarc:d027">
193         <pz:metadata type="tech-rep-nr">
194           <xsl:value-of select="tmarc:sa" />
195         </pz:metadata>
196       </xsl:for-each>
197
198       <xsl:for-each select="tmarc:d035"> 
199         <pz:metadata type="system-control-nr">
200           <xsl:choose>
201             <xsl:when test="tmarc:sa">
202               <xsl:value-of select="tmarc:sa"/>
203             </xsl:when>
204             <xsl:otherwise>
205               <xsl:value-of select="tmarc:sb"/>
206             </xsl:otherwise>
207           </xsl:choose>
208         </pz:metadata>
209       </xsl:for-each>
210
211       <xsl:for-each select="tmarc:d100">
212         <pz:metadata type="author">
213           <xsl:value-of select="tmarc:sa" />
214         </pz:metadata>
215         <pz:metadata type="author-title">
216           <xsl:value-of select="tmarc:sc" />
217         </pz:metadata>
218         <pz:metadata type="author-date">
219           <xsl:value-of select="tmarc:sd" />
220         </pz:metadata>
221       </xsl:for-each>
222
223       <xsl:for-each select="tmarc:d110">
224         <pz:metadata type="corporate-name">
225           <xsl:value-of select="tmarc:sa" />
226         </pz:metadata>
227         <pz:metadata type="corporate-location">
228           <xsl:value-of select="tmarc:sc" />
229         </pz:metadata>
230         <pz:metadata type="corporate-date">
231           <xsl:value-of select="tmarc:sd" />
232         </pz:metadata>
233       </xsl:for-each>
234
235       <xsl:for-each select="tmarc:d111">
236         <pz:metadata type="meeting-name">
237           <xsl:value-of select="tmarc:sa" />
238         </pz:metadata>
239         <pz:metadata type="meeting-location">
240           <xsl:value-of select="tmarc:sc" />
241         </pz:metadata>
242         <pz:metadata type="meeting-date">
243           <xsl:value-of select="tmarc:sd" />
244         </pz:metadata>
245       </xsl:for-each>
246
247       <xsl:for-each select="tmarc:d260">
248         <pz:metadata type="date">
249           <xsl:value-of select="translate(tmarc:sc, 'cp[].', '')" />
250         </pz:metadata>
251       </xsl:for-each>
252
253       <xsl:if test="$date_008 and not(tmarc:d260)">
254         <pz:metadata type="date">
255           <xsl:choose>
256             <xsl:when test="$date_end_008">
257               <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
258             </xsl:when>
259             <xsl:otherwise> 
260               <xsl:value-of select="$date_008" />
261             </xsl:otherwise>
262           </xsl:choose>
263         </pz:metadata>
264       </xsl:if>
265
266
267       <xsl:for-each select="tmarc:d130">
268         <pz:metadata type="title-uniform">
269           <xsl:value-of select="tmarc:sa" />
270         </pz:metadata>
271         <pz:metadata type="title-uniform-media">
272           <xsl:value-of select="tmarc:sm" />
273         </pz:metadata>
274         <pz:metadata type="title-uniform-parts">
275           <xsl:value-of select="tmarc:sn" />
276         </pz:metadata>
277         <pz:metadata type="title-uniform-partname">
278           <xsl:value-of select="tmarc:sp" />
279         </pz:metadata>
280         <pz:metadata type="title-uniform-key">
281           <xsl:value-of select="tmarc:sr" />
282         </pz:metadata>
283       </xsl:for-each>
284
285       <xsl:for-each select="tmarc:d245">
286         <pz:metadata type="title">
287           <xsl:value-of select="tmarc:sa" />
288         </pz:metadata>
289         <pz:metadata type="title-remainder">
290           <xsl:value-of select="tmarc:sb" />
291         </pz:metadata>
292         <pz:metadata type="title-responsibility">
293           <xsl:value-of select="tmarc:sc" />
294         </pz:metadata>
295         <pz:metadata type="title-dates">
296           <xsl:value-of select="tmarc:sf" />
297         </pz:metadata>
298         <pz:metadata type="title-medium">
299           <xsl:value-of select="tmarc:sh" />
300         </pz:metadata>
301         <pz:metadata type="title-number-section">
302           <xsl:value-of select="tmarc:sn" />
303         </pz:metadata>
304         <pz:metadata type="title-complete">
305           <xsl:value-of select="tmarc:sa" />
306           <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
307         </pz:metadata>
308       </xsl:for-each>
309
310       <xsl:for-each select="tmarc:d250">
311         <pz:metadata type="edition">
312           <xsl:value-of select="tmarc:sa" />
313         </pz:metadata>
314       </xsl:for-each>
315
316       <xsl:for-each select="tmarc:d260">
317         <pz:metadata type="publication-place">
318           <xsl:value-of select="tmarc:sa" />
319         </pz:metadata>
320         <pz:metadata type="publication-name">
321           <xsl:value-of select="tmarc:sb" />
322         </pz:metadata>
323         <pz:metadata type="publication-date">
324           <xsl:value-of select="tmarc:sc" />
325         </pz:metadata>
326       </xsl:for-each>
327
328       <xsl:for-each select="tmarc:d300">
329         <pz:metadata type="physical-extent">
330           <xsl:value-of select="tmarc:sa" />
331         </pz:metadata>
332         <pz:metadata type="physical-format">
333           <xsl:value-of select="tmarc:sb" />
334         </pz:metadata>
335         <pz:metadata type="physical-dimensions">
336           <xsl:value-of select="tmarc:sc" />
337         </pz:metadata>
338         <pz:metadata type="physical-accomp">
339           <xsl:value-of select="tmarc:se" />
340         </pz:metadata>
341         <pz:metadata type="physical-unittype">
342           <xsl:value-of select="tmarc:sf" />
343         </pz:metadata>
344         <pz:metadata type="physical-unitsize">
345           <xsl:value-of select="tmarc:sg" />
346         </pz:metadata>
347         <pz:metadata type="physical-specified">
348           <xsl:value-of select="tmarc:s3" />
349         </pz:metadata>
350       </xsl:for-each>
351
352       <xsl:for-each select="tmarc:d440">
353         <pz:metadata type="series-title">
354           <xsl:value-of select="tmarc:sa" />
355         </pz:metadata>
356       </xsl:for-each>
357
358       <xsl:for-each select="tmarc:d500">
359         <pz:metadata type="description">
360           <xsl:for-each select="node()">
361             <xsl:value-of select="text()" />
362           </xsl:for-each>
363         </pz:metadata>
364       </xsl:for-each>
365
366       <xsl:for-each select="tmarc:d505">
367         <pz:metadata type="description">
368           <xsl:for-each select="node()">
369             <xsl:value-of select="text()" />
370           </xsl:for-each>
371         </pz:metadata>
372       </xsl:for-each>
373
374       <xsl:for-each select="tmarc:d518">
375         <pz:metadata type="description">
376           <xsl:for-each select="node()">
377             <xsl:value-of select="text()" />
378           </xsl:for-each>
379         </pz:metadata>
380       </xsl:for-each>
381
382       <xsl:for-each select="tmarc:d520">
383         <pz:metadata type="description">
384           <xsl:for-each select="node()">
385             <xsl:value-of select="text()" />
386           </xsl:for-each>
387         </pz:metadata>
388       </xsl:for-each>
389
390       <xsl:for-each select="tmarc:d522">
391         <pz:metadata type="description">
392           <xsl:for-each select="node()">
393             <xsl:value-of select="text()" />
394           </xsl:for-each>
395         </pz:metadata>
396       </xsl:for-each>
397
398       <xsl:for-each select="tmarc:d911">
399         <pz:metadata type="description">
400           <xsl:for-each select="node()">
401             <xsl:value-of select="text()" />
402           </xsl:for-each>
403         </pz:metadata>
404       </xsl:for-each>
405
406       <xsl:for-each select="tmarc:d600">
407         <pz:metadata type="subject">
408           <xsl:value-of select="tmarc:sa" />
409         </pz:metadata>
410         <pz:metadata type="subject-long">
411           <xsl:for-each select="node()/text()">
412             <xsl:if test="position() > 1">
413               <xsl:text>, </xsl:text>
414             </xsl:if>
415             <xsl:value-of select="." />
416           </xsl:for-each>
417         </pz:metadata>
418       </xsl:for-each>
419
420       <xsl:for-each select="tmarc:d610">
421         <pz:metadata type="subject">
422           <xsl:value-of select="tmarc:sa" />
423         </pz:metadata>
424         <pz:metadata type="subject-long">
425           <xsl:for-each select="node()/text()">
426             <xsl:if test="position() > 1">
427               <xsl:text>, </xsl:text>
428             </xsl:if>
429             <xsl:value-of select="." />
430           </xsl:for-each>
431         </pz:metadata>
432       </xsl:for-each>
433
434       <xsl:for-each select="tmarc:d611">
435         <pz:metadata type="subject">
436           <xsl:value-of select="tmarc:sa" />
437         </pz:metadata>
438         <pz:metadata type="subject-long">
439           <xsl:for-each select="node()/text()">
440             <xsl:if test="position() > 1">
441               <xsl:text>, </xsl:text>
442             </xsl:if>
443             <xsl:value-of select="." />
444           </xsl:for-each>
445         </pz:metadata>
446       </xsl:for-each>
447
448       <xsl:for-each select="tmarc:d630">
449         <pz:metadata type="subject">
450           <xsl:value-of select="tmarc:sa" />
451         </pz:metadata>
452         <pz:metadata type="subject-long">
453           <xsl:for-each select="node()/text()">
454             <xsl:if test="position() > 1">
455               <xsl:text>, </xsl:text>
456             </xsl:if>
457             <xsl:value-of select="." />
458           </xsl:for-each>
459         </pz:metadata>
460       </xsl:for-each>
461
462       <xsl:for-each select="tmarc:d648">
463         <pz:metadata type="subject">
464           <xsl:value-of select="tmarc:sa" />
465         </pz:metadata>
466         <pz:metadata type="subject-long">
467           <xsl:for-each select="node()/text()">
468             <xsl:if test="position() > 1">
469               <xsl:text>, </xsl:text>
470             </xsl:if>
471             <xsl:value-of select="." />
472           </xsl:for-each>
473         </pz:metadata>
474       </xsl:for-each>
475
476       <xsl:for-each select="tmarc:d650">
477         <pz:metadata type="subject">
478           <xsl:value-of select="tmarc:sa" />
479         </pz:metadata>
480         <pz:metadata type="subject-long">
481           <xsl:for-each select="node()/text()">
482             <xsl:if test="position() > 1">
483               <xsl:text>, </xsl:text>
484             </xsl:if>
485             <xsl:value-of select="." />
486           </xsl:for-each>
487         </pz:metadata>
488       </xsl:for-each>
489
490       <xsl:for-each select="tmarc:d651">
491         <pz:metadata type="subject">
492           <xsl:value-of select="tmarc:sa" />
493         </pz:metadata>
494         <pz:metadata type="subject-long">
495           <xsl:for-each select="node()/text()">
496             <xsl:if test="position() > 1">
497               <xsl:text>, </xsl:text>
498             </xsl:if>
499             <xsl:value-of select="." />
500           </xsl:for-each>
501         </pz:metadata>
502       </xsl:for-each>
503
504       <xsl:for-each select="tmarc:d653">
505         <pz:metadata type="subject">
506           <xsl:value-of select="tmarc:sa" />
507         </pz:metadata>
508         <pz:metadata type="subject-long">
509           <xsl:for-each select="node()/text()">
510             <xsl:if test="position() > 1">
511               <xsl:text>, </xsl:text>
512             </xsl:if>
513             <xsl:value-of select="." />
514           </xsl:for-each>
515         </pz:metadata>
516       </xsl:for-each>
517
518       <xsl:for-each select="tmarc:d654">
519         <pz:metadata type="subject">
520           <xsl:value-of select="tmarc:sa" />
521         </pz:metadata>
522         <pz:metadata type="subject-long">
523           <xsl:for-each select="node()/text()">
524             <xsl:if test="position() > 1">
525               <xsl:text>, </xsl:text>
526             </xsl:if>
527             <xsl:value-of select="." />
528           </xsl:for-each>
529         </pz:metadata>
530       </xsl:for-each>
531
532       <xsl:for-each select="tmarc:d655">
533         <pz:metadata type="subject">
534           <xsl:value-of select="tmarc:sa" />
535         </pz:metadata>
536         <pz:metadata type="subject-long">
537           <xsl:for-each select="node()/text()">
538             <xsl:if test="position() > 1">
539               <xsl:text>, </xsl:text>
540             </xsl:if>
541             <xsl:value-of select="." />
542           </xsl:for-each>
543         </pz:metadata>
544       </xsl:for-each>
545
546       <xsl:for-each select="tmarc:d656">
547         <pz:metadata type="subject">
548           <xsl:value-of select="tmarc:sa" />
549         </pz:metadata>
550         <pz:metadata type="subject-long">
551           <xsl:for-each select="node()/text()">
552             <xsl:if test="position() > 1">
553               <xsl:text>, </xsl:text>
554             </xsl:if>
555             <xsl:value-of select="." />
556           </xsl:for-each>
557         </pz:metadata>
558       </xsl:for-each>
559
560       <xsl:for-each select="tmarc:d657">
561         <pz:metadata type="subject">
562           <xsl:value-of select="tmarc:sa" />
563         </pz:metadata>
564         <pz:metadata type="subject-long">
565           <xsl:for-each select="node()/text()">
566             <xsl:if test="position() > 1">
567               <xsl:text>, </xsl:text>
568             </xsl:if>
569             <xsl:value-of select="." />
570           </xsl:for-each>
571         </pz:metadata>
572       </xsl:for-each>
573
574       <xsl:for-each select="tmarc:d658">
575         <pz:metadata type="subject">
576           <xsl:value-of select="tmarc:sa" />
577         </pz:metadata>
578         <pz:metadata type="subject-long">
579           <xsl:for-each select="node()/text()">
580             <xsl:if test="position() > 1">
581               <xsl:text>, </xsl:text>
582             </xsl:if>
583             <xsl:value-of select="." />
584           </xsl:for-each>
585         </pz:metadata>
586       </xsl:for-each>
587
588       <xsl:for-each select="tmarc:d662">
589         <pz:metadata type="subject">
590           <xsl:value-of select="tmarc:sa" />
591         </pz:metadata>
592         <pz:metadata type="subject-long">
593           <xsl:for-each select="node()/text()">
594             <xsl:if test="position() > 1">
595               <xsl:text>, </xsl:text>
596             </xsl:if>
597             <xsl:value-of select="." />
598           </xsl:for-each>
599         </pz:metadata>
600       </xsl:for-each>
601
602       <xsl:for-each select="tmarc:d69X">
603         <pz:metadata type="subject">
604           <xsl:value-of select="tmarc:sa" />
605         </pz:metadata>
606         <pz:metadata type="subject-long">
607           <xsl:for-each select="node()/text()">
608             <xsl:if test="position() > 1">
609               <xsl:text>, </xsl:text>
610             </xsl:if>
611             <xsl:value-of select="." />
612           </xsl:for-each>
613         </pz:metadata>
614       </xsl:for-each>
615
616       <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656 
617         or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
618
619       <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject"> 
620         <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long"> 
621         <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position() 
622         > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> 
623         </pz:metadata> </xsl:for-each> -->
624
625       <xsl:for-each select="tmarc:d856">
626         <pz:metadata type="electronic-url">
627           <xsl:value-of select="tmarc:su" />
628         </pz:metadata>
629         <pz:metadata type="electronic-text">
630           <xsl:choose>
631             <xsl:when test="tmarc:sy">
632               <xsl:value-of select="tmarc:sy/text()" />
633             </xsl:when>
634             <xsl:when test="tmarc:s3">
635               <xsl:value-of select="tmarc:s3/text()" />
636             </xsl:when>
637              <xsl:otherwise>Get resource</xsl:otherwise>
638            </xsl:choose>
639         </pz:metadata>
640         <pz:metadata type="electronic-note">
641           <xsl:value-of select="tmarc:sz" />
642         </pz:metadata>
643         <pz:metadata type="electronic-format-instruction">
644           <xsl:value-of select="tmarc:si" />
645         </pz:metadata>
646         <pz:metadata type="electronic-format-type">
647           <xsl:value-of select="tmarc:sq" />
648         </pz:metadata>
649       </xsl:for-each>
650
651       <xsl:for-each select="tmarc:d773">
652         <pz:metadata type="citation">
653           <xsl:for-each select="*">
654             <xsl:value-of select="normalize-space(.)" />
655             <xsl:text> </xsl:text>
656           </xsl:for-each>
657         </pz:metadata>
658         <xsl:if test="tmarc:st">
659           <pz:metadata type="journal-title">
660             <xsl:value-of select="tmarc:st"/>
661           </pz:metadata>
662         </xsl:if>
663         <xsl:if test="tmarc:sg">
664           <pz:metadata type="journal-subpart">
665             <xsl:value-of select="tmarc:sg"/>
666           </pz:metadata>
667         </xsl:if>
668         <xsl:if test="tmarc:sp">
669           <pz:metadata type="journal-title-abbrev">
670             <xsl:value-of select="tmarc:sp"/>
671           </pz:metadata>
672         </xsl:if>
673       </xsl:for-each>
674
675       <xsl:for-each select="tmarc:d852">
676         <xsl:if test="tmarc:sy">
677           <pz:metadata type="publicnote">
678             <xsl:value-of select="tmarc:sy" />
679           </pz:metadata>
680         </xsl:if>
681         <xsl:if test="tmarc:sh">
682           <pz:metadata type="callnumber">
683             <xsl:value-of select="tmarc:sh" />
684           </pz:metadata>
685         </xsl:if>
686       </xsl:for-each>
687
688       <xsl:for-each select="tmarc:d876">
689         <xsl:if test="tmarc:sf">
690           <pz:metadata type="loan-period">
691             <xsl:value-of select="tmarc:sf" />
692           </pz:metadata>
693         </xsl:if>
694       </xsl:for-each>
695
696       <pz:metadata type="medium">
697         <xsl:value-of select="$vmedium" />
698         <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
699           <xsl:text> (electronic)</xsl:text>
700         </xsl:if>
701       </pz:metadata>
702
703       <xsl:for-each select="tmarc:d900/tmarc:sa">
704         <pz:metadata type="fulltext">
705           <xsl:value-of select="." />
706         </pz:metadata>
707       </xsl:for-each>
708
709       <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
710         select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
711
712       <xsl:for-each select="tmarc:d900/tmarc:sb">
713         <pz:metadata type="fulltext">
714           <xsl:value-of select="." />
715         </pz:metadata>
716       </xsl:for-each>
717
718       <xsl:for-each select="tmarc:d900/tmarc:se">
719         <pz:metadata type="fulltext">
720           <xsl:value-of select="." />
721         </pz:metadata>
722       </xsl:for-each>
723
724       <xsl:for-each select="tmarc:d900/tmarc:sf">
725         <pz:metadata type="fulltext">
726           <xsl:value-of select="." />
727         </pz:metadata>
728       </xsl:for-each>
729
730       <xsl:for-each select="tmarc:d900/tmarc:si">
731         <pz:metadata type="fulltext">
732           <xsl:value-of select="." />
733         </pz:metadata>
734       </xsl:for-each>
735
736       <xsl:for-each select="tmarc:d900/tmarc:sk">
737         <pz:metadata type="fulltext">
738           <xsl:value-of select="." />
739         </pz:metadata>
740       </xsl:for-each>
741
742       <xsl:for-each select="tmarc:d900/tmarc:sq">
743         <pz:metadata type="fulltext">
744           <xsl:value-of select="." />
745         </pz:metadata>
746       </xsl:for-each>
747
748       <xsl:for-each select="tmarc:d900/tmarc:ss">
749         <pz:metadata type="fulltext">
750           <xsl:value-of select="." />
751         </pz:metadata>
752       </xsl:for-each>
753
754       <xsl:for-each select="tmarc:d900/tmarc:su">
755         <pz:metadata type="fulltext">
756           <xsl:value-of select="." />
757         </pz:metadata>
758       </xsl:for-each>
759
760       <xsl:for-each select="tmarc:d900/tmarc:sy">
761         <pz:metadata type="fulltext">
762           <xsl:value-of select="." />
763         </pz:metadata>
764       </xsl:for-each>
765
766
767       <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
768         select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
769
770       <pz:metadata type="has-fulltext">
771         <xsl:value-of select="$has_fulltext"/>
772       </pz:metadata>
773
774       <xsl:for-each select="tmarc:d907">
775         <!-- or tmarc:d901"> -->
776         <pz:metadata type="iii-id">
777           <xsl:value-of select="tmarc:sa" />
778         </pz:metadata>
779       </xsl:for-each>
780
781       <xsl:for-each select="tmarc:d926">
782         <pz:metadata type="locallocation">
783           <xsl:choose><xsl:when test="tmarc:sa">
784             <xsl:value-of select="tmarc:sa"/>
785           </xsl:when><xsl:otherwise>
786             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
787           </xsl:otherwise></xsl:choose>
788         </pz:metadata>
789         <pz:metadata type="callnumber">
790           <xsl:choose><xsl:when test="tmarc:sc">
791             <xsl:value-of select="tmarc:sc"/>
792           </xsl:when><xsl:otherwise>
793             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
794           </xsl:otherwise></xsl:choose>
795         </pz:metadata>
796         <pz:metadata type="available">
797           <xsl:choose><xsl:when test="tmarc:se">
798             <xsl:value-of select="tmarc:se"/>
799           </xsl:when><xsl:otherwise>
800             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
801           </xsl:otherwise></xsl:choose>
802         </pz:metadata>
803       </xsl:for-each>
804
805       <xsl:for-each select="tmarc:d948">
806         <pz:metadata type="holding">
807           <xsl:for-each select="tmarc:s">
808             <xsl:if test="position() > 1">
809               <xsl:text> </xsl:text>
810             </xsl:if>
811             <xsl:value-of select="." />
812           </xsl:for-each>
813         </pz:metadata>
814       </xsl:for-each>
815
816       <xsl:for-each select="tmarc:d991">
817         <pz:metadata type="holding">
818           <xsl:for-each select="tmarc:s">
819             <xsl:if test="position() > 1">
820               <xsl:text> </xsl:text>
821             </xsl:if>
822             <xsl:value-of select="." />
823           </xsl:for-each>
824         </pz:metadata>
825       </xsl:for-each>
826
827       <xsl:for-each select="tmarc:d999">
828         <pz:metadata type="localid">
829           <xsl:choose>
830             <xsl:when test="tmarc:sa">
831               <xsl:value-of select="tmarc:sa"/>
832             </xsl:when>
833             <xsl:when test="tmarc:sc">
834               <xsl:value-of select="tmarc:sc"/>
835             </xsl:when> 
836             <xsl:otherwise>
837               <xsl:value-of select="tmarc:sd"/>
838             </xsl:otherwise>
839           </xsl:choose>
840         </pz:metadata>
841       </xsl:for-each>
842
843
844       <!-- passthrough id data -->
845       <xsl:for-each select="pz:metadata">
846         <xsl:copy-of select="." />
847       </xsl:for-each>
848
849       <!-- other stylesheets importing this might want to define this -->
850         <xsl:call-template name="record-hook" />
851
852     </pz:record>
853   </xsl:template>
854
855   <xsl:template match="text()" />
856
857   <!-- TODO Does not work anymore -->
858   <xsl:template name="shortTitle">
859     <xsl:param name="tag" />
860     <xsl:for-each select="tmarc:d">
861       <xsl:value-of select="tmarc:sa" />
862       <xsl:value-of select="tmarc:sm" />
863       <xsl:value-of select="tmarc:sn" />
864       <xsl:value-of select="tmarc:sp" />
865       <xsl:value-of select="tmarc:sr" />
866     </xsl:for-each>
867   </xsl:template>
868
869   <!-- No working as expected -->
870   <xsl:template name="description">
871     <xsl:param name="element" />
872     <xsl:for-each select="$element">
873       <pz:metadata type="description">
874         <xsl:for-each select="node()">
875           <xsl:value-of select="text()" />
876         </xsl:for-each>
877       </pz:metadata>
878     </xsl:for-each>
879     <xsl:apply-templates />
880   </xsl:template>
881
882   <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
883     <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
884     </pz:metadata> </xsl:for-each> -->
885
886
887
888   <xsl:template name="subject">
889     <xsl:param name="element" />
890     <xsl:for-each select="$element">
891       <pz:metadata type="subject">
892         <xsl:value-of select="tmarc:sa" />
893       </pz:metadata>
894       <pz:metadata type="subject-long">
895         <xsl:for-each select="node()/text()">
896           <xsl:if test="position() > 1">
897             <xsl:text>, </xsl:text>
898           </xsl:if>
899           <xsl:value-of select="." />
900         </xsl:for-each>
901       </pz:metadata>
902     </xsl:for-each>
903   </xsl:template>
904
905
906 </xsl:stylesheet>