Pazpar2 1.4.4-2 for squeeze
[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
9   <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
10     http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
11   <xsl:template name="record-hook" />
12
13
14   <xsl:template match="/">
15       <xsl:apply-templates />
16   </xsl:template>
17
18   <xsl:template match="tmarc:r">
19     <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
20     <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
21     <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
22     <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
23     <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
24     <!-- Does not always hit the right substring. The field is not always fixed-width? -->
25     <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
26     <xsl:variable name="contains110" select="tmarc:d110" />
27     <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
28     <xsl:variable name="typeofrec" select="substring(tmarc:l, 7, 1)"/>
29     <xsl:variable name="typeofvm" select="substring(tmarc:c008, 34, 1)"/>
30     <xsl:variable name="biblevel" select="substring(tmarc:l, 8, 1)"/>
31     <xsl:variable name="physdes" select="substring(tmarc:c007, 1, 1)"/>
32     <xsl:variable name="form1" select="substring(tmarc:c008, 24, 1)"/>
33     <xsl:variable name="form2" select="substring(tmarc:c008, 30, 1)"/>
34     <xsl:variable name="oclca" select="substring(tmarc:c007, 1, 1)"/>
35     <xsl:variable name="oclcb" select="substring(tmarc:c007, 2, 1)"/>
36     <xsl:variable name="oclcd" select="substring(tmarc:c007, 4, 1)"/>
37     <xsl:variable name="oclce" select="substring(tmarc:c007, 5, 1)"/>
38     <xsl:variable name="typeofserial" select="substring(tmarc:c008, 22, 1)"/>
39
40     <xsl:variable name="electronic">
41       <xsl:choose>
42         <xsl:when test="$form1='s' or $form1='q' or $form1='o' or
43            $form2='s' or $form2='q' or $form2='o'">
44            <xsl:text>yes</xsl:text>
45         </xsl:when>
46         <xsl:otherwise/>
47       </xsl:choose>
48     </xsl:variable>
49
50     <xsl:variable name="medium">
51       <xsl:choose>
52         <xsl:when test="($typeofrec='a' or $typeofrec='t') and $biblevel='m'">book</xsl:when>
53         <xsl:when test="$typeofrec='j' or $typeofrec='i'">
54           <xsl:text>recording</xsl:text>
55           <xsl:choose>
56             <xsl:when test="$oclcb='d' and $oclcd='f'">-cd</xsl:when>
57             <xsl:when test="$oclcb='s'">-cassette</xsl:when>
58             <xsl:when test="$oclcb='d' and $oclcd='a' or $oclcd='b' or
59               $oclcd='c' or $oclcd='d' or $oclcd='e'">-vinyl</xsl:when>
60           </xsl:choose>
61         </xsl:when>
62         <xsl:when test="$typeofrec='g'">
63           <xsl:choose>
64             <xsl:when test="$typeofvm='m' or $typeofvm='v'">
65               <xsl:text>video</xsl:text>
66               <xsl:choose>
67                 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='v'">-dvd</xsl:when>
68                 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='s'">-blu-ray</xsl:when>
69                 <xsl:when test="$oclca='v' and $oclcb='f' and $oclce='b'">-vhs</xsl:when>
70               </xsl:choose>
71             </xsl:when>
72             <xsl:otherwise>audio-visual</xsl:otherwise>
73           </xsl:choose>
74         </xsl:when>
75         <xsl:when test="$typeofrec='a' and $biblevel='s'">
76           <xsl:choose>
77             <xsl:when test="$typeofserial='n'">newspaper</xsl:when>
78             <xsl:otherwise>journal</xsl:otherwise>
79           </xsl:choose>
80         </xsl:when>
81         <xsl:when test="$typeofrec='e' or $typeofrec='f'">map</xsl:when>
82         <xsl:when test="$typeofrec='c' or $typeofrec='d'">music-score</xsl:when>
83         <xsl:when test="$form1='a' or $form1='b' or $form1='c'">microform</xsl:when>
84         <xsl:when test="$typeofrec='t'">thesis</xsl:when>
85         <!-- <xsl:when test="$journal_title">article</xsl:when> -->
86         <xsl:when test="$typeofrec='a' or $typeofrec='i' and
87             ($typeofserial='d' or $typeofserial='w')">web</xsl:when>
88         <xsl:when test="$typeofrec='a' and $biblevel='b'">article</xsl:when>
89         <xsl:when test="$typeofrec='m'">electronic</xsl:when>
90         <xsl:when test="$title_medium">
91           <xsl:value-of select="translate($title_medium, ' []/:', '')" />
92         </xsl:when>
93         <xsl:otherwise>
94           <xsl:text>other</xsl:text>
95         </xsl:otherwise>
96       </xsl:choose>
97     </xsl:variable>
98
99     <pz:record>
100 <!--
101       <xsl:attribute name="mergekey">
102     <xsl:text>title </xsl:text>
103   <xsl:value-of select="tmarc:d245/tmarc:sa" />
104   <xsl:text> author </xsl:text>
105   <xsl:value-of select="tmarc:d100/tmarc:sa" />
106   <xsl:text> medium </xsl:text>
107   <xsl:value-of select="$medium" />
108     </xsl:attribute>
109   -->
110
111       <xsl:for-each select="tmarc:c001">
112         <pz:metadata type="id">
113           <xsl:value-of select="." />
114         </pz:metadata>
115       </xsl:for-each>
116
117       <xsl:for-each select="tmarc:d010">
118         <pz:metadata type="lccn">
119           <xsl:value-of select="tmarc:sa" />
120         </pz:metadata>
121       </xsl:for-each>
122
123       <xsl:for-each select="tmarc:d020">
124         <pz:metadata type="isbn">
125           <xsl:value-of select="tmarc:sa" />
126         </pz:metadata>
127       </xsl:for-each>
128
129       <xsl:for-each select="tmarc:d022">
130         <pz:metadata type="issn">
131           <xsl:value-of select="tmarc:sa" />
132         </pz:metadata>
133       </xsl:for-each>
134
135       <xsl:for-each select="tmarc:d027">
136         <pz:metadata type="tech-rep-nr">
137           <xsl:value-of select="tmarc:sa" />
138         </pz:metadata>
139       </xsl:for-each>
140
141       <xsl:for-each select="tmarc:d035"> 
142         <pz:metadata type="system-control-nr">
143           <xsl:choose>
144             <xsl:when test="tmarc:sa">
145               <xsl:value-of select="tmarc:sa"/>
146             </xsl:when>
147             <xsl:otherwise>
148               <xsl:value-of select="tmarc:sb"/>
149             </xsl:otherwise>
150           </xsl:choose>
151         </pz:metadata>
152       </xsl:for-each>
153
154       <xsl:for-each select="tmarc:d100">
155         <pz:metadata type="author">
156           <xsl:value-of select="tmarc:sa" />
157         </pz:metadata>
158         <pz:metadata type="author-title">
159           <xsl:value-of select="tmarc:sc" />
160         </pz:metadata>
161         <pz:metadata type="author-date">
162           <xsl:value-of select="tmarc:sd" />
163         </pz:metadata>
164       </xsl:for-each>
165
166       <xsl:for-each select="tmarc:d110">
167         <pz:metadata type="corporate-name">
168           <xsl:value-of select="tmarc:sa" />
169         </pz:metadata>
170         <pz:metadata type="corporate-location">
171           <xsl:value-of select="tmarc:sc" />
172         </pz:metadata>
173         <pz:metadata type="corporate-date">
174           <xsl:value-of select="tmarc:sd" />
175         </pz:metadata>
176       </xsl:for-each>
177
178       <xsl:for-each select="tmarc:d111">
179         <pz:metadata type="meeting-name">
180           <xsl:value-of select="tmarc:sa" />
181         </pz:metadata>
182         <pz:metadata type="meeting-location">
183           <xsl:value-of select="tmarc:sc" />
184         </pz:metadata>
185         <pz:metadata type="meeting-date">
186           <xsl:value-of select="tmarc:sd" />
187         </pz:metadata>
188       </xsl:for-each>
189
190       <xsl:for-each select="tmarc:d260">
191         <pz:metadata type="date">
192           <xsl:value-of select="translate(tmarc:sc, 'cp[].', '')" />
193         </pz:metadata>
194       </xsl:for-each>
195
196       <xsl:for-each select="tmarc:d130">
197         <pz:metadata type="title-uniform">
198           <xsl:value-of select="tmarc:sa" />
199         </pz:metadata>
200         <pz:metadata type="title-uniform-media">
201           <xsl:value-of select="tmarc:sm" />
202         </pz:metadata>
203         <pz:metadata type="title-uniform-parts">
204           <xsl:value-of select="tmarc:sn" />
205         </pz:metadata>
206         <pz:metadata type="title-uniform-partname">
207           <xsl:value-of select="tmarc:sp" />
208         </pz:metadata>
209         <pz:metadata type="title-uniform-key">
210           <xsl:value-of select="tmarc:sr" />
211         </pz:metadata>
212       </xsl:for-each>
213
214       <xsl:for-each select="tmarc:d245">
215         <pz:metadata type="title">
216           <xsl:value-of select="tmarc:sa" />
217         </pz:metadata>
218         <pz:metadata type="title-remainder">
219           <xsl:value-of select="tmarc:sb" />
220         </pz:metadata>
221         <pz:metadata type="title-responsibility">
222           <xsl:value-of select="tmarc:sc" />
223         </pz:metadata>
224         <pz:metadata type="title-dates">
225           <xsl:value-of select="tmarc:sf" />
226         </pz:metadata>
227         <pz:metadata type="title-medium">
228           <xsl:value-of select="tmarc:sh" />
229         </pz:metadata>
230         <pz:metadata type="title-number-section">
231           <xsl:value-of select="tmarc:sn" />
232         </pz:metadata>
233         <pz:metadata type="title-complete">
234           <xsl:value-of select="tmarc:sa" />
235           <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
236         </pz:metadata>
237       </xsl:for-each>
238
239       <xsl:for-each select="tmarc:d250">
240         <pz:metadata type="edition">
241           <xsl:value-of select="tmarc:sa" />
242         </pz:metadata>
243       </xsl:for-each>
244
245       <xsl:for-each select="tmarc:d260">
246         <pz:metadata type="publication-place">
247           <xsl:value-of select="tmarc:sa" />
248         </pz:metadata>
249         <pz:metadata type="publication-name">
250           <xsl:value-of select="tmarc:sb" />
251         </pz:metadata>
252         <pz:metadata type="publication-date">
253           <xsl:value-of select="tmarc:sc" />
254         </pz:metadata>
255       </xsl:for-each>
256
257       <xsl:for-each select="tmarc:d300">
258         <pz:metadata type="physical-extent">
259           <xsl:value-of select="tmarc:sa" />
260         </pz:metadata>
261         <pz:metadata type="physical-format">
262           <xsl:value-of select="tmarc:sb" />
263         </pz:metadata>
264         <pz:metadata type="physical-dimensions">
265           <xsl:value-of select="tmarc:sc" />
266         </pz:metadata>
267         <pz:metadata type="physical-accomp">
268           <xsl:value-of select="tmarc:se" />
269         </pz:metadata>
270         <pz:metadata type="physical-unittype">
271           <xsl:value-of select="tmarc:sf" />
272         </pz:metadata>
273         <pz:metadata type="physical-unitsize">
274           <xsl:value-of select="tmarc:sg" />
275         </pz:metadata>
276         <pz:metadata type="physical-specified">
277           <xsl:value-of select="tmarc:s3" />
278         </pz:metadata>
279       </xsl:for-each>
280
281       <xsl:for-each select="tmarc:d440">
282         <pz:metadata type="series-title">
283           <xsl:value-of select="tmarc:sa" />
284         </pz:metadata>
285       </xsl:for-each>
286
287       <xsl:for-each select="tmarc:d500">
288         <pz:metadata type="description">
289           <xsl:for-each select="node()">
290             <xsl:value-of select="text()" />
291           </xsl:for-each>
292         </pz:metadata>
293       </xsl:for-each>
294
295       <xsl:for-each select="tmarc:d505">
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:d518">
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:d520">
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:d522">
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:d600">
328         <pz:metadata type="subject">
329           <xsl:value-of select="tmarc:sa" />
330         </pz:metadata>
331         <pz:metadata type="subject-long">
332           <xsl:for-each select="node()/text()">
333             <xsl:if test="position() > 1">
334               <xsl:text>, </xsl:text>
335             </xsl:if>
336             <xsl:value-of select="." />
337           </xsl:for-each>
338         </pz:metadata>
339       </xsl:for-each>
340
341       <xsl:for-each select="tmarc:d610">
342         <pz:metadata type="subject">
343           <xsl:value-of select="tmarc:sa" />
344         </pz:metadata>
345         <pz:metadata type="subject-long">
346           <xsl:for-each select="node()/text()">
347             <xsl:if test="position() > 1">
348               <xsl:text>, </xsl:text>
349             </xsl:if>
350             <xsl:value-of select="." />
351           </xsl:for-each>
352         </pz:metadata>
353       </xsl:for-each>
354
355       <xsl:for-each select="tmarc:d611">
356         <pz:metadata type="subject">
357           <xsl:value-of select="tmarc:sa" />
358         </pz:metadata>
359         <pz:metadata type="subject-long">
360           <xsl:for-each select="node()/text()">
361             <xsl:if test="position() > 1">
362               <xsl:text>, </xsl:text>
363             </xsl:if>
364             <xsl:value-of select="." />
365           </xsl:for-each>
366         </pz:metadata>
367       </xsl:for-each>
368
369       <xsl:for-each select="tmarc:d630">
370         <pz:metadata type="subject">
371           <xsl:value-of select="tmarc:sa" />
372         </pz:metadata>
373         <pz:metadata type="subject-long">
374           <xsl:for-each select="node()/text()">
375             <xsl:if test="position() > 1">
376               <xsl:text>, </xsl:text>
377             </xsl:if>
378             <xsl:value-of select="." />
379           </xsl:for-each>
380         </pz:metadata>
381       </xsl:for-each>
382
383       <xsl:for-each select="tmarc:d648">
384         <pz:metadata type="subject">
385           <xsl:value-of select="tmarc:sa" />
386         </pz:metadata>
387         <pz:metadata type="subject-long">
388           <xsl:for-each select="node()/text()">
389             <xsl:if test="position() > 1">
390               <xsl:text>, </xsl:text>
391             </xsl:if>
392             <xsl:value-of select="." />
393           </xsl:for-each>
394         </pz:metadata>
395       </xsl:for-each>
396
397       <xsl:for-each select="tmarc:d650">
398         <pz:metadata type="subject">
399           <xsl:value-of select="tmarc:sa" />
400         </pz:metadata>
401         <pz:metadata type="subject-long">
402           <xsl:for-each select="node()/text()">
403             <xsl:if test="position() > 1">
404               <xsl:text>, </xsl:text>
405             </xsl:if>
406             <xsl:value-of select="." />
407           </xsl:for-each>
408         </pz:metadata>
409       </xsl:for-each>
410
411       <xsl:for-each select="tmarc:d651">
412         <pz:metadata type="subject">
413           <xsl:value-of select="tmarc:sa" />
414         </pz:metadata>
415         <pz:metadata type="subject-long">
416           <xsl:for-each select="node()/text()">
417             <xsl:if test="position() > 1">
418               <xsl:text>, </xsl:text>
419             </xsl:if>
420             <xsl:value-of select="." />
421           </xsl:for-each>
422         </pz:metadata>
423       </xsl:for-each>
424
425       <xsl:for-each select="tmarc:d653">
426         <pz:metadata type="subject">
427           <xsl:value-of select="tmarc:sa" />
428         </pz:metadata>
429         <pz:metadata type="subject-long">
430           <xsl:for-each select="node()/text()">
431             <xsl:if test="position() > 1">
432               <xsl:text>, </xsl:text>
433             </xsl:if>
434             <xsl:value-of select="." />
435           </xsl:for-each>
436         </pz:metadata>
437       </xsl:for-each>
438
439       <xsl:for-each select="tmarc:d654">
440         <pz:metadata type="subject">
441           <xsl:value-of select="tmarc:sa" />
442         </pz:metadata>
443         <pz:metadata type="subject-long">
444           <xsl:for-each select="node()/text()">
445             <xsl:if test="position() > 1">
446               <xsl:text>, </xsl:text>
447             </xsl:if>
448             <xsl:value-of select="." />
449           </xsl:for-each>
450         </pz:metadata>
451       </xsl:for-each>
452
453       <xsl:for-each select="tmarc:d655">
454         <pz:metadata type="subject">
455           <xsl:value-of select="tmarc:sa" />
456         </pz:metadata>
457         <pz:metadata type="subject-long">
458           <xsl:for-each select="node()/text()">
459             <xsl:if test="position() > 1">
460               <xsl:text>, </xsl:text>
461             </xsl:if>
462             <xsl:value-of select="." />
463           </xsl:for-each>
464         </pz:metadata>
465       </xsl:for-each>
466
467       <xsl:for-each select="tmarc:d656">
468         <pz:metadata type="subject">
469           <xsl:value-of select="tmarc:sa" />
470         </pz:metadata>
471         <pz:metadata type="subject-long">
472           <xsl:for-each select="node()/text()">
473             <xsl:if test="position() > 1">
474               <xsl:text>, </xsl:text>
475             </xsl:if>
476             <xsl:value-of select="." />
477           </xsl:for-each>
478         </pz:metadata>
479       </xsl:for-each>
480
481       <xsl:for-each select="tmarc:d657">
482         <pz:metadata type="subject">
483           <xsl:value-of select="tmarc:sa" />
484         </pz:metadata>
485         <pz:metadata type="subject-long">
486           <xsl:for-each select="node()/text()">
487             <xsl:if test="position() > 1">
488               <xsl:text>, </xsl:text>
489             </xsl:if>
490             <xsl:value-of select="." />
491           </xsl:for-each>
492         </pz:metadata>
493       </xsl:for-each>
494
495       <xsl:for-each select="tmarc:d658">
496         <pz:metadata type="subject">
497           <xsl:value-of select="tmarc:sa" />
498         </pz:metadata>
499         <pz:metadata type="subject-long">
500           <xsl:for-each select="node()/text()">
501             <xsl:if test="position() > 1">
502               <xsl:text>, </xsl:text>
503             </xsl:if>
504             <xsl:value-of select="." />
505           </xsl:for-each>
506         </pz:metadata>
507       </xsl:for-each>
508
509       <xsl:for-each select="tmarc:d662">
510         <pz:metadata type="subject">
511           <xsl:value-of select="tmarc:sa" />
512         </pz:metadata>
513         <pz:metadata type="subject-long">
514           <xsl:for-each select="node()/text()">
515             <xsl:if test="position() > 1">
516               <xsl:text>, </xsl:text>
517             </xsl:if>
518             <xsl:value-of select="." />
519           </xsl:for-each>
520         </pz:metadata>
521       </xsl:for-each>
522
523       <xsl:for-each select="tmarc:d69X">
524         <pz:metadata type="subject">
525           <xsl:value-of select="tmarc:sa" />
526         </pz:metadata>
527         <pz:metadata type="subject-long">
528           <xsl:for-each select="node()/text()">
529             <xsl:if test="position() > 1">
530               <xsl:text>, </xsl:text>
531             </xsl:if>
532             <xsl:value-of select="." />
533           </xsl:for-each>
534         </pz:metadata>
535       </xsl:for-each>
536
537       <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656 
538         or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
539
540       <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject"> 
541         <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long"> 
542         <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position() 
543         > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> 
544         </pz:metadata> </xsl:for-each> -->
545
546       <xsl:for-each select="tmarc:d856">
547         <pz:metadata type="electronic-url">
548           <xsl:value-of select="tmarc:su" />
549         </pz:metadata>
550         <pz:metadata type="electronic-text">
551           <xsl:if test="tmarc:sy">
552             <xsl:value-of select="tmarc:sy/text()" />
553           </xsl:if>
554           <xsl:if test="tmarc:s3">
555             <xsl:value-of select="tmarc:s3/text()" />
556           </xsl:if>
557         </pz:metadata>
558         <pz:metadata type="electronic-note">
559           <xsl:value-of select="tmarc:sz" />
560         </pz:metadata>
561         <pz:metadata type="electronic-format-instruction">
562           <xsl:value-of select="tmarc:si" />
563         </pz:metadata>
564         <pz:metadata type="electronic-format-type">
565           <xsl:value-of select="tmarc:sq" />
566         </pz:metadata>
567       </xsl:for-each>
568
569       <xsl:for-each select="tmarc:d773">
570         <pz:metadata type="citation">
571           <xsl:for-each select="*">
572             <xsl:value-of select="normalize-space(.)" />
573             <xsl:text> </xsl:text>
574           </xsl:for-each>
575         </pz:metadata>
576       </xsl:for-each>
577
578       <xsl:for-each select="tmarc:d852">
579         <xsl:if test="tmarc:sy">
580           <pz:metadata type="publicnote">
581             <xsl:value-of select="tmarc:sy" />
582           </pz:metadata>
583         </xsl:if>
584         <xsl:if test="tmarc:sh">
585           <pz:metadata type="callnumber">
586             <xsl:value-of select="tmarc:sh" />
587           </pz:metadata>
588         </xsl:if>
589       </xsl:for-each>
590
591       <pz:metadata type="medium">
592         <xsl:value-of select="$medium" />
593         <xsl:if test="string-length($electronic) and $medium != 'electronic'">
594           <xsl:text> (electronic)</xsl:text>
595         </xsl:if>
596       </pz:metadata>
597
598       <xsl:for-each select="tmarc:d900/tmarc:sa">
599         <pz:metadata type="fulltext">
600           <xsl:value-of select="." />
601         </pz:metadata>
602       </xsl:for-each>
603
604       <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
605         select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
606
607       <xsl:for-each select="tmarc:d900/tmarc:sb">
608         <pz:metadata type="fulltext">
609           <xsl:value-of select="." />
610         </pz:metadata>
611       </xsl:for-each>
612
613       <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
614         select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
615
616       <xsl:for-each select="tmarc:d907">
617         <!-- or tmarc:d901"> -->
618         <pz:metadata type="iii-id">
619           <xsl:value-of select="tmarc:sa" />
620         </pz:metadata>
621       </xsl:for-each>
622
623       <xsl:for-each select="tmarc:d926">
624         <pz:metadata type="locallocation">
625           <xsl:choose><xsl:when test="tmarc:sa">
626             <xsl:value-of select="tmarc:sa"/>
627           </xsl:when><xsl:otherwise>
628             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
629           </xsl:otherwise></xsl:choose>
630         </pz:metadata>
631         <pz:metadata type="callnumber">
632           <xsl:choose><xsl:when test="tmarc:sc">
633             <xsl:value-of select="tmarc:sc"/>
634           </xsl:when><xsl:otherwise>
635             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
636           </xsl:otherwise></xsl:choose>
637         </pz:metadata>
638         <pz:metadata type="available">
639           <xsl:choose><xsl:when test="tmarc:se">
640             <xsl:value-of select="tmarc:se"/>
641           </xsl:when><xsl:otherwise>
642             <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
643           </xsl:otherwise></xsl:choose>
644         </pz:metadata>
645       </xsl:for-each>
646
647       <xsl:for-each select="tmarc:d948">
648         <pz:metadata type="holding">
649           <xsl:for-each select="tmarc:s">
650             <xsl:if test="position() > 1">
651               <xsl:text> </xsl:text>
652             </xsl:if>
653             <xsl:value-of select="." />
654           </xsl:for-each>
655         </pz:metadata>
656       </xsl:for-each>
657
658       <xsl:for-each select="tmarc:d991">
659         <pz:metadata type="holding">
660           <xsl:for-each select="tmarc:s">
661             <xsl:if test="position() > 1">
662               <xsl:text> </xsl:text>
663             </xsl:if>
664             <xsl:value-of select="." />
665           </xsl:for-each>
666         </pz:metadata>
667       </xsl:for-each>
668
669       <!-- passthrough id data -->
670       <xsl:for-each select="pz:metadata">
671         <xsl:copy-of select="." />
672       </xsl:for-each>
673
674       <!-- other stylesheets importing this might want to define this -->
675         <xsl:call-template name="record-hook" />
676
677     </pz:record>
678   </xsl:template>
679
680   <xsl:template match="text()" />
681
682   <!-- TODO Does not work anymore -->
683   <xsl:template name="shortTitle">
684     <xsl:param name="tag" />
685     <xsl:for-each select="tmarc:d">
686       <xsl:value-of select="tmarc:sa" />
687       <xsl:value-of select="tmarc:sm" />
688       <xsl:value-of select="tmarc:sn" />
689       <xsl:value-of select="tmarc:sp" />
690       <xsl:value-of select="tmarc:sr" />
691     </xsl:for-each>
692   </xsl:template>
693
694   <!-- No working as expected -->
695   <xsl:template name="description">
696     <xsl:param name="element" />
697     <xsl:for-each select="$element">
698       <pz:metadata type="description">
699         <xsl:for-each select="node()">
700           <xsl:value-of select="text()" />
701         </xsl:for-each>
702       </pz:metadata>
703     </xsl:for-each>
704     <xsl:apply-templates />
705   </xsl:template>
706
707   <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
708     <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
709     </pz:metadata> </xsl:for-each> -->
710
711
712
713   <xsl:template name="subject">
714     <xsl:param name="element" />
715     <xsl:for-each select="$element">
716       <pz:metadata type="subject">
717         <xsl:value-of select="tmarc:sa" />
718       </pz:metadata>
719       <pz:metadata type="subject-long">
720         <xsl:for-each select="node()/text()">
721           <xsl:if test="position() > 1">
722             <xsl:text>, </xsl:text>
723           </xsl:if>
724           <xsl:value-of select="." />
725         </xsl:for-each>
726       </pz:metadata>
727     </xsl:for-each>
728   </xsl:template>
729
730
731 </xsl:stylesheet>