Adds 999$a, c or d as 'localid'
[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:for-each>
585
586       <xsl:for-each select="tmarc:d852">
587         <xsl:if test="tmarc:sy">
588           <pz:metadata type="publicnote">
589             <xsl:value-of select="tmarc:sy" />
590           </pz:metadata>
591         </xsl:if>
592         <xsl:if test="tmarc:sh">
593           <pz:metadata type="callnumber">
594             <xsl:value-of select="tmarc:sh" />
595           </pz:metadata>
596         </xsl:if>
597       </xsl:for-each>
598
599       <pz:metadata type="medium">
600         <xsl:value-of select="$vmedium" />
601         <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
602           <xsl:text> (electronic)</xsl:text>
603         </xsl:if>
604       </pz:metadata>
605
606       <xsl:for-each select="tmarc:d900/tmarc:sa">
607         <pz:metadata type="fulltext">
608           <xsl:value-of select="." />
609         </pz:metadata>
610       </xsl:for-each>
611
612       <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
613         select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
614
615       <xsl:for-each select="tmarc:d900/tmarc:sb">
616         <pz:metadata type="fulltext">
617           <xsl:value-of select="." />
618         </pz:metadata>
619       </xsl:for-each>
620
621       <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
622         select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
623
624       <xsl:for-each select="tmarc:d907">
625         <!-- or tmarc:d901"> -->
626         <pz:metadata type="iii-id">
627           <xsl:value-of select="tmarc:sa" />
628         </pz:metadata>
629       </xsl:for-each>
630
631       <xsl:for-each select="tmarc:d926">
632         <pz:metadata type="locallocation">
633           <xsl:choose><xsl:when test="tmarc:sa">
634             <xsl:value-of select="tmarc:sa"/>
635           </xsl:when><xsl:otherwise>
636             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
637           </xsl:otherwise></xsl:choose>
638         </pz:metadata>
639         <pz:metadata type="callnumber">
640           <xsl:choose><xsl:when test="tmarc:sc">
641             <xsl:value-of select="tmarc:sc"/>
642           </xsl:when><xsl:otherwise>
643             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
644           </xsl:otherwise></xsl:choose>
645         </pz:metadata>
646         <pz:metadata type="available">
647           <xsl:choose><xsl:when test="tmarc:se">
648             <xsl:value-of select="tmarc:se"/>
649           </xsl:when><xsl:otherwise>
650             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
651           </xsl:otherwise></xsl:choose>
652         </pz:metadata>
653       </xsl:for-each>
654
655       <xsl:for-each select="tmarc:d948">
656         <pz:metadata type="holding">
657           <xsl:for-each select="tmarc:s">
658             <xsl:if test="position() > 1">
659               <xsl:text> </xsl:text>
660             </xsl:if>
661             <xsl:value-of select="." />
662           </xsl:for-each>
663         </pz:metadata>
664       </xsl:for-each>
665
666       <xsl:for-each select="tmarc:d991">
667         <pz:metadata type="holding">
668           <xsl:for-each select="tmarc:s">
669             <xsl:if test="position() > 1">
670               <xsl:text> </xsl:text>
671             </xsl:if>
672             <xsl:value-of select="." />
673           </xsl:for-each>
674         </pz:metadata>
675       </xsl:for-each>
676
677       <xsl:for-each select="tmarc:d999">
678         <pz:metadata type="localid">
679           <xsl:choose>
680             <xsl:when test="tmarc:sa">
681               <xsl:value-of select="tmarc:sa"/>
682             </xsl:when>
683             <xsl:when test="tmarc:sc">
684               <xsl:value-of select="tmarc:sc"/>
685             </xsl:when> 
686             <xsl:otherwise>
687               <xsl:value-of select="tmarc:sd"/>
688             </xsl:otherwise>
689           </xsl:choose>
690         </pz:metadata>
691       </xsl:for-each>
692
693
694       <!-- passthrough id data -->
695       <xsl:for-each select="pz:metadata">
696         <xsl:copy-of select="." />
697       </xsl:for-each>
698
699       <!-- other stylesheets importing this might want to define this -->
700         <xsl:call-template name="record-hook" />
701
702     </pz:record>
703   </xsl:template>
704
705   <xsl:template match="text()" />
706
707   <!-- TODO Does not work anymore -->
708   <xsl:template name="shortTitle">
709     <xsl:param name="tag" />
710     <xsl:for-each select="tmarc:d">
711       <xsl:value-of select="tmarc:sa" />
712       <xsl:value-of select="tmarc:sm" />
713       <xsl:value-of select="tmarc:sn" />
714       <xsl:value-of select="tmarc:sp" />
715       <xsl:value-of select="tmarc:sr" />
716     </xsl:for-each>
717   </xsl:template>
718
719   <!-- No working as expected -->
720   <xsl:template name="description">
721     <xsl:param name="element" />
722     <xsl:for-each select="$element">
723       <pz:metadata type="description">
724         <xsl:for-each select="node()">
725           <xsl:value-of select="text()" />
726         </xsl:for-each>
727       </pz:metadata>
728     </xsl:for-each>
729     <xsl:apply-templates />
730   </xsl:template>
731
732   <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
733     <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
734     </pz:metadata> </xsl:for-each> -->
735
736
737
738   <xsl:template name="subject">
739     <xsl:param name="element" />
740     <xsl:for-each select="$element">
741       <pz:metadata type="subject">
742         <xsl:value-of select="tmarc:sa" />
743       </pz:metadata>
744       <pz:metadata type="subject-long">
745         <xsl:for-each select="node()/text()">
746           <xsl:if test="position() > 1">
747             <xsl:text>, </xsl:text>
748           </xsl:if>
749           <xsl:value-of select="." />
750         </xsl:for-each>
751       </pz:metadata>
752     </xsl:for-each>
753   </xsl:template>
754
755
756 </xsl:stylesheet>