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">
6 <xsl:output indent="yes" method="xml" version="1.0"
8 <xsl:param name="medium"/>
10 <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format
11 http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
12 <xsl:template name="record-hook" />
15 <xsl:template match="/">
16 <xsl:apply-templates />
19 <xsl:template match="tmarc:collection">
21 <xsl:apply-templates />
25 <xsl:template match="tmarc:r">
26 <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
27 <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
28 <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
29 <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
30 <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
31 <!-- Does not always hit the right substring. The field is not always fixed-width? -->
32 <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
33 <xsl:variable name="contains110" select="tmarc:d110" />
34 <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
35 <xsl:variable name="typeofrec" select="substring(tmarc:l, 7, 1)"/>
36 <xsl:variable name="typeofvm" select="substring(tmarc:c008, 34, 1)"/>
37 <xsl:variable name="biblevel" select="substring(tmarc:l, 8, 1)"/>
38 <xsl:variable name="physdes" select="substring(tmarc:c007, 1, 1)"/>
39 <xsl:variable name="form1" select="substring(tmarc:c008, 24, 1)"/>
40 <xsl:variable name="form2" select="substring(tmarc:c008, 30, 1)"/>
41 <xsl:variable name="oclca" select="substring(tmarc:c007, 1, 1)"/>
42 <xsl:variable name="oclcb" select="substring(tmarc:c007, 2, 1)"/>
43 <xsl:variable name="oclcd" select="substring(tmarc:c007, 4, 1)"/>
44 <xsl:variable name="oclce" select="substring(tmarc:c007, 5, 1)"/>
45 <xsl:variable name="typeofserial" select="substring(tmarc:c008, 22, 1)"/>
47 <xsl:variable name="electronic">
49 <xsl:when test="$form1='s' or $form1='q' or $form1='o' or
50 $form2='s' or $form2='q' or $form2='o'">
51 <xsl:text>yes</xsl:text>
57 <xsl:variable name="vmedium">
59 <xsl:when test="string-length($medium)"><xsl:value-of select="$medium" /></xsl:when>
60 <xsl:when test="($typeofrec='a' or $typeofrec='t') and $biblevel='m'">book</xsl:when>
61 <xsl:when test="$typeofrec='j' or $typeofrec='i'">
62 <xsl:text>recording</xsl:text>
64 <xsl:when test="$oclcb='d' and $oclcd='f'">-cd</xsl:when>
65 <xsl:when test="$oclcb='s'">-cassette</xsl:when>
66 <xsl:when test="$oclcb='d' and $oclcd='a' or $oclcd='b' or
67 $oclcd='c' or $oclcd='d' or $oclcd='e'">-vinyl</xsl:when>
70 <xsl:when test="$typeofrec='g'">
72 <xsl:when test="$typeofvm='m' or $typeofvm='v'">
73 <xsl:text>video</xsl:text>
75 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='v'">-dvd</xsl:when>
76 <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='s'">-blu-ray</xsl:when>
77 <xsl:when test="$oclca='v' and $oclcb='f' and $oclce='b'">-vhs</xsl:when>
80 <xsl:otherwise>audio-visual</xsl:otherwise>
83 <xsl:when test="$typeofrec='a' and $biblevel='s'">
85 <xsl:when test="$typeofserial='n'">newspaper</xsl:when>
86 <xsl:otherwise>journal</xsl:otherwise>
89 <xsl:when test="$typeofrec='e' or $typeofrec='f'">map</xsl:when>
90 <xsl:when test="$typeofrec='c' or $typeofrec='d'">music-score</xsl:when>
91 <xsl:when test="$form1='a' or $form1='b' or $form1='c'">microform</xsl:when>
92 <xsl:when test="$typeofrec='t'">thesis</xsl:when>
93 <!-- <xsl:when test="$journal_title">article</xsl:when> -->
94 <xsl:when test="$typeofrec='a' or $typeofrec='i' and
95 ($typeofserial='d' or $typeofserial='w')">web</xsl:when>
96 <xsl:when test="$typeofrec='a' and $biblevel='b'">article</xsl:when>
97 <xsl:when test="$typeofrec='m'">electronic</xsl:when>
98 <xsl:when test="$title_medium">
99 <xsl:value-of select="translate($title_medium, ' []/:', '')" />
102 <xsl:text>other</xsl:text>
107 <xsl:variable name="has_fulltext">
109 <xsl:when test="tmarc:d856/tmarc:sq">
110 <xsl:text>yes</xsl:text>
112 <xsl:when test="tmarc:d856/tmarc:si='TEXT*'">
113 <xsl:text>yes</xsl:text>
116 <xsl:text>no</xsl:text>
121 <xsl:variable name="oclc_number">
123 <xsl:when test='contains(tmarc:c001,"ocn") or
124 contains(tmarc:c001,"ocm") or
125 contains(tmarc:c001,"OCoLC") '>
126 <xsl:value-of select="tmarc:c001"/>
128 <xsl:when test='contains(tmarc:d035/tmarc:sa,"ocn") or
129 contains(tmarc:d035/tmarc:sa,"ocm") or
130 contains(tmarc:d035/tmarc:sa,"OCoLC") '>
131 <xsl:value-of select="tmarc:d035/tmarc:sa"/>
136 <xsl:variable name="date_008">
138 <xsl:when test="contains('cestpudikmr', substring(tmarc:c008, 7, 1))">
139 <xsl:value-of select="substring(tmarc:c008, 8, 4)" />
144 <xsl:variable name="date_end_008">
146 <xsl:when test="contains('dikmr', substring(tmarc:c008, 7, 1))">
147 <xsl:value-of select="substring(tmarc:c008, 12, 4)" />
154 <xsl:attribute name="mergekey">
155 <xsl:text>title </xsl:text>
156 <xsl:value-of select="tmarc:d245/tmarc:sa" />
157 <xsl:text> author </xsl:text>
158 <xsl:value-of select="tmarc:d100/tmarc:sa" />
159 <xsl:text> medium </xsl:text>
160 <xsl:value-of select="$medium" />
164 <xsl:for-each select="tmarc:c001">
165 <pz:metadata type="id">
166 <xsl:value-of select="." />
170 <pz:metadata type="oclc-number">
171 <xsl:value-of select="$oclc_number" />
174 <xsl:for-each select="tmarc:d010">
175 <pz:metadata type="lccn">
176 <xsl:value-of select="tmarc:sa" />
180 <xsl:for-each select="tmarc:d020">
181 <pz:metadata type="isbn">
182 <xsl:value-of select="tmarc:sa" />
186 <xsl:for-each select="tmarc:d022">
187 <pz:metadata type="issn">
188 <xsl:value-of select="tmarc:sa" />
192 <xsl:for-each select="tmarc:d027">
193 <pz:metadata type="tech-rep-nr">
194 <xsl:value-of select="tmarc:sa" />
198 <xsl:for-each select="tmarc:d035">
199 <pz:metadata type="system-control-nr">
201 <xsl:when test="tmarc:sa">
202 <xsl:value-of select="tmarc:sa"/>
205 <xsl:value-of select="tmarc:sb"/>
211 <xsl:for-each select="tmarc:d100">
212 <pz:metadata type="author">
213 <xsl:value-of select="tmarc:sa" />
215 <pz:metadata type="author-title">
216 <xsl:value-of select="tmarc:sc" />
218 <pz:metadata type="author-date">
219 <xsl:value-of select="tmarc:sd" />
223 <xsl:for-each select="tmarc:d110">
224 <pz:metadata type="corporate-name">
225 <xsl:value-of select="tmarc:sa" />
227 <pz:metadata type="corporate-location">
228 <xsl:value-of select="tmarc:sc" />
230 <pz:metadata type="corporate-date">
231 <xsl:value-of select="tmarc:sd" />
235 <xsl:for-each select="tmarc:d111">
236 <pz:metadata type="meeting-name">
237 <xsl:value-of select="tmarc:sa" />
239 <pz:metadata type="meeting-location">
240 <xsl:value-of select="tmarc:sc" />
242 <pz:metadata type="meeting-date">
243 <xsl:value-of select="tmarc:sd" />
247 <xsl:for-each select="tmarc:d260">
248 <pz:metadata type="date">
249 <xsl:value-of select="translate(tmarc:sc, 'cp[].', '')" />
253 <xsl:if test="$date_008 and not(tmarc:d260)">
254 <pz:metadata type="date">
256 <xsl:when test="$date_end_008">
257 <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
260 <xsl:value-of select="$date_008" />
267 <xsl:for-each select="tmarc:d130">
268 <pz:metadata type="title-uniform">
269 <xsl:value-of select="tmarc:sa" />
271 <pz:metadata type="title-uniform-media">
272 <xsl:value-of select="tmarc:sm" />
274 <pz:metadata type="title-uniform-parts">
275 <xsl:value-of select="tmarc:sn" />
277 <pz:metadata type="title-uniform-partname">
278 <xsl:value-of select="tmarc:sp" />
280 <pz:metadata type="title-uniform-key">
281 <xsl:value-of select="tmarc:sr" />
285 <xsl:for-each select="tmarc:d245">
286 <pz:metadata type="title">
287 <xsl:value-of select="tmarc:sa" />
289 <pz:metadata type="title-remainder">
290 <xsl:value-of select="tmarc:sb" />
292 <pz:metadata type="title-responsibility">
293 <xsl:value-of select="tmarc:sc" />
295 <pz:metadata type="title-dates">
296 <xsl:value-of select="tmarc:sf" />
298 <pz:metadata type="title-medium">
299 <xsl:value-of select="tmarc:sh" />
301 <pz:metadata type="title-number-section">
302 <xsl:value-of select="tmarc:sn" />
304 <pz:metadata type="title-complete">
305 <xsl:value-of select="tmarc:sa" />
306 <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
310 <xsl:for-each select="tmarc:d250">
311 <pz:metadata type="edition">
312 <xsl:value-of select="tmarc:sa" />
316 <xsl:for-each select="tmarc:d260">
317 <pz:metadata type="publication-place">
318 <xsl:value-of select="tmarc:sa" />
320 <pz:metadata type="publication-name">
321 <xsl:value-of select="tmarc:sb" />
323 <pz:metadata type="publication-date">
324 <xsl:value-of select="tmarc:sc" />
328 <xsl:for-each select="tmarc:d300">
329 <pz:metadata type="physical-extent">
330 <xsl:value-of select="tmarc:sa" />
332 <pz:metadata type="physical-format">
333 <xsl:value-of select="tmarc:sb" />
335 <pz:metadata type="physical-dimensions">
336 <xsl:value-of select="tmarc:sc" />
338 <pz:metadata type="physical-accomp">
339 <xsl:value-of select="tmarc:se" />
341 <pz:metadata type="physical-unittype">
342 <xsl:value-of select="tmarc:sf" />
344 <pz:metadata type="physical-unitsize">
345 <xsl:value-of select="tmarc:sg" />
347 <pz:metadata type="physical-specified">
348 <xsl:value-of select="tmarc:s3" />
352 <xsl:for-each select="tmarc:d440">
353 <pz:metadata type="series-title">
354 <xsl:value-of select="tmarc:sa" />
358 <xsl:for-each select="tmarc:d500">
359 <pz:metadata type="description">
360 <xsl:for-each select="node()">
361 <xsl:value-of select="text()" />
366 <xsl:for-each select="tmarc:d505">
367 <pz:metadata type="description">
368 <xsl:for-each select="node()">
369 <xsl:value-of select="text()" />
374 <xsl:for-each select="tmarc:d518">
375 <pz:metadata type="description">
376 <xsl:for-each select="node()">
377 <xsl:value-of select="text()" />
382 <xsl:for-each select="tmarc:d520">
383 <pz:metadata type="description">
384 <xsl:for-each select="node()">
385 <xsl:value-of select="text()" />
390 <xsl:for-each select="tmarc:d522">
391 <pz:metadata type="description">
392 <xsl:for-each select="node()">
393 <xsl:value-of select="text()" />
398 <xsl:for-each select="tmarc:d911">
399 <pz:metadata type="description">
400 <xsl:for-each select="node()">
401 <xsl:value-of select="text()" />
406 <xsl:for-each select="tmarc:d600">
407 <pz:metadata type="subject">
408 <xsl:value-of select="tmarc:sa" />
410 <pz:metadata type="subject-long">
411 <xsl:for-each select="node()/text()">
412 <xsl:if test="position() > 1">
413 <xsl:text>, </xsl:text>
415 <xsl:value-of select="." />
420 <xsl:for-each select="tmarc:d610">
421 <pz:metadata type="subject">
422 <xsl:value-of select="tmarc:sa" />
424 <pz:metadata type="subject-long">
425 <xsl:for-each select="node()/text()">
426 <xsl:if test="position() > 1">
427 <xsl:text>, </xsl:text>
429 <xsl:value-of select="." />
434 <xsl:for-each select="tmarc:d611">
435 <pz:metadata type="subject">
436 <xsl:value-of select="tmarc:sa" />
438 <pz:metadata type="subject-long">
439 <xsl:for-each select="node()/text()">
440 <xsl:if test="position() > 1">
441 <xsl:text>, </xsl:text>
443 <xsl:value-of select="." />
448 <xsl:for-each select="tmarc:d630">
449 <pz:metadata type="subject">
450 <xsl:value-of select="tmarc:sa" />
452 <pz:metadata type="subject-long">
453 <xsl:for-each select="node()/text()">
454 <xsl:if test="position() > 1">
455 <xsl:text>, </xsl:text>
457 <xsl:value-of select="." />
462 <xsl:for-each select="tmarc:d648">
463 <pz:metadata type="subject">
464 <xsl:value-of select="tmarc:sa" />
466 <pz:metadata type="subject-long">
467 <xsl:for-each select="node()/text()">
468 <xsl:if test="position() > 1">
469 <xsl:text>, </xsl:text>
471 <xsl:value-of select="." />
476 <xsl:for-each select="tmarc:d650">
477 <pz:metadata type="subject">
478 <xsl:value-of select="tmarc:sa" />
480 <pz:metadata type="subject-long">
481 <xsl:for-each select="node()/text()">
482 <xsl:if test="position() > 1">
483 <xsl:text>, </xsl:text>
485 <xsl:value-of select="." />
490 <xsl:for-each select="tmarc:d651">
491 <pz:metadata type="subject">
492 <xsl:value-of select="tmarc:sa" />
494 <pz:metadata type="subject-long">
495 <xsl:for-each select="node()/text()">
496 <xsl:if test="position() > 1">
497 <xsl:text>, </xsl:text>
499 <xsl:value-of select="." />
504 <xsl:for-each select="tmarc:d653">
505 <pz:metadata type="subject">
506 <xsl:value-of select="tmarc:sa" />
508 <pz:metadata type="subject-long">
509 <xsl:for-each select="node()/text()">
510 <xsl:if test="position() > 1">
511 <xsl:text>, </xsl:text>
513 <xsl:value-of select="." />
518 <xsl:for-each select="tmarc:d654">
519 <pz:metadata type="subject">
520 <xsl:value-of select="tmarc:sa" />
522 <pz:metadata type="subject-long">
523 <xsl:for-each select="node()/text()">
524 <xsl:if test="position() > 1">
525 <xsl:text>, </xsl:text>
527 <xsl:value-of select="." />
532 <xsl:for-each select="tmarc:d655">
533 <pz:metadata type="subject">
534 <xsl:value-of select="tmarc:sa" />
536 <pz:metadata type="subject-long">
537 <xsl:for-each select="node()/text()">
538 <xsl:if test="position() > 1">
539 <xsl:text>, </xsl:text>
541 <xsl:value-of select="." />
546 <xsl:for-each select="tmarc:d656">
547 <pz:metadata type="subject">
548 <xsl:value-of select="tmarc:sa" />
550 <pz:metadata type="subject-long">
551 <xsl:for-each select="node()/text()">
552 <xsl:if test="position() > 1">
553 <xsl:text>, </xsl:text>
555 <xsl:value-of select="." />
560 <xsl:for-each select="tmarc:d657">
561 <pz:metadata type="subject">
562 <xsl:value-of select="tmarc:sa" />
564 <pz:metadata type="subject-long">
565 <xsl:for-each select="node()/text()">
566 <xsl:if test="position() > 1">
567 <xsl:text>, </xsl:text>
569 <xsl:value-of select="." />
574 <xsl:for-each select="tmarc:d658">
575 <pz:metadata type="subject">
576 <xsl:value-of select="tmarc:sa" />
578 <pz:metadata type="subject-long">
579 <xsl:for-each select="node()/text()">
580 <xsl:if test="position() > 1">
581 <xsl:text>, </xsl:text>
583 <xsl:value-of select="." />
588 <xsl:for-each select="tmarc:d662">
589 <pz:metadata type="subject">
590 <xsl:value-of select="tmarc:sa" />
592 <pz:metadata type="subject-long">
593 <xsl:for-each select="node()/text()">
594 <xsl:if test="position() > 1">
595 <xsl:text>, </xsl:text>
597 <xsl:value-of select="." />
602 <xsl:for-each select="tmarc:d69X">
603 <pz:metadata type="subject">
604 <xsl:value-of select="tmarc:sa" />
606 <pz:metadata type="subject-long">
607 <xsl:for-each select="node()/text()">
608 <xsl:if test="position() > 1">
609 <xsl:text>, </xsl:text>
611 <xsl:value-of select="." />
616 <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656
617 or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
619 <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject">
620 <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long">
621 <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position()
622 > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each>
623 </pz:metadata> </xsl:for-each> -->
625 <xsl:for-each select="tmarc:d856">
626 <pz:metadata type="electronic-url">
627 <xsl:value-of select="tmarc:su" />
629 <pz:metadata type="electronic-text">
631 <xsl:when test="tmarc:sy">
632 <xsl:value-of select="tmarc:sy/text()" />
634 <xsl:when test="tmarc:s3">
635 <xsl:value-of select="tmarc:s3/text()" />
637 <xsl:otherwise>Get resource</xsl:otherwise>
640 <pz:metadata type="electronic-note">
641 <xsl:value-of select="tmarc:sz" />
643 <pz:metadata type="electronic-format-instruction">
644 <xsl:value-of select="tmarc:si" />
646 <pz:metadata type="electronic-format-type">
647 <xsl:value-of select="tmarc:sq" />
651 <xsl:for-each select="tmarc:d773">
652 <pz:metadata type="citation">
653 <xsl:for-each select="*">
654 <xsl:value-of select="normalize-space(.)" />
655 <xsl:text> </xsl:text>
658 <xsl:if test="tmarc:st">
659 <pz:metadata type="journal-title">
660 <xsl:value-of select="tmarc:st"/>
663 <xsl:if test="tmarc:sg">
664 <pz:metadata type="journal-subpart">
665 <xsl:value-of select="tmarc:sg"/>
668 <xsl:if test="tmarc:sp">
669 <pz:metadata type="journal-title-abbrev">
670 <xsl:value-of select="tmarc:sp"/>
675 <xsl:for-each select="tmarc:d852">
676 <xsl:if test="tmarc:sy">
677 <pz:metadata type="publicnote">
678 <xsl:value-of select="tmarc:sy" />
681 <xsl:if test="tmarc:sh">
682 <pz:metadata type="callnumber">
683 <xsl:value-of select="tmarc:sh" />
688 <xsl:for-each select="tmarc:d876">
689 <xsl:if test="tmarc:sf">
690 <pz:metadata type="loan-period">
691 <xsl:value-of select="tmarc:sf" />
696 <pz:metadata type="medium">
697 <xsl:value-of select="$vmedium" />
698 <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
699 <xsl:text> (electronic)</xsl:text>
703 <xsl:for-each select="tmarc:d900/tmarc:sa">
704 <pz:metadata type="fulltext">
705 <xsl:value-of select="." />
709 <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of
710 select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
712 <xsl:for-each select="tmarc:d900/tmarc:sb">
713 <pz:metadata type="fulltext">
714 <xsl:value-of select="." />
718 <xsl:for-each select="tmarc:d900/tmarc:se">
719 <pz:metadata type="fulltext">
720 <xsl:value-of select="." />
724 <xsl:for-each select="tmarc:d900/tmarc:sf">
725 <pz:metadata type="fulltext">
726 <xsl:value-of select="." />
730 <xsl:for-each select="tmarc:d900/tmarc:si">
731 <pz:metadata type="fulltext">
732 <xsl:value-of select="." />
736 <xsl:for-each select="tmarc:d900/tmarc:sk">
737 <pz:metadata type="fulltext">
738 <xsl:value-of select="." />
742 <xsl:for-each select="tmarc:d900/tmarc:sq">
743 <pz:metadata type="fulltext">
744 <xsl:value-of select="." />
748 <xsl:for-each select="tmarc:d900/tmarc:ss">
749 <pz:metadata type="fulltext">
750 <xsl:value-of select="." />
754 <xsl:for-each select="tmarc:d900/tmarc:su">
755 <pz:metadata type="fulltext">
756 <xsl:value-of select="." />
760 <xsl:for-each select="tmarc:d900/tmarc:sy">
761 <pz:metadata type="fulltext">
762 <xsl:value-of select="." />
767 <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of
768 select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
770 <pz:metadata type="has-fulltext">
771 <xsl:value-of select="$has_fulltext"/>
774 <xsl:for-each select="tmarc:d907 or tmarc:d901">
775 <pz:metadata type="iii-id">
776 <xsl:value-of select="tmarc:sa" />
780 <xsl:for-each select="tmarc:d926">
781 <pz:metadata type="locallocation">
782 <xsl:choose><xsl:when test="tmarc:sa">
783 <xsl:value-of select="tmarc:sa"/>
784 </xsl:when><xsl:otherwise>
785 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
786 </xsl:otherwise></xsl:choose>
788 <pz:metadata type="callnumber">
789 <xsl:choose><xsl:when test="tmarc:sc">
790 <xsl:value-of select="tmarc:sc"/>
791 </xsl:when><xsl:otherwise>
792 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
793 </xsl:otherwise></xsl:choose>
795 <pz:metadata type="available">
796 <xsl:choose><xsl:when test="tmarc:se">
797 <xsl:value-of select="tmarc:se"/>
798 </xsl:when><xsl:otherwise>
799 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
800 </xsl:otherwise></xsl:choose>
804 <!-- OhioLINK holdings -->
805 <xsl:for-each select="tmarc:d945">
806 <pz:metadata type="locallocation">
808 <xsl:when test="tmarc:sa">
809 <xsl:value-of select="tmarc:sa"/>
811 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
814 <pz:metadata type="callnumber">
816 <xsl:when test="tmarc:sb">
817 <xsl:value-of select="tmarc:sb"/>
819 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
822 <pz:metadata type="publicnote">
824 <xsl:when test="tmarc:sc">
825 <xsl:value-of select="tmarc:sc"/>
827 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
830 <pz:metadata type="available">
832 <xsl:when test="tmarc:ss = 'N'">Available</xsl:when>
833 <xsl:when test="tmarc:ss != 'N'">
835 <xsl:when test="tmarc:sd">
836 <xsl:value-of select="tmarc:sd"/>
838 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
841 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
846 <xsl:for-each select="tmarc:d948">
847 <pz:metadata type="holding">
848 <xsl:for-each select="tmarc:s">
849 <xsl:if test="position() > 1">
850 <xsl:text> </xsl:text>
852 <xsl:value-of select="." />
857 <xsl:for-each select="tmarc:d991">
858 <pz:metadata type="holding">
859 <xsl:for-each select="tmarc:s">
860 <xsl:if test="position() > 1">
861 <xsl:text> </xsl:text>
863 <xsl:value-of select="." />
868 <xsl:for-each select="tmarc:d999">
869 <pz:metadata type="localid">
871 <xsl:when test="tmarc:sa">
872 <xsl:value-of select="tmarc:sa"/>
874 <xsl:when test="tmarc:sc">
875 <xsl:value-of select="tmarc:sc"/>
878 <xsl:value-of select="tmarc:sd"/>
885 <!-- passthrough id data -->
886 <xsl:for-each select="pz:metadata">
887 <xsl:copy-of select="." />
890 <!-- other stylesheets importing this might want to define this -->
891 <xsl:call-template name="record-hook" />
896 <xsl:template match="text()" />
898 <!-- TODO Does not work anymore -->
899 <xsl:template name="shortTitle">
900 <xsl:param name="tag" />
901 <xsl:for-each select="tmarc:d">
902 <xsl:value-of select="tmarc:sa" />
903 <xsl:value-of select="tmarc:sm" />
904 <xsl:value-of select="tmarc:sn" />
905 <xsl:value-of select="tmarc:sp" />
906 <xsl:value-of select="tmarc:sr" />
910 <!-- No working as expected -->
911 <xsl:template name="description">
912 <xsl:param name="element" />
913 <xsl:for-each select="$element">
914 <pz:metadata type="description">
915 <xsl:for-each select="node()">
916 <xsl:value-of select="text()" />
920 <xsl:apply-templates />
923 <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description">
924 <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each>
925 </pz:metadata> </xsl:for-each> -->
929 <xsl:template name="subject">
930 <xsl:param name="element" />
931 <xsl:for-each select="$element">
932 <pz:metadata type="subject">
933 <xsl:value-of select="tmarc:sa" />
935 <pz:metadata type="subject-long">
936 <xsl:for-each select="node()/text()">
937 <xsl:if test="position() > 1">
938 <xsl:text>, </xsl:text>
940 <xsl:value-of select="." />