Added filter for cargabge characters to 'date' field
[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       </xsl:for-each>
234
235       <xsl:for-each select="tmarc:d250">
236         <pz:metadata type="edition">
237           <xsl:value-of select="tmarc:sa" />
238         </pz:metadata>
239       </xsl:for-each>
240
241       <xsl:for-each select="tmarc:d260">
242         <pz:metadata type="publication-place">
243           <xsl:value-of select="tmarc:sa" />
244         </pz:metadata>
245         <pz:metadata type="publication-name">
246           <xsl:value-of select="tmarc:sb" />
247         </pz:metadata>
248         <pz:metadata type="publication-date">
249           <xsl:value-of select="tmarc:sc" />
250         </pz:metadata>
251       </xsl:for-each>
252
253       <xsl:for-each select="tmarc:d300">
254         <pz:metadata type="physical-extent">
255           <xsl:value-of select="tmarc:sa" />
256         </pz:metadata>
257         <pz:metadata type="physical-format">
258           <xsl:value-of select="tmarc:sb" />
259         </pz:metadata>
260         <pz:metadata type="physical-dimensions">
261           <xsl:value-of select="tmarc:sc" />
262         </pz:metadata>
263         <pz:metadata type="physical-accomp">
264           <xsl:value-of select="tmarc:se" />
265         </pz:metadata>
266         <pz:metadata type="physical-unittype">
267           <xsl:value-of select="tmarc:sf" />
268         </pz:metadata>
269         <pz:metadata type="physical-unitsize">
270           <xsl:value-of select="tmarc:sg" />
271         </pz:metadata>
272         <pz:metadata type="physical-specified">
273           <xsl:value-of select="tmarc:s3" />
274         </pz:metadata>
275       </xsl:for-each>
276
277       <xsl:for-each select="tmarc:d440">
278         <pz:metadata type="series-title">
279           <xsl:value-of select="tmarc:sa" />
280         </pz:metadata>
281       </xsl:for-each>
282
283       <xsl:for-each select="tmarc:d500">
284         <pz:metadata type="description">
285           <xsl:for-each select="node()">
286             <xsl:value-of select="text()" />
287           </xsl:for-each>
288         </pz:metadata>
289       </xsl:for-each>
290
291       <xsl:for-each select="tmarc:d505">
292         <pz:metadata type="description">
293           <xsl:for-each select="node()">
294             <xsl:value-of select="text()" />
295           </xsl:for-each>
296         </pz:metadata>
297       </xsl:for-each>
298
299       <xsl:for-each select="tmarc:d518">
300         <pz:metadata type="description">
301           <xsl:for-each select="node()">
302             <xsl:value-of select="text()" />
303           </xsl:for-each>
304         </pz:metadata>
305       </xsl:for-each>
306
307       <xsl:for-each select="tmarc:d520">
308         <pz:metadata type="description">
309           <xsl:for-each select="node()">
310             <xsl:value-of select="text()" />
311           </xsl:for-each>
312         </pz:metadata>
313       </xsl:for-each>
314
315       <xsl:for-each select="tmarc:d522">
316         <pz:metadata type="description">
317           <xsl:for-each select="node()">
318             <xsl:value-of select="text()" />
319           </xsl:for-each>
320         </pz:metadata>
321       </xsl:for-each>
322
323       <xsl:for-each select="tmarc:d600">
324         <pz:metadata type="subject">
325           <xsl:value-of select="tmarc:sa" />
326         </pz:metadata>
327         <pz:metadata type="subject-long">
328           <xsl:for-each select="node()/text()">
329             <xsl:if test="position() > 1">
330               <xsl:text>, </xsl:text>
331             </xsl:if>
332             <xsl:value-of select="." />
333           </xsl:for-each>
334         </pz:metadata>
335       </xsl:for-each>
336
337       <xsl:for-each select="tmarc:d610">
338         <pz:metadata type="subject">
339           <xsl:value-of select="tmarc:sa" />
340         </pz:metadata>
341         <pz:metadata type="subject-long">
342           <xsl:for-each select="node()/text()">
343             <xsl:if test="position() > 1">
344               <xsl:text>, </xsl:text>
345             </xsl:if>
346             <xsl:value-of select="." />
347           </xsl:for-each>
348         </pz:metadata>
349       </xsl:for-each>
350
351       <xsl:for-each select="tmarc:d611">
352         <pz:metadata type="subject">
353           <xsl:value-of select="tmarc:sa" />
354         </pz:metadata>
355         <pz:metadata type="subject-long">
356           <xsl:for-each select="node()/text()">
357             <xsl:if test="position() > 1">
358               <xsl:text>, </xsl:text>
359             </xsl:if>
360             <xsl:value-of select="." />
361           </xsl:for-each>
362         </pz:metadata>
363       </xsl:for-each>
364
365       <xsl:for-each select="tmarc:d630">
366         <pz:metadata type="subject">
367           <xsl:value-of select="tmarc:sa" />
368         </pz:metadata>
369         <pz:metadata type="subject-long">
370           <xsl:for-each select="node()/text()">
371             <xsl:if test="position() > 1">
372               <xsl:text>, </xsl:text>
373             </xsl:if>
374             <xsl:value-of select="." />
375           </xsl:for-each>
376         </pz:metadata>
377       </xsl:for-each>
378
379       <xsl:for-each select="tmarc:d648">
380         <pz:metadata type="subject">
381           <xsl:value-of select="tmarc:sa" />
382         </pz:metadata>
383         <pz:metadata type="subject-long">
384           <xsl:for-each select="node()/text()">
385             <xsl:if test="position() > 1">
386               <xsl:text>, </xsl:text>
387             </xsl:if>
388             <xsl:value-of select="." />
389           </xsl:for-each>
390         </pz:metadata>
391       </xsl:for-each>
392
393       <xsl:for-each select="tmarc:d650">
394         <pz:metadata type="subject">
395           <xsl:value-of select="tmarc:sa" />
396         </pz:metadata>
397         <pz:metadata type="subject-long">
398           <xsl:for-each select="node()/text()">
399             <xsl:if test="position() > 1">
400               <xsl:text>, </xsl:text>
401             </xsl:if>
402             <xsl:value-of select="." />
403           </xsl:for-each>
404         </pz:metadata>
405       </xsl:for-each>
406
407       <xsl:for-each select="tmarc:d651">
408         <pz:metadata type="subject">
409           <xsl:value-of select="tmarc:sa" />
410         </pz:metadata>
411         <pz:metadata type="subject-long">
412           <xsl:for-each select="node()/text()">
413             <xsl:if test="position() > 1">
414               <xsl:text>, </xsl:text>
415             </xsl:if>
416             <xsl:value-of select="." />
417           </xsl:for-each>
418         </pz:metadata>
419       </xsl:for-each>
420
421       <xsl:for-each select="tmarc:d653">
422         <pz:metadata type="subject">
423           <xsl:value-of select="tmarc:sa" />
424         </pz:metadata>
425         <pz:metadata type="subject-long">
426           <xsl:for-each select="node()/text()">
427             <xsl:if test="position() > 1">
428               <xsl:text>, </xsl:text>
429             </xsl:if>
430             <xsl:value-of select="." />
431           </xsl:for-each>
432         </pz:metadata>
433       </xsl:for-each>
434
435       <xsl:for-each select="tmarc:d654">
436         <pz:metadata type="subject">
437           <xsl:value-of select="tmarc:sa" />
438         </pz:metadata>
439         <pz:metadata type="subject-long">
440           <xsl:for-each select="node()/text()">
441             <xsl:if test="position() > 1">
442               <xsl:text>, </xsl:text>
443             </xsl:if>
444             <xsl:value-of select="." />
445           </xsl:for-each>
446         </pz:metadata>
447       </xsl:for-each>
448
449       <xsl:for-each select="tmarc:d655">
450         <pz:metadata type="subject">
451           <xsl:value-of select="tmarc:sa" />
452         </pz:metadata>
453         <pz:metadata type="subject-long">
454           <xsl:for-each select="node()/text()">
455             <xsl:if test="position() > 1">
456               <xsl:text>, </xsl:text>
457             </xsl:if>
458             <xsl:value-of select="." />
459           </xsl:for-each>
460         </pz:metadata>
461       </xsl:for-each>
462
463       <xsl:for-each select="tmarc:d656">
464         <pz:metadata type="subject">
465           <xsl:value-of select="tmarc:sa" />
466         </pz:metadata>
467         <pz:metadata type="subject-long">
468           <xsl:for-each select="node()/text()">
469             <xsl:if test="position() > 1">
470               <xsl:text>, </xsl:text>
471             </xsl:if>
472             <xsl:value-of select="." />
473           </xsl:for-each>
474         </pz:metadata>
475       </xsl:for-each>
476
477       <xsl:for-each select="tmarc:d657">
478         <pz:metadata type="subject">
479           <xsl:value-of select="tmarc:sa" />
480         </pz:metadata>
481         <pz:metadata type="subject-long">
482           <xsl:for-each select="node()/text()">
483             <xsl:if test="position() > 1">
484               <xsl:text>, </xsl:text>
485             </xsl:if>
486             <xsl:value-of select="." />
487           </xsl:for-each>
488         </pz:metadata>
489       </xsl:for-each>
490
491       <xsl:for-each select="tmarc:d658">
492         <pz:metadata type="subject">
493           <xsl:value-of select="tmarc:sa" />
494         </pz:metadata>
495         <pz:metadata type="subject-long">
496           <xsl:for-each select="node()/text()">
497             <xsl:if test="position() > 1">
498               <xsl:text>, </xsl:text>
499             </xsl:if>
500             <xsl:value-of select="." />
501           </xsl:for-each>
502         </pz:metadata>
503       </xsl:for-each>
504
505       <xsl:for-each select="tmarc:d662">
506         <pz:metadata type="subject">
507           <xsl:value-of select="tmarc:sa" />
508         </pz:metadata>
509         <pz:metadata type="subject-long">
510           <xsl:for-each select="node()/text()">
511             <xsl:if test="position() > 1">
512               <xsl:text>, </xsl:text>
513             </xsl:if>
514             <xsl:value-of select="." />
515           </xsl:for-each>
516         </pz:metadata>
517       </xsl:for-each>
518
519       <xsl:for-each select="tmarc:d69X">
520         <pz:metadata type="subject">
521           <xsl:value-of select="tmarc:sa" />
522         </pz:metadata>
523         <pz:metadata type="subject-long">
524           <xsl:for-each select="node()/text()">
525             <xsl:if test="position() > 1">
526               <xsl:text>, </xsl:text>
527             </xsl:if>
528             <xsl:value-of select="." />
529           </xsl:for-each>
530         </pz:metadata>
531       </xsl:for-each>
532
533       <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656 
534         or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
535
536       <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject"> 
537         <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long"> 
538         <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position() 
539         > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> 
540         </pz:metadata> </xsl:for-each> -->
541
542       <xsl:for-each select="tmarc:d856">
543         <pz:metadata type="electronic-url">
544           <xsl:value-of select="tmarc:su" />
545         </pz:metadata>
546         <pz:metadata type="electronic-text">
547           <xsl:if test="tmarc:sy">
548             <xsl:value-of select="tmarc:sy/text()" />
549           </xsl:if>
550           <xsl:if test="tmarc:s3">
551             <xsl:value-of select="tmarc:s3/text()" />
552           </xsl:if>
553         </pz:metadata>
554         <pz:metadata type="electronic-note">
555           <xsl:value-of select="tmarc:sz" />
556         </pz:metadata>
557         <pz:metadata type="electronic-format-instruction">
558           <xsl:value-of select="tmarc:si" />
559         </pz:metadata>
560         <pz:metadata type="electronic-format-type">
561           <xsl:value-of select="tmarc:sq" />
562         </pz:metadata>
563       </xsl:for-each>
564
565       <xsl:for-each select="tmarc:d773">
566         <pz:metadata type="citation">
567           <xsl:for-each select="*">
568             <xsl:value-of select="normalize-space(.)" />
569             <xsl:text> </xsl:text>
570           </xsl:for-each>
571         </pz:metadata>
572       </xsl:for-each>
573
574       <xsl:for-each select="tmarc:d852">
575         <xsl:if test="tmarc:sy">
576           <pz:metadata type="publicnote">
577             <xsl:value-of select="tmarc:sy" />
578           </pz:metadata>
579         </xsl:if>
580         <xsl:if test="tmarc:sh">
581           <pz:metadata type="callnumber">
582             <xsl:value-of select="tmarc:sh" />
583           </pz:metadata>
584         </xsl:if>
585       </xsl:for-each>
586
587       <pz:metadata type="medium">
588         <xsl:value-of select="$medium" />
589         <xsl:if test="string-length($electronic) and $medium != 'electronic'">
590           <xsl:text> (electronic)</xsl:text>
591         </xsl:if>
592       </pz:metadata>
593
594       <xsl:for-each select="tmarc:d900/tmarc:sa">
595         <pz:metadata type="fulltext">
596           <xsl:value-of select="." />
597         </pz:metadata>
598       </xsl:for-each>
599
600       <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
601         select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
602
603       <xsl:for-each select="tmarc:d900/tmarc:sb">
604         <pz:metadata type="fulltext">
605           <xsl:value-of select="." />
606         </pz:metadata>
607       </xsl:for-each>
608
609       <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
610         select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
611
612       <xsl:for-each select="tmarc:d907">
613         <!-- or tmarc:d901"> -->
614         <pz:metadata type="iii-id">
615           <xsl:value-of select="tmarc:sa" />
616         </pz:metadata>
617       </xsl:for-each>
618
619       <xsl:for-each select="tmarc:d926">
620         <pz:metadata type="holding">
621           <xsl:for-each select="tmarc:s">
622             <xsl:if test="position() > 1">
623               <xsl:text> </xsl:text>
624             </xsl:if>
625             <xsl:value-of select="." />
626           </xsl:for-each>
627         </pz:metadata>
628       </xsl:for-each>
629
630       <xsl:for-each select="tmarc:d948">
631         <pz:metadata type="holding">
632           <xsl:for-each select="tmarc:s">
633             <xsl:if test="position() > 1">
634               <xsl:text> </xsl:text>
635             </xsl:if>
636             <xsl:value-of select="." />
637           </xsl:for-each>
638         </pz:metadata>
639       </xsl:for-each>
640
641       <xsl:for-each select="tmarc:d991">
642         <pz:metadata type="holding">
643           <xsl:for-each select="tmarc:s">
644             <xsl:if test="position() > 1">
645               <xsl:text> </xsl:text>
646             </xsl:if>
647             <xsl:value-of select="." />
648           </xsl:for-each>
649         </pz:metadata>
650       </xsl:for-each>
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>