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