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