Adds journal-title to turbo marc style sheet
[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     <pz:record>
108 <!--
109       <xsl:attribute name="mergekey">
110     <xsl:text>title </xsl:text>
111   <xsl:value-of select="tmarc:d245/tmarc:sa" />
112   <xsl:text> author </xsl:text>
113   <xsl:value-of select="tmarc:d100/tmarc:sa" />
114   <xsl:text> medium </xsl:text>
115   <xsl:value-of select="$medium" />
116     </xsl:attribute>
117   -->
118
119       <xsl:for-each select="tmarc:c001">
120         <pz:metadata type="id">
121           <xsl:value-of select="." />
122         </pz:metadata>
123       </xsl:for-each>
124
125       <xsl:for-each select="tmarc:d010">
126         <pz:metadata type="lccn">
127           <xsl:value-of select="tmarc:sa" />
128         </pz:metadata>
129       </xsl:for-each>
130
131       <xsl:for-each select="tmarc:d020">
132         <pz:metadata type="isbn">
133           <xsl:value-of select="tmarc:sa" />
134         </pz:metadata>
135       </xsl:for-each>
136
137       <xsl:for-each select="tmarc:d022">
138         <pz:metadata type="issn">
139           <xsl:value-of select="tmarc:sa" />
140         </pz:metadata>
141       </xsl:for-each>
142
143       <xsl:for-each select="tmarc:d027">
144         <pz:metadata type="tech-rep-nr">
145           <xsl:value-of select="tmarc:sa" />
146         </pz:metadata>
147       </xsl:for-each>
148
149       <xsl:for-each select="tmarc:d035"> 
150         <pz:metadata type="system-control-nr">
151           <xsl:choose>
152             <xsl:when test="tmarc:sa">
153               <xsl:value-of select="tmarc:sa"/>
154             </xsl:when>
155             <xsl:otherwise>
156               <xsl:value-of select="tmarc:sb"/>
157             </xsl:otherwise>
158           </xsl:choose>
159         </pz:metadata>
160       </xsl:for-each>
161
162       <xsl:for-each select="tmarc:d100">
163         <pz:metadata type="author">
164           <xsl:value-of select="tmarc:sa" />
165         </pz:metadata>
166         <pz:metadata type="author-title">
167           <xsl:value-of select="tmarc:sc" />
168         </pz:metadata>
169         <pz:metadata type="author-date">
170           <xsl:value-of select="tmarc:sd" />
171         </pz:metadata>
172       </xsl:for-each>
173
174       <xsl:for-each select="tmarc:d110">
175         <pz:metadata type="corporate-name">
176           <xsl:value-of select="tmarc:sa" />
177         </pz:metadata>
178         <pz:metadata type="corporate-location">
179           <xsl:value-of select="tmarc:sc" />
180         </pz:metadata>
181         <pz:metadata type="corporate-date">
182           <xsl:value-of select="tmarc:sd" />
183         </pz:metadata>
184       </xsl:for-each>
185
186       <xsl:for-each select="tmarc:d111">
187         <pz:metadata type="meeting-name">
188           <xsl:value-of select="tmarc:sa" />
189         </pz:metadata>
190         <pz:metadata type="meeting-location">
191           <xsl:value-of select="tmarc:sc" />
192         </pz:metadata>
193         <pz:metadata type="meeting-date">
194           <xsl:value-of select="tmarc:sd" />
195         </pz:metadata>
196       </xsl:for-each>
197
198       <xsl:for-each select="tmarc:d260">
199         <pz:metadata type="date">
200           <xsl:value-of select="translate(tmarc:sc, 'cp[].', '')" />
201         </pz:metadata>
202       </xsl:for-each>
203
204       <xsl:for-each select="tmarc:d130">
205         <pz:metadata type="title-uniform">
206           <xsl:value-of select="tmarc:sa" />
207         </pz:metadata>
208         <pz:metadata type="title-uniform-media">
209           <xsl:value-of select="tmarc:sm" />
210         </pz:metadata>
211         <pz:metadata type="title-uniform-parts">
212           <xsl:value-of select="tmarc:sn" />
213         </pz:metadata>
214         <pz:metadata type="title-uniform-partname">
215           <xsl:value-of select="tmarc:sp" />
216         </pz:metadata>
217         <pz:metadata type="title-uniform-key">
218           <xsl:value-of select="tmarc:sr" />
219         </pz:metadata>
220       </xsl:for-each>
221
222       <xsl:for-each select="tmarc:d245">
223         <pz:metadata type="title">
224           <xsl:value-of select="tmarc:sa" />
225         </pz:metadata>
226         <pz:metadata type="title-remainder">
227           <xsl:value-of select="tmarc:sb" />
228         </pz:metadata>
229         <pz:metadata type="title-responsibility">
230           <xsl:value-of select="tmarc:sc" />
231         </pz:metadata>
232         <pz:metadata type="title-dates">
233           <xsl:value-of select="tmarc:sf" />
234         </pz:metadata>
235         <pz:metadata type="title-medium">
236           <xsl:value-of select="tmarc:sh" />
237         </pz:metadata>
238         <pz:metadata type="title-number-section">
239           <xsl:value-of select="tmarc:sn" />
240         </pz:metadata>
241         <pz:metadata type="title-complete">
242           <xsl:value-of select="tmarc:sa" />
243           <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
244         </pz:metadata>
245       </xsl:for-each>
246
247       <xsl:for-each select="tmarc:d250">
248         <pz:metadata type="edition">
249           <xsl:value-of select="tmarc:sa" />
250         </pz:metadata>
251       </xsl:for-each>
252
253       <xsl:for-each select="tmarc:d260">
254         <pz:metadata type="publication-place">
255           <xsl:value-of select="tmarc:sa" />
256         </pz:metadata>
257         <pz:metadata type="publication-name">
258           <xsl:value-of select="tmarc:sb" />
259         </pz:metadata>
260         <pz:metadata type="publication-date">
261           <xsl:value-of select="tmarc:sc" />
262         </pz:metadata>
263       </xsl:for-each>
264
265       <xsl:for-each select="tmarc:d300">
266         <pz:metadata type="physical-extent">
267           <xsl:value-of select="tmarc:sa" />
268         </pz:metadata>
269         <pz:metadata type="physical-format">
270           <xsl:value-of select="tmarc:sb" />
271         </pz:metadata>
272         <pz:metadata type="physical-dimensions">
273           <xsl:value-of select="tmarc:sc" />
274         </pz:metadata>
275         <pz:metadata type="physical-accomp">
276           <xsl:value-of select="tmarc:se" />
277         </pz:metadata>
278         <pz:metadata type="physical-unittype">
279           <xsl:value-of select="tmarc:sf" />
280         </pz:metadata>
281         <pz:metadata type="physical-unitsize">
282           <xsl:value-of select="tmarc:sg" />
283         </pz:metadata>
284         <pz:metadata type="physical-specified">
285           <xsl:value-of select="tmarc:s3" />
286         </pz:metadata>
287       </xsl:for-each>
288
289       <xsl:for-each select="tmarc:d440">
290         <pz:metadata type="series-title">
291           <xsl:value-of select="tmarc:sa" />
292         </pz:metadata>
293       </xsl:for-each>
294
295       <xsl:for-each select="tmarc:d500">
296         <pz:metadata type="description">
297           <xsl:for-each select="node()">
298             <xsl:value-of select="text()" />
299           </xsl:for-each>
300         </pz:metadata>
301       </xsl:for-each>
302
303       <xsl:for-each select="tmarc:d505">
304         <pz:metadata type="description">
305           <xsl:for-each select="node()">
306             <xsl:value-of select="text()" />
307           </xsl:for-each>
308         </pz:metadata>
309       </xsl:for-each>
310
311       <xsl:for-each select="tmarc:d518">
312         <pz:metadata type="description">
313           <xsl:for-each select="node()">
314             <xsl:value-of select="text()" />
315           </xsl:for-each>
316         </pz:metadata>
317       </xsl:for-each>
318
319       <xsl:for-each select="tmarc:d520">
320         <pz:metadata type="description">
321           <xsl:for-each select="node()">
322             <xsl:value-of select="text()" />
323           </xsl:for-each>
324         </pz:metadata>
325       </xsl:for-each>
326
327       <xsl:for-each select="tmarc:d522">
328         <pz:metadata type="description">
329           <xsl:for-each select="node()">
330             <xsl:value-of select="text()" />
331           </xsl:for-each>
332         </pz:metadata>
333       </xsl:for-each>
334
335       <xsl:for-each select="tmarc:d600">
336         <pz:metadata type="subject">
337           <xsl:value-of select="tmarc:sa" />
338         </pz:metadata>
339         <pz:metadata type="subject-long">
340           <xsl:for-each select="node()/text()">
341             <xsl:if test="position() > 1">
342               <xsl:text>, </xsl:text>
343             </xsl:if>
344             <xsl:value-of select="." />
345           </xsl:for-each>
346         </pz:metadata>
347       </xsl:for-each>
348
349       <xsl:for-each select="tmarc:d610">
350         <pz:metadata type="subject">
351           <xsl:value-of select="tmarc:sa" />
352         </pz:metadata>
353         <pz:metadata type="subject-long">
354           <xsl:for-each select="node()/text()">
355             <xsl:if test="position() > 1">
356               <xsl:text>, </xsl:text>
357             </xsl:if>
358             <xsl:value-of select="." />
359           </xsl:for-each>
360         </pz:metadata>
361       </xsl:for-each>
362
363       <xsl:for-each select="tmarc:d611">
364         <pz:metadata type="subject">
365           <xsl:value-of select="tmarc:sa" />
366         </pz:metadata>
367         <pz:metadata type="subject-long">
368           <xsl:for-each select="node()/text()">
369             <xsl:if test="position() > 1">
370               <xsl:text>, </xsl:text>
371             </xsl:if>
372             <xsl:value-of select="." />
373           </xsl:for-each>
374         </pz:metadata>
375       </xsl:for-each>
376
377       <xsl:for-each select="tmarc:d630">
378         <pz:metadata type="subject">
379           <xsl:value-of select="tmarc:sa" />
380         </pz:metadata>
381         <pz:metadata type="subject-long">
382           <xsl:for-each select="node()/text()">
383             <xsl:if test="position() > 1">
384               <xsl:text>, </xsl:text>
385             </xsl:if>
386             <xsl:value-of select="." />
387           </xsl:for-each>
388         </pz:metadata>
389       </xsl:for-each>
390
391       <xsl:for-each select="tmarc:d648">
392         <pz:metadata type="subject">
393           <xsl:value-of select="tmarc:sa" />
394         </pz:metadata>
395         <pz:metadata type="subject-long">
396           <xsl:for-each select="node()/text()">
397             <xsl:if test="position() > 1">
398               <xsl:text>, </xsl:text>
399             </xsl:if>
400             <xsl:value-of select="." />
401           </xsl:for-each>
402         </pz:metadata>
403       </xsl:for-each>
404
405       <xsl:for-each select="tmarc:d650">
406         <pz:metadata type="subject">
407           <xsl:value-of select="tmarc:sa" />
408         </pz:metadata>
409         <pz:metadata type="subject-long">
410           <xsl:for-each select="node()/text()">
411             <xsl:if test="position() > 1">
412               <xsl:text>, </xsl:text>
413             </xsl:if>
414             <xsl:value-of select="." />
415           </xsl:for-each>
416         </pz:metadata>
417       </xsl:for-each>
418
419       <xsl:for-each select="tmarc:d651">
420         <pz:metadata type="subject">
421           <xsl:value-of select="tmarc:sa" />
422         </pz:metadata>
423         <pz:metadata type="subject-long">
424           <xsl:for-each select="node()/text()">
425             <xsl:if test="position() > 1">
426               <xsl:text>, </xsl:text>
427             </xsl:if>
428             <xsl:value-of select="." />
429           </xsl:for-each>
430         </pz:metadata>
431       </xsl:for-each>
432
433       <xsl:for-each select="tmarc:d653">
434         <pz:metadata type="subject">
435           <xsl:value-of select="tmarc:sa" />
436         </pz:metadata>
437         <pz:metadata type="subject-long">
438           <xsl:for-each select="node()/text()">
439             <xsl:if test="position() > 1">
440               <xsl:text>, </xsl:text>
441             </xsl:if>
442             <xsl:value-of select="." />
443           </xsl:for-each>
444         </pz:metadata>
445       </xsl:for-each>
446
447       <xsl:for-each select="tmarc:d654">
448         <pz:metadata type="subject">
449           <xsl:value-of select="tmarc:sa" />
450         </pz:metadata>
451         <pz:metadata type="subject-long">
452           <xsl:for-each select="node()/text()">
453             <xsl:if test="position() > 1">
454               <xsl:text>, </xsl:text>
455             </xsl:if>
456             <xsl:value-of select="." />
457           </xsl:for-each>
458         </pz:metadata>
459       </xsl:for-each>
460
461       <xsl:for-each select="tmarc:d655">
462         <pz:metadata type="subject">
463           <xsl:value-of select="tmarc:sa" />
464         </pz:metadata>
465         <pz:metadata type="subject-long">
466           <xsl:for-each select="node()/text()">
467             <xsl:if test="position() > 1">
468               <xsl:text>, </xsl:text>
469             </xsl:if>
470             <xsl:value-of select="." />
471           </xsl:for-each>
472         </pz:metadata>
473       </xsl:for-each>
474
475       <xsl:for-each select="tmarc:d656">
476         <pz:metadata type="subject">
477           <xsl:value-of select="tmarc:sa" />
478         </pz:metadata>
479         <pz:metadata type="subject-long">
480           <xsl:for-each select="node()/text()">
481             <xsl:if test="position() > 1">
482               <xsl:text>, </xsl:text>
483             </xsl:if>
484             <xsl:value-of select="." />
485           </xsl:for-each>
486         </pz:metadata>
487       </xsl:for-each>
488
489       <xsl:for-each select="tmarc:d657">
490         <pz:metadata type="subject">
491           <xsl:value-of select="tmarc:sa" />
492         </pz:metadata>
493         <pz:metadata type="subject-long">
494           <xsl:for-each select="node()/text()">
495             <xsl:if test="position() > 1">
496               <xsl:text>, </xsl:text>
497             </xsl:if>
498             <xsl:value-of select="." />
499           </xsl:for-each>
500         </pz:metadata>
501       </xsl:for-each>
502
503       <xsl:for-each select="tmarc:d658">
504         <pz:metadata type="subject">
505           <xsl:value-of select="tmarc:sa" />
506         </pz:metadata>
507         <pz:metadata type="subject-long">
508           <xsl:for-each select="node()/text()">
509             <xsl:if test="position() > 1">
510               <xsl:text>, </xsl:text>
511             </xsl:if>
512             <xsl:value-of select="." />
513           </xsl:for-each>
514         </pz:metadata>
515       </xsl:for-each>
516
517       <xsl:for-each select="tmarc:d662">
518         <pz:metadata type="subject">
519           <xsl:value-of select="tmarc:sa" />
520         </pz:metadata>
521         <pz:metadata type="subject-long">
522           <xsl:for-each select="node()/text()">
523             <xsl:if test="position() > 1">
524               <xsl:text>, </xsl:text>
525             </xsl:if>
526             <xsl:value-of select="." />
527           </xsl:for-each>
528         </pz:metadata>
529       </xsl:for-each>
530
531       <xsl:for-each select="tmarc:d69X">
532         <pz:metadata type="subject">
533           <xsl:value-of select="tmarc:sa" />
534         </pz:metadata>
535         <pz:metadata type="subject-long">
536           <xsl:for-each select="node()/text()">
537             <xsl:if test="position() > 1">
538               <xsl:text>, </xsl:text>
539             </xsl:if>
540             <xsl:value-of select="." />
541           </xsl:for-each>
542         </pz:metadata>
543       </xsl:for-each>
544
545       <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656 
546         or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
547
548       <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject"> 
549         <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long"> 
550         <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position() 
551         > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> 
552         </pz:metadata> </xsl:for-each> -->
553
554       <xsl:for-each select="tmarc:d856">
555         <pz:metadata type="electronic-url">
556           <xsl:value-of select="tmarc:su" />
557         </pz:metadata>
558         <pz:metadata type="electronic-text">
559           <xsl:if test="tmarc:sy">
560             <xsl:value-of select="tmarc:sy/text()" />
561           </xsl:if>
562           <xsl:if test="tmarc:s3">
563             <xsl:value-of select="tmarc:s3/text()" />
564           </xsl:if>
565         </pz:metadata>
566         <pz:metadata type="electronic-note">
567           <xsl:value-of select="tmarc:sz" />
568         </pz:metadata>
569         <pz:metadata type="electronic-format-instruction">
570           <xsl:value-of select="tmarc:si" />
571         </pz:metadata>
572         <pz:metadata type="electronic-format-type">
573           <xsl:value-of select="tmarc:sq" />
574         </pz:metadata>
575       </xsl:for-each>
576
577       <xsl:for-each select="tmarc:d773">
578         <pz:metadata type="citation">
579           <xsl:for-each select="*">
580             <xsl:value-of select="normalize-space(.)" />
581             <xsl:text> </xsl:text>
582           </xsl:for-each>
583         </pz:metadata>
584         <xsl:if test="tmarc:st">
585           <pz:metadata type="journal-title">
586             <xsl:value-of select="tmarc:st"/>
587           </pz:metadata>
588         </xsl:if>
589         <xsl:if test="tmarc:sg">
590           <pz:metadata type="journal-subpart">
591             <xsl:value-of select="tmarc:sg"/>
592           </pz:metadata>
593         </xsl:if>
594       </xsl:for-each>
595
596       <xsl:for-each select="tmarc:d852">
597         <xsl:if test="tmarc:sy">
598           <pz:metadata type="publicnote">
599             <xsl:value-of select="tmarc:sy" />
600           </pz:metadata>
601         </xsl:if>
602         <xsl:if test="tmarc:sh">
603           <pz:metadata type="callnumber">
604             <xsl:value-of select="tmarc:sh" />
605           </pz:metadata>
606         </xsl:if>
607       </xsl:for-each>
608
609       <pz:metadata type="medium">
610         <xsl:value-of select="$vmedium" />
611         <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
612           <xsl:text> (electronic)</xsl:text>
613         </xsl:if>
614       </pz:metadata>
615
616       <xsl:for-each select="tmarc:d900/tmarc:sa">
617         <pz:metadata type="fulltext">
618           <xsl:value-of select="." />
619         </pz:metadata>
620       </xsl:for-each>
621
622       <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
623         select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
624
625       <xsl:for-each select="tmarc:d900/tmarc:sb">
626         <pz:metadata type="fulltext">
627           <xsl:value-of select="." />
628         </pz:metadata>
629       </xsl:for-each>
630
631       <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
632         select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
633
634       <xsl:for-each select="tmarc:d907">
635         <!-- or tmarc:d901"> -->
636         <pz:metadata type="iii-id">
637           <xsl:value-of select="tmarc:sa" />
638         </pz:metadata>
639       </xsl:for-each>
640
641       <xsl:for-each select="tmarc:d926">
642         <pz:metadata type="locallocation">
643           <xsl:choose><xsl:when test="tmarc:sa">
644             <xsl:value-of select="tmarc:sa"/>
645           </xsl:when><xsl:otherwise>
646             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
647           </xsl:otherwise></xsl:choose>
648         </pz:metadata>
649         <pz:metadata type="callnumber">
650           <xsl:choose><xsl:when test="tmarc:sc">
651             <xsl:value-of select="tmarc:sc"/>
652           </xsl:when><xsl:otherwise>
653             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
654           </xsl:otherwise></xsl:choose>
655         </pz:metadata>
656         <pz:metadata type="available">
657           <xsl:choose><xsl:when test="tmarc:se">
658             <xsl:value-of select="tmarc:se"/>
659           </xsl:when><xsl:otherwise>
660             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
661           </xsl:otherwise></xsl:choose>
662         </pz:metadata>
663       </xsl:for-each>
664
665       <xsl:for-each select="tmarc:d948">
666         <pz:metadata type="holding">
667           <xsl:for-each select="tmarc:s">
668             <xsl:if test="position() > 1">
669               <xsl:text> </xsl:text>
670             </xsl:if>
671             <xsl:value-of select="." />
672           </xsl:for-each>
673         </pz:metadata>
674       </xsl:for-each>
675
676       <xsl:for-each select="tmarc:d991">
677         <pz:metadata type="holding">
678           <xsl:for-each select="tmarc:s">
679             <xsl:if test="position() > 1">
680               <xsl:text> </xsl:text>
681             </xsl:if>
682             <xsl:value-of select="." />
683           </xsl:for-each>
684         </pz:metadata>
685       </xsl:for-each>
686
687       <xsl:for-each select="tmarc:d999">
688         <pz:metadata type="localid">
689           <xsl:choose>
690             <xsl:when test="tmarc:sa">
691               <xsl:value-of select="tmarc:sa"/>
692             </xsl:when>
693             <xsl:when test="tmarc:sc">
694               <xsl:value-of select="tmarc:sc"/>
695             </xsl:when> 
696             <xsl:otherwise>
697               <xsl:value-of select="tmarc:sd"/>
698             </xsl:otherwise>
699           </xsl:choose>
700         </pz:metadata>
701       </xsl:for-each>
702
703
704       <!-- passthrough id data -->
705       <xsl:for-each select="pz:metadata">
706         <xsl:copy-of select="." />
707       </xsl:for-each>
708
709       <!-- other stylesheets importing this might want to define this -->
710         <xsl:call-template name="record-hook" />
711
712     </pz:record>
713   </xsl:template>
714
715   <xsl:template match="text()" />
716
717   <!-- TODO Does not work anymore -->
718   <xsl:template name="shortTitle">
719     <xsl:param name="tag" />
720     <xsl:for-each select="tmarc:d">
721       <xsl:value-of select="tmarc:sa" />
722       <xsl:value-of select="tmarc:sm" />
723       <xsl:value-of select="tmarc:sn" />
724       <xsl:value-of select="tmarc:sp" />
725       <xsl:value-of select="tmarc:sr" />
726     </xsl:for-each>
727   </xsl:template>
728
729   <!-- No working as expected -->
730   <xsl:template name="description">
731     <xsl:param name="element" />
732     <xsl:for-each select="$element">
733       <pz:metadata type="description">
734         <xsl:for-each select="node()">
735           <xsl:value-of select="text()" />
736         </xsl:for-each>
737       </pz:metadata>
738     </xsl:for-each>
739     <xsl:apply-templates />
740   </xsl:template>
741
742   <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
743     <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
744     </pz:metadata> </xsl:for-each> -->
745
746
747
748   <xsl:template name="subject">
749     <xsl:param name="element" />
750     <xsl:for-each select="$element">
751       <pz:metadata type="subject">
752         <xsl:value-of select="tmarc:sa" />
753       </pz:metadata>
754       <pz:metadata type="subject-long">
755         <xsl:for-each select="node()/text()">
756           <xsl:if test="position() > 1">
757             <xsl:text>, </xsl:text>
758           </xsl:if>
759           <xsl:value-of select="." />
760         </xsl:for-each>
761       </pz:metadata>
762     </xsl:for-each>
763   </xsl:template>
764
765
766 </xsl:stylesheet>