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:variable name='value'>
416 <xsl:value-of select='normalize-space(.)'/>
419 <xsl:when test="substring($value,string-length($value)) = ','">
420 <xsl:value-of select="substring($value,0,string-length($value)-1)"/>
423 <xsl:value-of select="$value"/>
430 <xsl:for-each select="tmarc:d610">
431 <pz:metadata type="subject">
432 <xsl:value-of select="tmarc:sa" />
434 <pz:metadata type="subject-long">
435 <xsl:for-each select="node()/text()">
436 <xsl:if test="position() > 1">
437 <xsl:text>, </xsl:text>
439 <xsl:value-of select="." />
444 <xsl:for-each select="tmarc:d611">
445 <pz:metadata type="subject">
446 <xsl:value-of select="tmarc:sa" />
448 <pz:metadata type="subject-long">
449 <xsl:for-each select="node()/text()">
450 <xsl:if test="position() > 1">
451 <xsl:text>, </xsl:text>
453 <xsl:value-of select="." />
458 <xsl:for-each select="tmarc:d630">
459 <pz:metadata type="subject">
460 <xsl:value-of select="tmarc:sa" />
462 <pz:metadata type="subject-long">
463 <xsl:for-each select="node()/text()">
464 <xsl:if test="position() > 1">
465 <xsl:text>, </xsl:text>
467 <xsl:value-of select="." />
472 <xsl:for-each select="tmarc:d648">
473 <pz:metadata type="subject">
474 <xsl:value-of select="tmarc:sa" />
476 <pz:metadata type="subject-long">
477 <xsl:for-each select="node()/text()">
478 <xsl:if test="position() > 1">
479 <xsl:text>, </xsl:text>
481 <xsl:value-of select="." />
486 <xsl:for-each select="tmarc:d650">
487 <pz:metadata type="subject">
488 <xsl:value-of select="tmarc:sa" />
490 <pz:metadata type="subject-long">
491 <xsl:for-each select="node()/text()">
492 <xsl:if test="position() > 1">
493 <xsl:text>, </xsl:text>
495 <xsl:value-of select="." />
500 <xsl:for-each select="tmarc:d651">
501 <pz:metadata type="subject">
502 <xsl:value-of select="tmarc:sa" />
504 <pz:metadata type="subject-long">
505 <xsl:for-each select="node()/text()">
506 <xsl:if test="position() > 1">
507 <xsl:text>, </xsl:text>
509 <xsl:value-of select="." />
514 <xsl:for-each select="tmarc:d653">
515 <pz:metadata type="subject">
516 <xsl:value-of select="tmarc:sa" />
518 <pz:metadata type="subject-long">
519 <xsl:for-each select="node()/text()">
520 <xsl:if test="position() > 1">
521 <xsl:text>, </xsl:text>
523 <xsl:value-of select="." />
528 <xsl:for-each select="tmarc:d654">
529 <pz:metadata type="subject">
530 <xsl:value-of select="tmarc:sa" />
532 <pz:metadata type="subject-long">
533 <xsl:for-each select="node()/text()">
534 <xsl:if test="position() > 1">
535 <xsl:text>, </xsl:text>
537 <xsl:value-of select="." />
542 <xsl:for-each select="tmarc:d655">
543 <pz:metadata type="subject">
544 <xsl:value-of select="tmarc:sa" />
546 <pz:metadata type="subject-long">
547 <xsl:for-each select="node()/text()">
548 <xsl:if test="position() > 1">
549 <xsl:text>, </xsl:text>
551 <xsl:value-of select="." />
556 <xsl:for-each select="tmarc:d656">
557 <pz:metadata type="subject">
558 <xsl:value-of select="tmarc:sa" />
560 <pz:metadata type="subject-long">
561 <xsl:for-each select="node()/text()">
562 <xsl:if test="position() > 1">
563 <xsl:text>, </xsl:text>
565 <xsl:value-of select="." />
570 <xsl:for-each select="tmarc:d657">
571 <pz:metadata type="subject">
572 <xsl:value-of select="tmarc:sa" />
574 <pz:metadata type="subject-long">
575 <xsl:for-each select="node()/text()">
576 <xsl:if test="position() > 1">
577 <xsl:text>, </xsl:text>
579 <xsl:value-of select="." />
584 <xsl:for-each select="tmarc:d658">
585 <pz:metadata type="subject">
586 <xsl:value-of select="tmarc:sa" />
588 <pz:metadata type="subject-long">
589 <xsl:for-each select="node()/text()">
590 <xsl:if test="position() > 1">
591 <xsl:text>, </xsl:text>
593 <xsl:value-of select="." />
598 <xsl:for-each select="tmarc:d662">
599 <pz:metadata type="subject">
600 <xsl:value-of select="tmarc:sa" />
602 <pz:metadata type="subject-long">
603 <xsl:for-each select="node()/text()">
604 <xsl:if test="position() > 1">
605 <xsl:text>, </xsl:text>
607 <xsl:value-of select="." />
612 <xsl:for-each select="tmarc:d69X">
613 <pz:metadata type="subject">
614 <xsl:value-of select="tmarc:sa" />
616 <pz:metadata type="subject-long">
617 <xsl:for-each select="node()/text()">
618 <xsl:if test="position() > 1">
619 <xsl:text>, </xsl:text>
621 <xsl:value-of select="." />
626 <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656
627 or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
629 <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject">
630 <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long">
631 <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position()
632 > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each>
633 </pz:metadata> </xsl:for-each> -->
635 <xsl:for-each select="tmarc:d856">
636 <pz:metadata type="electronic-url">
637 <xsl:value-of select="tmarc:su" />
639 <pz:metadata type="electronic-text">
641 <xsl:when test="tmarc:sy">
642 <xsl:value-of select="tmarc:sy/text()" />
644 <xsl:when test="tmarc:s3">
645 <xsl:value-of select="tmarc:s3/text()" />
647 <xsl:otherwise>Get resource</xsl:otherwise>
650 <pz:metadata type="electronic-note">
651 <xsl:value-of select="tmarc:sz" />
653 <pz:metadata type="electronic-format-instruction">
654 <xsl:value-of select="tmarc:si" />
656 <pz:metadata type="electronic-format-type">
657 <xsl:value-of select="tmarc:sq" />
661 <xsl:for-each select="tmarc:d773">
662 <pz:metadata type="citation">
663 <xsl:for-each select="*">
664 <xsl:value-of select="normalize-space(.)" />
665 <xsl:text> </xsl:text>
668 <xsl:if test="tmarc:st">
669 <pz:metadata type="journal-title">
670 <xsl:value-of select="tmarc:st"/>
673 <xsl:if test="tmarc:sg">
674 <xsl:variable name="value">
675 <xsl:for-each select="tmarc:sg">
676 <xsl:value-of select="."/>
679 <pz:metadata type="journal-subpart">
680 <xsl:value-of select="$value"/>
682 <xsl:variable name="l">
683 <xsl:value-of select="translate($value,
684 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.',
685 'abcdefghijklmnopqrstuvwxyz ') "/>
687 <xsl:variable name="volume">
689 <xsl:when test="string-length(substring-after($l,'vol ')) > 0">
690 <xsl:value-of select="substring-before(normalize-space(substring-after($l,'vol ')),' ')"/>
692 <xsl:when test="string-length(substring-after($l,'v ')) > 0">
693 <xsl:value-of select="substring-before(normalize-space(substring-after($l,'v ')),' ')"/>
697 <xsl:variable name="issue">
698 <xsl:value-of select="substring-before(translate(normalize-space(substring-after($l,'issue')), ',', ' '),' ')"/>
700 <xsl:variable name="pages">
702 <xsl:when test="string-length(substring-after($l,' p ')) > 0">
703 <xsl:value-of select="normalize-space(substring-after($l,' p '))"/>
705 <xsl:when test="string-length(substring-after($l,',p')) > 0">
706 <xsl:value-of select="normalize-space(substring-after($l,',p'))"/>
708 <xsl:when test="string-length(substring-after($l,' p')) > 0">
709 <xsl:value-of select="normalize-space(substring-after($l,' p'))"/>
715 <xsl:if test="string-length($volume) > 0">
716 <pz:metadata type="volume-number">
717 <xsl:value-of select="$volume"/>
721 <xsl:if test="string-length($issue) > 0">
722 <pz:metadata type="issue-number">
723 <xsl:value-of select="$issue"/>
727 <xsl:if test="string-length($pages) > 0">
728 <pz:metadata type="pages-number">
729 <xsl:value-of select="$pages"/>
735 <xsl:if test="tmarc:sp">
736 <pz:metadata type="journal-title-abbrev">
737 <xsl:value-of select="tmarc:sp"/>
742 <xsl:for-each select="tmarc:d852">
743 <xsl:if test="tmarc:sy">
744 <pz:metadata type="publicnote">
745 <xsl:value-of select="tmarc:sy" />
748 <xsl:if test="tmarc:sh">
749 <pz:metadata type="callnumber">
750 <xsl:value-of select="tmarc:sh" />
755 <xsl:for-each select="tmarc:d876">
756 <xsl:if test="tmarc:sf">
757 <pz:metadata type="loan-period">
758 <xsl:value-of select="concat(tmarc:s5,':',tmarc:sf)" />
763 <pz:metadata type="medium">
764 <xsl:value-of select="$vmedium" />
765 <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
766 <xsl:text> (electronic)</xsl:text>
770 <xsl:for-each select="tmarc:d900/tmarc:sa">
771 <pz:metadata type="fulltext">
772 <xsl:value-of select="." />
776 <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of
777 select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
779 <xsl:for-each select="tmarc:d900/tmarc:sb">
780 <pz:metadata type="fulltext">
781 <xsl:value-of select="." />
785 <xsl:for-each select="tmarc:d900/tmarc:se">
786 <pz:metadata type="fulltext">
787 <xsl:value-of select="." />
791 <xsl:for-each select="tmarc:d900/tmarc:sf">
792 <pz:metadata type="fulltext">
793 <xsl:value-of select="." />
797 <xsl:for-each select="tmarc:d900/tmarc:si">
798 <pz:metadata type="fulltext">
799 <xsl:value-of select="." />
803 <xsl:for-each select="tmarc:d900/tmarc:sk">
804 <pz:metadata type="fulltext">
805 <xsl:value-of select="." />
809 <xsl:for-each select="tmarc:d900/tmarc:sq">
810 <pz:metadata type="fulltext">
811 <xsl:value-of select="." />
815 <xsl:for-each select="tmarc:d900/tmarc:ss">
816 <pz:metadata type="fulltext">
817 <xsl:value-of select="." />
821 <xsl:for-each select="tmarc:d900/tmarc:su">
822 <pz:metadata type="fulltext">
823 <xsl:value-of select="." />
827 <xsl:for-each select="tmarc:d900/tmarc:sy">
828 <pz:metadata type="fulltext">
829 <xsl:value-of select="." />
834 <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of
835 select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
837 <pz:metadata type="has-fulltext">
838 <xsl:value-of select="$has_fulltext"/>
841 <xsl:for-each select="tmarc:d907 | tmarc:d901">
842 <pz:metadata type="iii-id">
843 <xsl:value-of select="tmarc:sa" />
847 <xsl:for-each select="tmarc:d926">
848 <pz:metadata type="locallocation">
849 <xsl:choose><xsl:when test="tmarc:sa">
850 <xsl:value-of select="tmarc:sa"/>
851 </xsl:when><xsl:otherwise>
852 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
853 </xsl:otherwise></xsl:choose>
855 <pz:metadata type="callnumber">
856 <xsl:choose><xsl:when test="tmarc:sc">
857 <xsl:value-of select="tmarc:sc"/>
858 </xsl:when><xsl:otherwise>
859 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
860 </xsl:otherwise></xsl:choose>
862 <pz:metadata type="available">
863 <xsl:choose><xsl:when test="tmarc:se">
864 <xsl:value-of select="tmarc:se"/>
865 </xsl:when><xsl:otherwise>
866 <xsl:text>PAZPAR2_NULL_VALUE</xsl:text>
867 </xsl:otherwise></xsl:choose>
871 <!-- OhioLINK holdings -->
872 <xsl:for-each select="tmarc:d945">
873 <pz:metadata type="locallocation">
875 <xsl:when test="tmarc:sa">
876 <xsl:value-of select="tmarc:sa"/>
878 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
881 <pz:metadata type="callnumber">
883 <xsl:when test="tmarc:sb">
884 <xsl:value-of select="tmarc:sb"/>
886 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
889 <pz:metadata type="publicnote">
891 <xsl:when test="tmarc:sc">
892 <xsl:value-of select="tmarc:sc"/>
894 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
897 <pz:metadata type="available">
899 <xsl:when test="tmarc:ss = 'N'">Available</xsl:when>
900 <xsl:when test="tmarc:ss != 'N'">
902 <xsl:when test="tmarc:sd">
903 <xsl:value-of select="tmarc:sd"/>
905 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
908 <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
913 <xsl:for-each select="tmarc:d948">
914 <pz:metadata type="holding">
915 <xsl:for-each select="tmarc:s">
916 <xsl:if test="position() > 1">
917 <xsl:text> </xsl:text>
919 <xsl:value-of select="." />
924 <xsl:for-each select="tmarc:d991">
925 <pz:metadata type="holding">
926 <xsl:for-each select="tmarc:s">
927 <xsl:if test="position() > 1">
928 <xsl:text> </xsl:text>
930 <xsl:value-of select="." />
935 <xsl:for-each select="tmarc:d999">
936 <pz:metadata type="localid">
938 <xsl:when test="tmarc:sa">
939 <xsl:value-of select="tmarc:sa"/>
941 <xsl:when test="tmarc:sc">
942 <xsl:value-of select="tmarc:sc"/>
945 <xsl:value-of select="tmarc:sd"/>
952 <!-- passthrough id data -->
953 <xsl:for-each select="pz:metadata">
954 <xsl:copy-of select="." />
957 <!-- other stylesheets importing this might want to define this -->
958 <xsl:call-template name="record-hook" />
963 <xsl:template match="text()" />