3 update config.xml_transform set xslt = $XXXX$<?xml version="1.0" encoding="UTF-8"?>
4 <xsl:stylesheet xmlns="http://www.loc.gov/mods/v3" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xlink marc" version="1.0">
5 <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
7 Revision 1.14 - Fixed template isValid and fields 010, 020, 022, 024, 028, and 037 to output additional identifier elements
8 with corresponding @type and @invalid eq 'yes' when subfields z or y (in the case of 022) exist in the MARCXML ::: 2007/01/04 17:35:20 cred
10 Revision 1.13 - Changed order of output under cartographics to reflect schema 2006/11/28 tmee
12 Revision 1.12 - Updated to reflect MODS 3.2 Mapping 2006/10/11 tmee
14 Revision 1.11 - The attribute objectPart moved from <languageTerm> to <language>
17 Revision 1.10 MODS 3.1 revisions to language and classification elements
18 (plus ability to find marc:collection embedded in wrapper elements such as SRU zs: wrappers)
21 Revision 1.9 subfield $y was added to field 242 2004/09/02 10:57 jrad
23 Revision 1.8 Subject chopPunctuation expanded and attribute fixes 2004/08/12 jrad
25 Revision 1.7 2004/03/25 08:29 jrad
27 Revision 1.6 various validation fixes 2004/02/20 ntra
29 Revision 1.5 2003/10/02 16:18:58 ntra
30 MODS2 to MODS3 updates, language unstacking and
31 de-duping, chopPunctuation expanded
33 Revision 1.3 2003/04/03 00:07:19 ntra
34 Revision 1.3 Additional Changes not related to MODS Version 2.0 by ntra
36 Revision 1.2 2003/03/24 19:37:42 ckeith
40 <xsl:template match="/">
42 <xsl:when test="//marc:collection">
43 <modsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
44 <xsl:for-each select="//marc:collection/marc:record">
46 <xsl:call-template name="marcRecord"/>
52 <mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
53 <xsl:for-each select="//marc:record">
54 <xsl:call-template name="marcRecord"/>
60 <xsl:template name="marcRecord">
61 <xsl:variable name="leader" select="marc:leader"/>
62 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
63 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
64 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
65 <xsl:variable name="typeOf008">
67 <xsl:when test="$leader6='a'">
69 <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
70 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">SE</xsl:when>
73 <xsl:when test="$leader6='t'">BK</xsl:when>
74 <xsl:when test="$leader6='p'">MM</xsl:when>
75 <xsl:when test="$leader6='m'">CF</xsl:when>
76 <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
77 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'">VM</xsl:when>
78 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">MU</xsl:when>
81 <xsl:for-each select="marc:datafield[@tag='245']">
83 <xsl:variable name="title">
85 <xsl:when test="marc:subfield[@code='b']">
86 <xsl:call-template name="specialSubfieldSelect">
87 <xsl:with-param name="axis">b</xsl:with-param>
88 <xsl:with-param name="beforeCodes">afgk</xsl:with-param>
92 <xsl:call-template name="subfieldSelect">
93 <xsl:with-param name="codes">abfgk</xsl:with-param>
98 <xsl:variable name="titleChop">
99 <xsl:call-template name="chopPunctuation">
100 <xsl:with-param name="chopString">
101 <xsl:value-of select="$title"/>
103 <xsl:with-param name="punctuation">
104 <xsl:text>,;/ </xsl:text>
109 <xsl:when test="@ind2>0">
111 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
114 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
119 <xsl:value-of select="$titleChop"/>
123 <xsl:if test="marc:subfield[@code='b']">
125 <xsl:call-template name="chopPunctuation">
126 <xsl:with-param name="chopString">
127 <xsl:call-template name="specialSubfieldSelect">
128 <xsl:with-param name="axis">b</xsl:with-param>
129 <xsl:with-param name="anyCodes">b</xsl:with-param>
130 <xsl:with-param name="afterCodes">afgk</xsl:with-param>
136 <xsl:call-template name="part"></xsl:call-template>
138 <!-- A form of title that ignores non-filing characters; useful
139 for not converting "L'Oreal" into "L' Oreal" at index time -->
142 <xsl:call-template name="chopPunctuation">
143 <xsl:with-param name="chopString">
144 <xsl:call-template name="subfieldSelect">
145 <xsl:with-param name="codes">abfgk</xsl:with-param>
150 <xsl:call-template name="part"></xsl:call-template>
152 <!-- hybrid of titleInfo and titleNonfiling which will give us a preformatted string (for punctuation)
153 but also keep the nonSort stuff in a separate field (for sorting) -->
155 <xsl:variable name="titleBrowseChop">
156 <xsl:call-template name="chopPunctuation">
157 <xsl:with-param name="chopString">
158 <xsl:call-template name="subfieldSelect">
159 <xsl:with-param name="codes">abfgk</xsl:with-param>
165 <xsl:when test="@ind2>0">
167 <xsl:value-of select="substring($titleBrowseChop,1,@ind2)"/>
170 <xsl:value-of select="substring($titleBrowseChop,@ind2+1)"/>
175 <xsl:value-of select="$titleBrowseChop"/>
179 <xsl:call-template name="part"></xsl:call-template>
182 <xsl:for-each select="marc:datafield[@tag='210']">
183 <titleInfo type="abbreviated">
185 <xsl:call-template name="chopPunctuation">
186 <xsl:with-param name="chopString">
187 <xsl:call-template name="subfieldSelect">
188 <xsl:with-param name="codes">a</xsl:with-param>
193 <xsl:call-template name="subtitle"/>
196 <xsl:for-each select="marc:datafield[@tag='242']">
197 <xsl:variable name="titleChop">
198 <xsl:call-template name="chopPunctuation">
199 <xsl:with-param name="chopString">
200 <xsl:call-template name="subfieldSelect">
201 <!-- 1/04 removed $h, b -->
202 <xsl:with-param name="codes">a</xsl:with-param>
207 <titleInfo type="translated">
208 <!--09/01/04 Added subfield $y-->
209 <xsl:for-each select="marc:subfield[@code='y']">
210 <xsl:attribute name="lang">
211 <xsl:value-of select="text()"/>
215 <xsl:value-of select="$titleChop" />
218 <xsl:call-template name="subtitle"/>
219 <xsl:call-template name="part"/>
221 <titleInfo type="translated-nfi">
222 <xsl:for-each select="marc:subfield[@code='y']">
223 <xsl:attribute name="lang">
224 <xsl:value-of select="text()"/>
228 <xsl:when test="@ind2>0">
230 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
233 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
238 <xsl:value-of select="$titleChop" />
242 <xsl:call-template name="subtitle"/>
243 <xsl:call-template name="part"/>
246 <xsl:for-each select="marc:datafield[@tag='246']">
247 <titleInfo type="alternative">
248 <xsl:for-each select="marc:subfield[@code='i']">
249 <xsl:attribute name="displayLabel">
250 <xsl:value-of select="text()"/>
254 <xsl:call-template name="chopPunctuation">
255 <xsl:with-param name="chopString">
256 <xsl:call-template name="subfieldSelect">
257 <!-- 1/04 removed $h, $b -->
258 <xsl:with-param name="codes">af</xsl:with-param>
263 <xsl:call-template name="subtitle"/>
264 <xsl:call-template name="part"/>
267 <xsl:for-each select="marc:datafield[@tag='130']|marc:datafield[@tag='240']|marc:datafield[@tag='730'][@ind2!='2']">
268 <xsl:variable name="nfi">
270 <xsl:when test="@tag='240'">
271 <xsl:value-of select="@ind2"/>
274 <xsl:value-of select="@ind1"/>
278 <xsl:variable name="titleChop">
279 <xsl:call-template name="uri" />
280 <xsl:variable name="str">
281 <xsl:for-each select="marc:subfield">
282 <xsl:if test="(contains('adfklmor',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
283 <xsl:value-of select="text()"/>
284 <xsl:text> </xsl:text>
288 <xsl:call-template name="chopPunctuation">
289 <xsl:with-param name="chopString">
290 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
294 <titleInfo type="uniform">
296 <xsl:value-of select="$titleChop"/>
298 <xsl:call-template name="part"/>
300 <titleInfo type="uniform-nfi">
302 <xsl:when test="$nfi>0">
304 <xsl:value-of select="substring($titleChop,1,$nfi)"/>
307 <xsl:value-of select="substring($titleChop,$nfi+1)"/>
312 <xsl:value-of select="$titleChop"/>
316 <xsl:call-template name="part"/>
319 <xsl:for-each select="marc:datafield[@tag='740'][@ind2!='2']">
320 <xsl:variable name="titleChop">
321 <xsl:call-template name="chopPunctuation">
322 <xsl:with-param name="chopString">
323 <xsl:call-template name="subfieldSelect">
324 <xsl:with-param name="codes">ah</xsl:with-param>
329 <titleInfo type="alternative">
331 <xsl:value-of select="$titleChop" />
333 <xsl:call-template name="part"/>
335 <titleInfo type="alternative-nfi">
337 <xsl:when test="@ind1>0">
339 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
342 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
347 <xsl:value-of select="$titleChop" />
351 <xsl:call-template name="part"/>
354 <xsl:for-each select="marc:datafield[@tag='100']">
355 <name type="personal">
356 <xsl:call-template name="uri" />
357 <xsl:call-template name="nameABCDQ"/>
358 <xsl:call-template name="affiliation"/>
360 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
362 <xsl:call-template name="role"/>
365 <xsl:for-each select="marc:datafield[@tag='110']">
366 <name type="corporate">
367 <xsl:call-template name="uri" />
368 <xsl:call-template name="nameABCDN"/>
370 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
372 <xsl:call-template name="role"/>
375 <xsl:for-each select="marc:datafield[@tag='111']">
376 <name type="conference">
377 <xsl:call-template name="uri" />
378 <xsl:call-template name="nameACDEQ"/>
380 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
382 <xsl:call-template name="role"/>
385 <xsl:for-each select="marc:datafield[@tag='700'][not(marc:subfield[@code='t'])]">
386 <name type="personal">
387 <xsl:call-template name="uri" />
388 <xsl:call-template name="nameABCDQ"/>
389 <xsl:call-template name="affiliation"/>
390 <xsl:call-template name="role"/>
393 <xsl:for-each select="marc:datafield[@tag='710'][not(marc:subfield[@code='t'])]">
394 <name type="corporate">
395 <xsl:call-template name="uri" />
396 <xsl:call-template name="nameABCDN"/>
397 <xsl:call-template name="role"/>
400 <xsl:for-each select="marc:datafield[@tag='711'][not(marc:subfield[@code='t'])]">
401 <name type="conference">
402 <xsl:call-template name="uri" />
403 <xsl:call-template name="nameACDEQ"/>
404 <xsl:call-template name="role"/>
407 <xsl:for-each select="marc:datafield[@tag='720'][not(marc:subfield[@code='t'])]">
409 <xsl:if test="@ind1=1">
410 <xsl:attribute name="type">
411 <xsl:text>personal</xsl:text>
415 <xsl:value-of select="marc:subfield[@code='a']"/>
417 <xsl:call-template name="role"/>
421 <xsl:if test="$leader7='c'">
422 <xsl:attribute name="collection">yes</xsl:attribute>
424 <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
425 <xsl:attribute name="manuscript">yes</xsl:attribute>
428 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
429 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
430 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
431 <xsl:when test="$leader6='i'">sound recording-nonmusical</xsl:when>
432 <xsl:when test="$leader6='j'">sound recording-musical</xsl:when>
433 <xsl:when test="$leader6='k'">still image</xsl:when>
434 <xsl:when test="$leader6='g'">moving image</xsl:when>
435 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
436 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
437 <xsl:when test="$leader6='p'">mixed material</xsl:when>
440 <xsl:if test="substring($controlField008,26,1)='d'">
441 <genre authority="marc">globe</genre>
443 <xsl:if test="marc:controlfield[@tag='007'][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
444 <genre authority="marc">remote sensing image</genre>
446 <xsl:if test="$typeOf008='MP'">
447 <xsl:variable name="controlField008-25" select="substring($controlField008,26,1)"></xsl:variable>
449 <xsl:when test="$controlField008-25='a' or $controlField008-25='b' or $controlField008-25='c' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
450 <genre authority="marc">map</genre>
452 <xsl:when test="$controlField008-25='e' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
453 <genre authority="marc">atlas</genre>
457 <xsl:if test="$typeOf008='SE'">
458 <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"></xsl:variable>
460 <xsl:when test="$controlField008-21='d'">
461 <genre authority="marc">database</genre>
463 <xsl:when test="$controlField008-21='l'">
464 <genre authority="marc">loose-leaf</genre>
466 <xsl:when test="$controlField008-21='m'">
467 <genre authority="marc">series</genre>
469 <xsl:when test="$controlField008-21='n'">
470 <genre authority="marc">newspaper</genre>
472 <xsl:when test="$controlField008-21='p'">
473 <genre authority="marc">periodical</genre>
475 <xsl:when test="$controlField008-21='w'">
476 <genre authority="marc">web site</genre>
480 <xsl:if test="$typeOf008='BK' or $typeOf008='SE'">
481 <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"></xsl:variable>
483 <xsl:when test="contains($controlField008-24,'a')">
484 <genre authority="marc">abstract or summary</genre>
486 <xsl:when test="contains($controlField008-24,'b')">
487 <genre authority="marc">bibliography</genre>
489 <xsl:when test="contains($controlField008-24,'c')">
490 <genre authority="marc">catalog</genre>
492 <xsl:when test="contains($controlField008-24,'d')">
493 <genre authority="marc">dictionary</genre>
495 <xsl:when test="contains($controlField008-24,'e')">
496 <genre authority="marc">encyclopedia</genre>
498 <xsl:when test="contains($controlField008-24,'f')">
499 <genre authority="marc">handbook</genre>
501 <xsl:when test="contains($controlField008-24,'g')">
502 <genre authority="marc">legal article</genre>
504 <xsl:when test="contains($controlField008-24,'i')">
505 <genre authority="marc">index</genre>
507 <xsl:when test="contains($controlField008-24,'k')">
508 <genre authority="marc">discography</genre>
510 <xsl:when test="contains($controlField008-24,'l')">
511 <genre authority="marc">legislation</genre>
513 <xsl:when test="contains($controlField008-24,'m')">
514 <genre authority="marc">theses</genre>
516 <xsl:when test="contains($controlField008-24,'n')">
517 <genre authority="marc">survey of literature</genre>
519 <xsl:when test="contains($controlField008-24,'o')">
520 <genre authority="marc">review</genre>
522 <xsl:when test="contains($controlField008-24,'p')">
523 <genre authority="marc">programmed text</genre>
525 <xsl:when test="contains($controlField008-24,'q')">
526 <genre authority="marc">filmography</genre>
528 <xsl:when test="contains($controlField008-24,'r')">
529 <genre authority="marc">directory</genre>
531 <xsl:when test="contains($controlField008-24,'s')">
532 <genre authority="marc">statistics</genre>
534 <xsl:when test="contains($controlField008-24,'t')">
535 <genre authority="marc">technical report</genre>
537 <xsl:when test="contains($controlField008-24,'v')">
538 <genre authority="marc">legal case and case notes</genre>
540 <xsl:when test="contains($controlField008-24,'w')">
541 <genre authority="marc">law report or digest</genre>
543 <xsl:when test="contains($controlField008-24,'z')">
544 <genre authority="marc">treaty</genre>
547 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"></xsl:variable>
549 <xsl:when test="$controlField008-29='1'">
550 <genre authority="marc">conference publication</genre>
554 <xsl:if test="$typeOf008='CF'">
555 <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"></xsl:variable>
557 <xsl:when test="$controlField008-26='a'">
558 <genre authority="marc">numeric data</genre>
560 <xsl:when test="$controlField008-26='e'">
561 <genre authority="marc">database</genre>
563 <xsl:when test="$controlField008-26='f'">
564 <genre authority="marc">font</genre>
566 <xsl:when test="$controlField008-26='g'">
567 <genre authority="marc">game</genre>
571 <xsl:if test="$typeOf008='BK'">
572 <xsl:if test="substring($controlField008,25,1)='j'">
573 <genre authority="marc">patent</genre>
575 <xsl:if test="substring($controlField008,31,1)='1'">
576 <genre authority="marc">festschrift</genre>
578 <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"></xsl:variable>
579 <xsl:if test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
580 <genre authority="marc">biography</genre>
582 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"></xsl:variable>
584 <xsl:when test="$controlField008-33='e'">
585 <genre authority="marc">essay</genre>
587 <xsl:when test="$controlField008-33='d'">
588 <genre authority="marc">drama</genre>
590 <xsl:when test="$controlField008-33='c'">
591 <genre authority="marc">comic strip</genre>
593 <xsl:when test="$controlField008-33='l'">
594 <genre authority="marc">fiction</genre>
596 <xsl:when test="$controlField008-33='h'">
597 <genre authority="marc">humor, satire</genre>
599 <xsl:when test="$controlField008-33='i'">
600 <genre authority="marc">letter</genre>
602 <xsl:when test="$controlField008-33='f'">
603 <genre authority="marc">novel</genre>
605 <xsl:when test="$controlField008-33='j'">
606 <genre authority="marc">short story</genre>
608 <xsl:when test="$controlField008-33='s'">
609 <genre authority="marc">speech</genre>
613 <xsl:if test="$typeOf008='MU'">
614 <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"></xsl:variable>
615 <xsl:if test="contains($controlField008-30-31,'b')">
616 <genre authority="marc">biography</genre>
618 <xsl:if test="contains($controlField008-30-31,'c')">
619 <genre authority="marc">conference publication</genre>
621 <xsl:if test="contains($controlField008-30-31,'d')">
622 <genre authority="marc">drama</genre>
624 <xsl:if test="contains($controlField008-30-31,'e')">
625 <genre authority="marc">essay</genre>
627 <xsl:if test="contains($controlField008-30-31,'f')">
628 <genre authority="marc">fiction</genre>
630 <xsl:if test="contains($controlField008-30-31,'o')">
631 <genre authority="marc">folktale</genre>
633 <xsl:if test="contains($controlField008-30-31,'h')">
634 <genre authority="marc">history</genre>
636 <xsl:if test="contains($controlField008-30-31,'k')">
637 <genre authority="marc">humor, satire</genre>
639 <xsl:if test="contains($controlField008-30-31,'m')">
640 <genre authority="marc">memoir</genre>
642 <xsl:if test="contains($controlField008-30-31,'p')">
643 <genre authority="marc">poetry</genre>
645 <xsl:if test="contains($controlField008-30-31,'r')">
646 <genre authority="marc">rehearsal</genre>
648 <xsl:if test="contains($controlField008-30-31,'g')">
649 <genre authority="marc">reporting</genre>
651 <xsl:if test="contains($controlField008-30-31,'s')">
652 <genre authority="marc">sound</genre>
654 <xsl:if test="contains($controlField008-30-31,'l')">
655 <genre authority="marc">speech</genre>
658 <xsl:if test="$typeOf008='VM'">
659 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"></xsl:variable>
661 <xsl:when test="$controlField008-33='a'">
662 <genre authority="marc">art original</genre>
664 <xsl:when test="$controlField008-33='b'">
665 <genre authority="marc">kit</genre>
667 <xsl:when test="$controlField008-33='c'">
668 <genre authority="marc">art reproduction</genre>
670 <xsl:when test="$controlField008-33='d'">
671 <genre authority="marc">diorama</genre>
673 <xsl:when test="$controlField008-33='f'">
674 <genre authority="marc">filmstrip</genre>
676 <xsl:when test="$controlField008-33='g'">
677 <genre authority="marc">legal article</genre>
679 <xsl:when test="$controlField008-33='i'">
680 <genre authority="marc">picture</genre>
682 <xsl:when test="$controlField008-33='k'">
683 <genre authority="marc">graphic</genre>
685 <xsl:when test="$controlField008-33='l'">
686 <genre authority="marc">technical drawing</genre>
688 <xsl:when test="$controlField008-33='m'">
689 <genre authority="marc">motion picture</genre>
691 <xsl:when test="$controlField008-33='n'">
692 <genre authority="marc">chart</genre>
694 <xsl:when test="$controlField008-33='o'">
695 <genre authority="marc">flash card</genre>
697 <xsl:when test="$controlField008-33='p'">
698 <genre authority="marc">microscope slide</genre>
700 <xsl:when test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
701 <genre authority="marc">model</genre>
703 <xsl:when test="$controlField008-33='r'">
704 <genre authority="marc">realia</genre>
706 <xsl:when test="$controlField008-33='s'">
707 <genre authority="marc">slide</genre>
709 <xsl:when test="$controlField008-33='t'">
710 <genre authority="marc">transparency</genre>
712 <xsl:when test="$controlField008-33='v'">
713 <genre authority="marc">videorecording</genre>
715 <xsl:when test="$controlField008-33='w'">
716 <genre authority="marc">toy</genre>
720 <xsl:for-each select="marc:datafield[@tag=655]">
721 <genre authority="marc">
722 <xsl:attribute name="authority">
723 <xsl:value-of select="marc:subfield[@code='2']"/>
725 <xsl:call-template name="subfieldSelect">
726 <xsl:with-param name="codes">abvxyz</xsl:with-param>
727 <xsl:with-param name="delimeter">-</xsl:with-param>
732 <xsl:variable name="MARCpublicationCode" select="normalize-space(substring($controlField008,16,3))"></xsl:variable>
733 <xsl:if test="translate($MARCpublicationCode,'|','')">
736 <xsl:attribute name="type">code</xsl:attribute>
737 <xsl:attribute name="authority">marccountry</xsl:attribute>
738 <xsl:value-of select="$MARCpublicationCode"/>
742 <xsl:for-each select="marc:datafield[@tag=044]/marc:subfield[@code='c']">
745 <xsl:attribute name="type">code</xsl:attribute>
746 <xsl:attribute name="authority">iso3166</xsl:attribute>
747 <xsl:value-of select="."/>
751 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='a']">
754 <xsl:attribute name="type">text</xsl:attribute>
755 <xsl:call-template name="chopPunctuationFront">
756 <xsl:with-param name="chopString">
757 <xsl:call-template name="chopPunctuation">
758 <xsl:with-param name="chopString" select="."/>
765 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='m']">
766 <dateValid point="start">
767 <xsl:value-of select="."/>
770 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='n']">
771 <dateValid point="end">
772 <xsl:value-of select="."/>
775 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='j']">
777 <xsl:value-of select="."/>
780 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='b' or @code='c' or @code='g']">
782 <xsl:when test="@code='b'">
784 <xsl:call-template name="chopPunctuation">
785 <xsl:with-param name="chopString" select="."/>
786 <xsl:with-param name="punctuation">
787 <xsl:text>:,;/ </xsl:text>
792 <xsl:when test="@code='c'">
794 <xsl:call-template name="chopPunctuation">
795 <xsl:with-param name="chopString" select="."/>
799 <xsl:when test="@code='g'">
801 <xsl:value-of select="."/>
806 <xsl:variable name="dataField260c">
807 <xsl:call-template name="chopPunctuation">
808 <xsl:with-param name="chopString" select="marc:datafield[@tag=260]/marc:subfield[@code='c']"></xsl:with-param>
811 <xsl:variable name="controlField008-7-10" select="normalize-space(substring($controlField008, 8, 4))"></xsl:variable>
812 <xsl:variable name="controlField008-11-14" select="normalize-space(substring($controlField008, 12, 4))"></xsl:variable>
813 <xsl:variable name="controlField008-6" select="normalize-space(substring($controlField008, 7, 1))"></xsl:variable>
814 <xsl:if test="$controlField008-6='e' or $controlField008-6='p' or $controlField008-6='r' or $controlField008-6='t' or $controlField008-6='s'">
815 <xsl:if test="$controlField008-7-10 and ($controlField008-7-10 != $dataField260c)">
816 <dateIssued encoding="marc">
817 <xsl:value-of select="$controlField008-7-10"/>
821 <xsl:if test="$controlField008-6='c' or $controlField008-6='d' or $controlField008-6='i' or $controlField008-6='k' or $controlField008-6='m' or $controlField008-6='q' or $controlField008-6='u'">
822 <xsl:if test="$controlField008-7-10">
823 <dateIssued encoding="marc" point="start">
824 <xsl:value-of select="$controlField008-7-10"/>
828 <xsl:if test="$controlField008-6='c' or $controlField008-6='d' or $controlField008-6='i' or $controlField008-6='k' or $controlField008-6='m' or $controlField008-6='q' or $controlField008-6='u'">
829 <xsl:if test="$controlField008-11-14">
830 <dateIssued encoding="marc" point="end">
831 <xsl:value-of select="$controlField008-11-14"/>
835 <xsl:if test="$controlField008-6='q'">
836 <xsl:if test="$controlField008-7-10">
837 <dateIssued encoding="marc" point="start" qualifier="questionable">
838 <xsl:value-of select="$controlField008-7-10"/>
842 <xsl:if test="$controlField008-6='q'">
843 <xsl:if test="$controlField008-11-14">
844 <dateIssued encoding="marc" point="end" qualifier="questionable">
845 <xsl:value-of select="$controlField008-11-14"/>
849 <xsl:if test="$controlField008-6='t'">
850 <xsl:if test="$controlField008-11-14">
851 <copyrightDate encoding="marc">
852 <xsl:value-of select="$controlField008-11-14"/>
856 <xsl:for-each select="marc:datafield[@tag=033][@ind1=0 or @ind1=1]/marc:subfield[@code='a']">
857 <dateCaptured encoding="iso8601">
858 <xsl:value-of select="."/>
861 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][1]">
862 <dateCaptured encoding="iso8601" point="start">
863 <xsl:value-of select="."/>
866 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][2]">
867 <dateCaptured encoding="iso8601" point="end">
868 <xsl:value-of select="."/>
871 <xsl:for-each select="marc:datafield[@tag=250]/marc:subfield[@code='a']">
873 <xsl:value-of select="."/>
876 <xsl:for-each select="marc:leader">
879 <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">monographic</xsl:when>
880 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">continuing</xsl:when>
884 <xsl:for-each select="marc:datafield[@tag=310]|marc:datafield[@tag=321]">
886 <xsl:call-template name="subfieldSelect">
887 <xsl:with-param name="codes">ab</xsl:with-param>
892 <xsl:variable name="controlField008-35-37" select="normalize-space(translate(substring($controlField008,36,3),'|#',''))"></xsl:variable>
893 <xsl:if test="$controlField008-35-37">
895 <languageTerm authority="iso639-2b" type="code">
896 <xsl:value-of select="substring($controlField008,36,3)"/>
900 <xsl:for-each select="marc:datafield[@tag=041]">
901 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='d' or @code='e' or @code='f' or @code='g' or @code='h']">
902 <xsl:variable name="langCodes" select="."/>
904 <xsl:when test="../marc:subfield[@code='2']='rfc3066'">
905 <!-- not stacked but could be repeated -->
906 <xsl:call-template name="rfcLanguages">
907 <xsl:with-param name="nodeNum">
908 <xsl:value-of select="1"/>
910 <xsl:with-param name="usedLanguages">
911 <xsl:text></xsl:text>
913 <xsl:with-param name="controlField008-35-37">
914 <xsl:value-of select="$controlField008-35-37"></xsl:value-of>
920 <xsl:variable name="allLanguages">
921 <xsl:copy-of select="$langCodes"></xsl:copy-of>
923 <xsl:variable name="currentLanguage">
924 <xsl:value-of select="substring($allLanguages,1,3)"></xsl:value-of>
926 <xsl:call-template name="isoLanguage">
927 <xsl:with-param name="currentLanguage">
928 <xsl:value-of select="substring($allLanguages,1,3)"></xsl:value-of>
930 <xsl:with-param name="remainingLanguages">
931 <xsl:value-of select="substring($allLanguages,4,string-length($allLanguages)-3)"></xsl:value-of>
933 <xsl:with-param name="usedLanguages">
934 <xsl:if test="$controlField008-35-37">
935 <xsl:value-of select="$controlField008-35-37"></xsl:value-of>
943 <xsl:variable name="physicalDescription">
944 <!--3.2 change tmee 007/11 -->
945 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
946 <digitalOrigin>reformatted digital</digitalOrigin>
948 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
949 <digitalOrigin>digitized microfilm</digitalOrigin>
951 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
952 <digitalOrigin>digitized other analog</digitalOrigin>
954 <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"></xsl:variable>
955 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"></xsl:variable>
956 <xsl:variable name="check008-23">
957 <xsl:if test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='SE' or $typeOf008='MM'">
958 <xsl:value-of select="true()"></xsl:value-of>
961 <xsl:variable name="check008-29">
962 <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
963 <xsl:value-of select="true()"></xsl:value-of>
967 <xsl:when test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
968 <form authority="marcform">braille</form>
970 <xsl:when test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='SE') and ($controlField008-23=' ' or $controlField008='r'))">
971 <form authority="marcform">print</form>
973 <xsl:when test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
974 <form authority="marcform">electronic</form>
976 <xsl:when test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
977 <form authority="marcform">microfiche</form>
979 <xsl:when test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
980 <form authority="marcform">microfilm</form>
984 <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
985 <form authority="gmd">
986 <xsl:call-template name="chopBrackets">
987 <xsl:with-param name="chopString">
988 <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"></xsl:value-of>
993 <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
994 <form authority="gmd">
995 <xsl:call-template name="chopBrackets">
996 <xsl:with-param name="chopString">
997 <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"></xsl:value-of>
1002 <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
1003 <form authority="gmd">
1004 <xsl:call-template name="chopBrackets">
1005 <xsl:with-param name="chopString">
1006 <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"></xsl:value-of>
1008 </xsl:call-template>
1011 <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
1012 <form authority="gmd">
1013 <xsl:call-template name="chopBrackets">
1014 <xsl:with-param name="chopString">
1015 <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"></xsl:value-of>
1017 </xsl:call-template>
1020 <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
1021 <form authority="gmd">
1022 <xsl:call-template name="chopBrackets">
1023 <xsl:with-param name="chopString">
1024 <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"></xsl:value-of>
1026 </xsl:call-template>
1029 <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
1030 <form authority="gmd">
1031 <xsl:call-template name="chopBrackets">
1032 <xsl:with-param name="chopString">
1033 <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"></xsl:value-of>
1035 </xsl:call-template>
1038 <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
1040 <xsl:value-of select="."></xsl:value-of>
1043 <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
1045 <xsl:when test="substring(text(),14,1)='a'">
1046 <reformattingQuality>access</reformattingQuality>
1048 <xsl:when test="substring(text(),14,1)='p'">
1049 <reformattingQuality>preservation</reformattingQuality>
1051 <xsl:when test="substring(text(),14,1)='r'">
1052 <reformattingQuality>replacement</reformattingQuality>
1056 <!--3.2 change tmee 007/01 -->
1057 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
1058 <form authority="smd">chip cartridge</form>
1060 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
1061 <form authority="smd">computer optical disc cartridge</form>
1063 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
1064 <form authority="smd">magnetic disc</form>
1066 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
1067 <form authority="smd">magneto-optical disc</form>
1069 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
1070 <form authority="smd">optical disc</form>
1072 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
1073 <form authority="smd">remote</form>
1075 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
1076 <form authority="smd">tape cartridge</form>
1078 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
1079 <form authority="smd">tape cassette</form>
1081 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
1082 <form authority="smd">tape reel</form>
1085 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
1086 <form authority="smd">celestial globe</form>
1088 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
1089 <form authority="smd">earth moon globe</form>
1091 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
1092 <form authority="smd">planetary or lunar globe</form>
1094 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
1095 <form authority="smd">terrestrial globe</form>
1098 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
1099 <form authority="smd">kit</form>
1102 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
1103 <form authority="smd">atlas</form>
1105 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
1106 <form authority="smd">diagram</form>
1108 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
1109 <form authority="smd">map</form>
1111 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
1112 <form authority="smd">model</form>
1114 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
1115 <form authority="smd">profile</form>
1117 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
1118 <form authority="smd">remote-sensing image</form>
1120 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
1121 <form authority="smd">section</form>
1123 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
1124 <form authority="smd">view</form>
1127 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
1128 <form authority="smd">aperture card</form>
1130 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
1131 <form authority="smd">microfiche</form>
1133 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
1134 <form authority="smd">microfiche cassette</form>
1136 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
1137 <form authority="smd">microfilm cartridge</form>
1139 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
1140 <form authority="smd">microfilm cassette</form>
1142 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
1143 <form authority="smd">microfilm reel</form>
1145 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
1146 <form authority="smd">microopaque</form>
1149 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
1150 <form authority="smd">film cartridge</form>
1152 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
1153 <form authority="smd">film cassette</form>
1155 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
1156 <form authority="smd">film reel</form>
1159 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
1160 <form authority="smd">chart</form>
1162 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
1163 <form authority="smd">collage</form>
1165 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
1166 <form authority="smd">drawing</form>
1168 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
1169 <form authority="smd">flash card</form>
1171 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
1172 <form authority="smd">painting</form>
1174 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
1175 <form authority="smd">photomechanical print</form>
1177 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
1178 <form authority="smd">photonegative</form>
1180 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
1181 <form authority="smd">photoprint</form>
1183 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
1184 <form authority="smd">picture</form>
1186 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
1187 <form authority="smd">print</form>
1189 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
1190 <form authority="smd">technical drawing</form>
1193 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
1194 <form authority="smd">notated music</form>
1197 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
1198 <form authority="smd">filmslip</form>
1200 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
1201 <form authority="smd">filmstrip cartridge</form>
1203 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
1204 <form authority="smd">filmstrip roll</form>
1206 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
1207 <form authority="smd">other filmstrip type</form>
1209 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
1210 <form authority="smd">slide</form>
1212 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
1213 <form authority="smd">transparency</form>
1215 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
1216 <form authority="smd">remote-sensing image</form>
1218 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
1219 <form authority="smd">cylinder</form>
1221 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
1222 <form authority="smd">roll</form>
1224 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
1225 <form authority="smd">sound cartridge</form>
1227 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
1228 <form authority="smd">sound cassette</form>
1230 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
1231 <form authority="smd">sound disc</form>
1233 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
1234 <form authority="smd">sound-tape reel</form>
1236 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
1237 <form authority="smd">sound-track film</form>
1239 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
1240 <form authority="smd">wire recording</form>
1243 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
1244 <form authority="smd">braille</form>
1246 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
1247 <form authority="smd">combination</form>
1249 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
1250 <form authority="smd">moon</form>
1252 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
1253 <form authority="smd">tactile, with no writing system</form>
1256 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
1257 <form authority="smd">braille</form>
1259 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
1260 <form authority="smd">large print</form>
1262 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
1263 <form authority="smd">regular print</form>
1265 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
1266 <form authority="smd">text in looseleaf binder</form>
1269 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
1270 <form authority="smd">videocartridge</form>
1272 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
1273 <form authority="smd">videocassette</form>
1275 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
1276 <form authority="smd">videodisc</form>
1278 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
1279 <form authority="smd">videoreel</form>
1282 <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
1284 <xsl:value-of select="."></xsl:value-of>
1285 </internetMediaType>
1287 <xsl:for-each select="marc:datafield[@tag=300]">
1289 <xsl:call-template name="subfieldSelect">
1290 <xsl:with-param name="codes">abce</xsl:with-param>
1291 </xsl:call-template>
1295 <xsl:if test="string-length(normalize-space($physicalDescription))">
1296 <physicalDescription>
1297 <xsl:copy-of select="$physicalDescription"></xsl:copy-of>
1298 </physicalDescription>
1300 <xsl:for-each select="marc:datafield[@tag=520]">
1302 <xsl:call-template name="uri"></xsl:call-template>
1303 <xsl:call-template name="subfieldSelect">
1304 <xsl:with-param name="codes">ab</xsl:with-param>
1305 </xsl:call-template>
1308 <xsl:for-each select="marc:datafield[@tag=505]">
1310 <xsl:call-template name="uri"></xsl:call-template>
1311 <xsl:call-template name="subfieldSelect">
1312 <xsl:with-param name="codes">agrt</xsl:with-param>
1313 </xsl:call-template>
1316 <xsl:for-each select="marc:datafield[@tag=521]">
1318 <xsl:call-template name="subfieldSelect">
1319 <xsl:with-param name="codes">ab</xsl:with-param>
1320 </xsl:call-template>
1323 <xsl:if test="$typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM'">
1324 <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"></xsl:variable>
1327 <xsl:when test="$controlField008-22='d'">
1328 <targetAudience authority="marctarget">adolescent</targetAudience>
1330 <xsl:when test="$controlField008-22='e'">
1331 <targetAudience authority="marctarget">adult</targetAudience>
1333 <xsl:when test="$controlField008-22='g'">
1334 <targetAudience authority="marctarget">general</targetAudience>
1336 <xsl:when test="$controlField008-22='b' or $controlField008-22='c' or $controlField008-22='j'">
1337 <targetAudience authority="marctarget">juvenile</targetAudience>
1339 <xsl:when test="$controlField008-22='a'">
1340 <targetAudience authority="marctarget">preschool</targetAudience>
1342 <xsl:when test="$controlField008-22='f'">
1343 <targetAudience authority="marctarget">specialized</targetAudience>
1347 <xsl:for-each select="marc:datafield[@tag=245]/marc:subfield[@code='c']">
1348 <note type="statement of responsibility">
1349 <xsl:value-of select="."></xsl:value-of>
1352 <xsl:for-each select="marc:datafield[@tag=500]">
1354 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1355 <xsl:call-template name="uri"></xsl:call-template>
1359 <!--3.2 change tmee additional note fields-->
1361 <xsl:for-each select="marc:datafield[@tag=502]">
1362 <note type="thesis">
1363 <xsl:call-template name="uri"/>
1364 <xsl:variable name="str">
1365 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1366 <xsl:value-of select="."/>
1367 <xsl:text> </xsl:text>
1370 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1374 <xsl:for-each select="marc:datafield[@tag=504]">
1375 <note type="bibliography">
1376 <xsl:call-template name="uri"/>
1377 <xsl:variable name="str">
1378 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1379 <xsl:value-of select="."/>
1380 <xsl:text> </xsl:text>
1383 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1387 <xsl:for-each select="marc:datafield[@tag=508]">
1388 <note type="creation/production credits">
1389 <xsl:call-template name="uri"/>
1390 <xsl:variable name="str">
1391 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1392 <xsl:value-of select="."/>
1393 <xsl:text> </xsl:text>
1396 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1400 <xsl:for-each select="marc:datafield[@tag=506]">
1401 <note type="restrictions">
1402 <xsl:call-template name="uri"></xsl:call-template>
1403 <xsl:variable name="str">
1404 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1405 <xsl:value-of select="."></xsl:value-of>
1406 <xsl:text> </xsl:text>
1409 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1413 <xsl:for-each select="marc:datafield[@tag=510]">
1414 <note type="citation/reference">
1415 <xsl:call-template name="uri"></xsl:call-template>
1416 <xsl:variable name="str">
1417 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1418 <xsl:value-of select="."></xsl:value-of>
1419 <xsl:text> </xsl:text>
1422 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1427 <xsl:for-each select="marc:datafield[@tag=511]">
1428 <note type="performers">
1429 <xsl:call-template name="uri"></xsl:call-template>
1430 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1433 <xsl:for-each select="marc:datafield[@tag=518]">
1435 <xsl:call-template name="uri"></xsl:call-template>
1436 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1440 <xsl:for-each select="marc:datafield[@tag=530]">
1441 <note type="additional physical form">
1442 <xsl:call-template name="uri"></xsl:call-template>
1443 <xsl:variable name="str">
1444 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1445 <xsl:value-of select="."></xsl:value-of>
1446 <xsl:text> </xsl:text>
1449 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1453 <xsl:for-each select="marc:datafield[@tag=533]">
1454 <note type="reproduction">
1455 <xsl:call-template name="uri"></xsl:call-template>
1456 <xsl:variable name="str">
1457 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1458 <xsl:value-of select="."></xsl:value-of>
1459 <xsl:text> </xsl:text>
1462 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1466 <xsl:for-each select="marc:datafield[@tag=534]">
1467 <note type="original version">
1468 <xsl:call-template name="uri"></xsl:call-template>
1469 <xsl:variable name="str">
1470 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1471 <xsl:value-of select="."></xsl:value-of>
1472 <xsl:text> </xsl:text>
1475 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1479 <xsl:for-each select="marc:datafield[@tag=538]">
1480 <note type="system details">
1481 <xsl:call-template name="uri"></xsl:call-template>
1482 <xsl:variable name="str">
1483 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1484 <xsl:value-of select="."></xsl:value-of>
1485 <xsl:text> </xsl:text>
1488 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1492 <xsl:for-each select="marc:datafield[@tag=583]">
1493 <note type="action">
1494 <xsl:call-template name="uri"></xsl:call-template>
1495 <xsl:variable name="str">
1496 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1497 <xsl:value-of select="."></xsl:value-of>
1498 <xsl:text> </xsl:text>
1501 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1509 <xsl:for-each select="marc:datafield[@tag=501 or @tag=507 or @tag=513 or @tag=514 or @tag=515 or @tag=516 or @tag=522 or @tag=524 or @tag=525 or @tag=526 or @tag=535 or @tag=536 or @tag=540 or @tag=541 or @tag=544 or @tag=545 or @tag=546 or @tag=547 or @tag=550 or @tag=552 or @tag=555 or @tag=556 or @tag=561 or @tag=562 or @tag=565 or @tag=567 or @tag=580 or @tag=581 or @tag=584 or @tag=585 or @tag=586]">
1511 <xsl:call-template name="uri"></xsl:call-template>
1512 <xsl:variable name="str">
1513 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1514 <xsl:value-of select="."></xsl:value-of>
1515 <xsl:text> </xsl:text>
1518 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1521 <xsl:for-each select="marc:datafield[@tag=034][marc:subfield[@code='d' or @code='e' or @code='f' or @code='g']]">
1525 <xsl:call-template name="subfieldSelect">
1526 <xsl:with-param name="codes">defg</xsl:with-param>
1527 </xsl:call-template>
1532 <xsl:for-each select="marc:datafield[@tag=043]">
1534 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
1536 <xsl:attribute name="authority">
1537 <xsl:if test="@code='a'">
1538 <xsl:text>marcgac</xsl:text>
1540 <xsl:if test="@code='b'">
1541 <xsl:value-of select="following-sibling::marc:subfield[@code=2]"></xsl:value-of>
1543 <xsl:if test="@code='c'">
1544 <xsl:text>iso3166</xsl:text>
1547 <xsl:value-of select="self::marc:subfield"></xsl:value-of>
1552 <!-- tmee 2006/11/27 -->
1553 <xsl:for-each select="marc:datafield[@tag=255]">
1555 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
1557 <xsl:if test="@code='a'">
1559 <xsl:value-of select="."></xsl:value-of>
1562 <xsl:if test="@code='b'">
1564 <xsl:value-of select="."></xsl:value-of>
1567 <xsl:if test="@code='c'">
1569 <xsl:value-of select="."></xsl:value-of>
1577 <xsl:apply-templates select="marc:datafield[653 >= @tag and @tag >= 600]"></xsl:apply-templates>
1578 <xsl:apply-templates select="marc:datafield[@tag=656]"></xsl:apply-templates>
1579 <xsl:for-each select="marc:datafield[@tag=752]">
1581 <hierarchicalGeographic>
1582 <xsl:for-each select="marc:subfield[@code='a']">
1584 <xsl:call-template name="chopPunctuation">
1585 <xsl:with-param name="chopString" select="."></xsl:with-param>
1586 </xsl:call-template>
1589 <xsl:for-each select="marc:subfield[@code='b']">
1591 <xsl:call-template name="chopPunctuation">
1592 <xsl:with-param name="chopString" select="."></xsl:with-param>
1593 </xsl:call-template>
1596 <xsl:for-each select="marc:subfield[@code='c']">
1598 <xsl:call-template name="chopPunctuation">
1599 <xsl:with-param name="chopString" select="."></xsl:with-param>
1600 </xsl:call-template>
1603 <xsl:for-each select="marc:subfield[@code='d']">
1605 <xsl:call-template name="chopPunctuation">
1606 <xsl:with-param name="chopString" select="."></xsl:with-param>
1607 </xsl:call-template>
1610 </hierarchicalGeographic>
1613 <xsl:for-each select="marc:datafield[@tag=045][marc:subfield[@code='b']]">
1616 <xsl:when test="@ind1=2">
1617 <temporal encoding="iso8601" point="start">
1618 <xsl:call-template name="chopPunctuation">
1619 <xsl:with-param name="chopString">
1620 <xsl:value-of select="marc:subfield[@code='b'][1]"></xsl:value-of>
1622 </xsl:call-template>
1624 <temporal encoding="iso8601" point="end">
1625 <xsl:call-template name="chopPunctuation">
1626 <xsl:with-param name="chopString">
1627 <xsl:value-of select="marc:subfield[@code='b'][2]"></xsl:value-of>
1629 </xsl:call-template>
1633 <xsl:for-each select="marc:subfield[@code='b']">
1634 <temporal encoding="iso8601">
1635 <xsl:call-template name="chopPunctuation">
1636 <xsl:with-param name="chopString" select="."></xsl:with-param>
1637 </xsl:call-template>
1644 <xsl:for-each select="marc:datafield[@tag=050]">
1645 <xsl:for-each select="marc:subfield[@code='b']">
1646 <classification authority="lcc">
1647 <xsl:if test="../marc:subfield[@code='3']">
1648 <xsl:attribute name="displayLabel">
1649 <xsl:value-of select="../marc:subfield[@code='3']"></xsl:value-of>
1652 <xsl:value-of select="preceding-sibling::marc:subfield[@code='a'][1]"></xsl:value-of>
1653 <xsl:text> </xsl:text>
1654 <xsl:value-of select="text()"></xsl:value-of>
1657 <xsl:for-each select="marc:subfield[@code='a'][not(following-sibling::marc:subfield[@code='b'])]">
1658 <classification authority="lcc">
1659 <xsl:if test="../marc:subfield[@code='3']">
1660 <xsl:attribute name="displayLabel">
1661 <xsl:value-of select="../marc:subfield[@code='3']"></xsl:value-of>
1664 <xsl:value-of select="text()"></xsl:value-of>
1668 <xsl:for-each select="marc:datafield[@tag=082]">
1669 <classification authority="ddc">
1670 <xsl:if test="marc:subfield[@code='2']">
1671 <xsl:attribute name="edition">
1672 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1675 <xsl:call-template name="subfieldSelect">
1676 <xsl:with-param name="codes">ab</xsl:with-param>
1677 </xsl:call-template>
1680 <xsl:for-each select="marc:datafield[@tag=080]">
1681 <classification authority="udc">
1682 <xsl:call-template name="subfieldSelect">
1683 <xsl:with-param name="codes">abx</xsl:with-param>
1684 </xsl:call-template>
1687 <xsl:for-each select="marc:datafield[@tag=060]">
1688 <classification authority="nlm">
1689 <xsl:call-template name="subfieldSelect">
1690 <xsl:with-param name="codes">ab</xsl:with-param>
1691 </xsl:call-template>
1694 <xsl:for-each select="marc:datafield[@tag=086][@ind1=0]">
1695 <classification authority="sudocs">
1696 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1699 <xsl:for-each select="marc:datafield[@tag=086][@ind1=1]">
1700 <classification authority="candoc">
1701 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1704 <xsl:for-each select="marc:datafield[@tag=086]">
1706 <xsl:attribute name="authority">
1707 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1709 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1712 <xsl:for-each select="marc:datafield[@tag=084]">
1714 <xsl:attribute name="authority">
1715 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1717 <xsl:call-template name="subfieldSelect">
1718 <xsl:with-param name="codes">ab</xsl:with-param>
1719 </xsl:call-template>
1722 <xsl:for-each select="marc:datafield[@tag=440]">
1723 <relatedItem type="series">
1724 <xsl:variable name="titleChop">
1725 <xsl:call-template name="chopPunctuation">
1726 <xsl:with-param name="chopString">
1727 <xsl:call-template name="subfieldSelect">
1728 <xsl:with-param name="codes">av</xsl:with-param>
1729 </xsl:call-template>
1731 </xsl:call-template>
1735 <xsl:value-of select="$titleChop" />
1737 <xsl:call-template name="part"></xsl:call-template>
1739 <titleInfo type="nfi">
1741 <xsl:when test="@ind2>0">
1743 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
1746 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
1748 <xsl:call-template name="part"/>
1752 <xsl:value-of select="$titleChop" />
1756 <xsl:call-template name="part"></xsl:call-template>
1760 <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
1761 <relatedItem type="series">
1764 <xsl:call-template name="chopPunctuation">
1765 <xsl:with-param name="chopString">
1766 <xsl:call-template name="subfieldSelect">
1767 <xsl:with-param name="codes">av</xsl:with-param>
1768 </xsl:call-template>
1770 </xsl:call-template>
1772 <xsl:call-template name="part"></xsl:call-template>
1776 <xsl:for-each select="marc:datafield[@tag=510]">
1777 <relatedItem type="isReferencedBy">
1779 <xsl:call-template name="subfieldSelect">
1780 <xsl:with-param name="codes">abcx3</xsl:with-param>
1781 </xsl:call-template>
1785 <xsl:for-each select="marc:datafield[@tag=534]">
1786 <relatedItem type="original">
1787 <xsl:call-template name="relatedTitle"></xsl:call-template>
1788 <xsl:call-template name="relatedName"></xsl:call-template>
1789 <xsl:if test="marc:subfield[@code='b' or @code='c']">
1791 <xsl:for-each select="marc:subfield[@code='c']">
1793 <xsl:value-of select="."></xsl:value-of>
1796 <xsl:for-each select="marc:subfield[@code='b']">
1798 <xsl:value-of select="."></xsl:value-of>
1803 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1804 <xsl:for-each select="marc:subfield[@code='z']">
1805 <identifier type="isbn">
1806 <xsl:value-of select="."></xsl:value-of>
1809 <xsl:call-template name="relatedNote"></xsl:call-template>
1812 <xsl:for-each select="marc:datafield[@tag=700][marc:subfield[@code='t']]">
1814 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1817 <xsl:call-template name="chopPunctuation">
1818 <xsl:with-param name="chopString">
1819 <xsl:call-template name="specialSubfieldSelect">
1820 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
1821 <xsl:with-param name="axis">t</xsl:with-param>
1822 <xsl:with-param name="afterCodes">g</xsl:with-param>
1823 </xsl:call-template>
1825 </xsl:call-template>
1827 <xsl:call-template name="part"></xsl:call-template>
1829 <name type="personal">
1831 <xsl:call-template name="specialSubfieldSelect">
1832 <xsl:with-param name="anyCodes">aq</xsl:with-param>
1833 <xsl:with-param name="axis">t</xsl:with-param>
1834 <xsl:with-param name="beforeCodes">g</xsl:with-param>
1835 </xsl:call-template>
1837 <xsl:call-template name="termsOfAddress"></xsl:call-template>
1838 <xsl:call-template name="nameDate"></xsl:call-template>
1839 <xsl:call-template name="role"></xsl:call-template>
1841 <xsl:call-template name="relatedForm"></xsl:call-template>
1842 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1845 <xsl:for-each select="marc:datafield[@tag=710][marc:subfield[@code='t']]">
1847 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1850 <xsl:call-template name="chopPunctuation">
1851 <xsl:with-param name="chopString">
1852 <xsl:call-template name="specialSubfieldSelect">
1853 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
1854 <xsl:with-param name="axis">t</xsl:with-param>
1855 <xsl:with-param name="afterCodes">dg</xsl:with-param>
1856 </xsl:call-template>
1858 </xsl:call-template>
1860 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
1862 <name type="corporate">
1863 <xsl:for-each select="marc:subfield[@code='a']">
1865 <xsl:value-of select="."></xsl:value-of>
1868 <xsl:for-each select="marc:subfield[@code='b']">
1870 <xsl:value-of select="."></xsl:value-of>
1873 <xsl:variable name="tempNamePart">
1874 <xsl:call-template name="specialSubfieldSelect">
1875 <xsl:with-param name="anyCodes">c</xsl:with-param>
1876 <xsl:with-param name="axis">t</xsl:with-param>
1877 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
1878 </xsl:call-template>
1880 <xsl:if test="normalize-space($tempNamePart)">
1882 <xsl:value-of select="$tempNamePart"></xsl:value-of>
1885 <xsl:call-template name="role"></xsl:call-template>
1887 <xsl:call-template name="relatedForm"></xsl:call-template>
1888 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1891 <xsl:for-each select="marc:datafield[@tag=711][marc:subfield[@code='t']]">
1893 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1896 <xsl:call-template name="chopPunctuation">
1897 <xsl:with-param name="chopString">
1898 <xsl:call-template name="specialSubfieldSelect">
1899 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
1900 <xsl:with-param name="axis">t</xsl:with-param>
1901 <xsl:with-param name="afterCodes">g</xsl:with-param>
1902 </xsl:call-template>
1904 </xsl:call-template>
1906 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
1908 <name type="conference">
1910 <xsl:call-template name="specialSubfieldSelect">
1911 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
1912 <xsl:with-param name="axis">t</xsl:with-param>
1913 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
1914 </xsl:call-template>
1917 <xsl:call-template name="relatedForm"></xsl:call-template>
1918 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1921 <xsl:for-each select="marc:datafield[@tag=730][@ind2=2]">
1923 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1926 <xsl:call-template name="chopPunctuation">
1927 <xsl:with-param name="chopString">
1928 <xsl:call-template name="subfieldSelect">
1929 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
1930 </xsl:call-template>
1932 </xsl:call-template>
1934 <xsl:call-template name="part"></xsl:call-template>
1936 <xsl:call-template name="relatedForm"></xsl:call-template>
1937 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1940 <xsl:for-each select="marc:datafield[@tag=740][@ind2=2]">
1942 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1943 <xsl:variable name="titleChop">
1944 <xsl:call-template name="chopPunctuation">
1945 <xsl:with-param name="chopString">
1946 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1948 </xsl:call-template>
1952 <xsl:value-of select="$titleChop" />
1954 <xsl:call-template name="part"></xsl:call-template>
1956 <titleInfo type="nfi">
1958 <xsl:when test="@ind1>0">
1960 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
1963 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
1968 <xsl:value-of select="$titleChop" />
1972 <xsl:call-template name="part"></xsl:call-template>
1974 <xsl:call-template name="relatedForm"></xsl:call-template>
1977 <xsl:for-each select="marc:datafield[@tag=760]|marc:datafield[@tag=762]">
1978 <relatedItem type="series">
1979 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1982 <xsl:for-each select="marc:datafield[@tag=765]|marc:datafield[@tag=767]|marc:datafield[@tag=777]|marc:datafield[@tag=787]">
1984 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1987 <xsl:for-each select="marc:datafield[@tag=775]">
1988 <relatedItem type="otherVersion">
1989 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1992 <xsl:for-each select="marc:datafield[@tag=770]|marc:datafield[@tag=774]">
1993 <relatedItem type="constituent">
1994 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1997 <xsl:for-each select="marc:datafield[@tag=772]|marc:datafield[@tag=773]">
1998 <relatedItem type="host">
1999 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2002 <xsl:for-each select="marc:datafield[@tag=776]">
2003 <relatedItem type="otherFormat">
2004 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2007 <xsl:for-each select="marc:datafield[@tag=780]">
2008 <relatedItem type="preceding">
2009 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2012 <xsl:for-each select="marc:datafield[@tag=785]">
2013 <relatedItem type="succeeding">
2014 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2017 <xsl:for-each select="marc:datafield[@tag=786]">
2018 <relatedItem type="original">
2019 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2022 <xsl:for-each select="marc:datafield[@tag=800]">
2023 <relatedItem type="series">
2026 <xsl:call-template name="chopPunctuation">
2027 <xsl:with-param name="chopString">
2028 <xsl:call-template name="specialSubfieldSelect">
2029 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
2030 <xsl:with-param name="axis">t</xsl:with-param>
2031 <xsl:with-param name="afterCodes">g</xsl:with-param>
2032 </xsl:call-template>
2034 </xsl:call-template>
2036 <xsl:call-template name="part"></xsl:call-template>
2038 <name type="personal">
2040 <xsl:call-template name="chopPunctuation">
2041 <xsl:with-param name="chopString">
2042 <xsl:call-template name="specialSubfieldSelect">
2043 <xsl:with-param name="anyCodes">aq</xsl:with-param>
2044 <xsl:with-param name="axis">t</xsl:with-param>
2045 <xsl:with-param name="beforeCodes">g</xsl:with-param>
2046 </xsl:call-template>
2048 </xsl:call-template>
2050 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2051 <xsl:call-template name="nameDate"></xsl:call-template>
2052 <xsl:call-template name="role"></xsl:call-template>
2054 <xsl:call-template name="relatedForm"></xsl:call-template>
2057 <xsl:for-each select="marc:datafield[@tag=810]">
2058 <relatedItem type="series">
2061 <xsl:call-template name="chopPunctuation">
2062 <xsl:with-param name="chopString">
2063 <xsl:call-template name="specialSubfieldSelect">
2064 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
2065 <xsl:with-param name="axis">t</xsl:with-param>
2066 <xsl:with-param name="afterCodes">dg</xsl:with-param>
2067 </xsl:call-template>
2069 </xsl:call-template>
2071 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2073 <name type="corporate">
2074 <xsl:for-each select="marc:subfield[@code='a']">
2076 <xsl:value-of select="."></xsl:value-of>
2079 <xsl:for-each select="marc:subfield[@code='b']">
2081 <xsl:value-of select="."></xsl:value-of>
2085 <xsl:call-template name="specialSubfieldSelect">
2086 <xsl:with-param name="anyCodes">c</xsl:with-param>
2087 <xsl:with-param name="axis">t</xsl:with-param>
2088 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
2089 </xsl:call-template>
2091 <xsl:call-template name="role"></xsl:call-template>
2093 <xsl:call-template name="relatedForm"></xsl:call-template>
2096 <xsl:for-each select="marc:datafield[@tag=811]">
2097 <relatedItem type="series">
2100 <xsl:call-template name="chopPunctuation">
2101 <xsl:with-param name="chopString">
2102 <xsl:call-template name="specialSubfieldSelect">
2103 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
2104 <xsl:with-param name="axis">t</xsl:with-param>
2105 <xsl:with-param name="afterCodes">g</xsl:with-param>
2106 </xsl:call-template>
2108 </xsl:call-template>
2110 <xsl:call-template name="relatedPartNumName"/>
2112 <name type="conference">
2114 <xsl:call-template name="specialSubfieldSelect">
2115 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
2116 <xsl:with-param name="axis">t</xsl:with-param>
2117 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
2118 </xsl:call-template>
2120 <xsl:call-template name="role"/>
2122 <xsl:call-template name="relatedForm"/>
2125 <xsl:for-each select="marc:datafield[@tag='830']">
2126 <relatedItem type="series">
2127 <xsl:variable name="titleChop">
2128 <xsl:call-template name="chopPunctuation">
2129 <xsl:with-param name="chopString">
2130 <xsl:call-template name="subfieldSelect">
2131 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
2132 </xsl:call-template>
2134 </xsl:call-template>
2138 <xsl:value-of select="$titleChop" />
2140 <xsl:call-template name="part"/>
2142 <titleInfo type="nfi">
2144 <xsl:when test="@ind2>0">
2146 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
2149 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
2154 <xsl:value-of select="$titleChop" />
2158 <xsl:call-template name="part"/>
2160 <xsl:call-template name="relatedForm"/>
2163 <xsl:for-each select="marc:datafield[@tag='856'][@ind2='2']/marc:subfield[@code='q']">
2166 <xsl:value-of select="."/>
2167 </internetMediaType>
2170 <xsl:for-each select="marc:datafield[@tag='020']">
2171 <xsl:call-template name="isInvalid">
2172 <xsl:with-param name="type">isbn</xsl:with-param>
2173 </xsl:call-template>
2174 <xsl:if test="marc:subfield[@code='a']">
2175 <identifier type="isbn">
2176 <xsl:value-of select="marc:subfield[@code='a']"/>
2180 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='0']">
2181 <xsl:call-template name="isInvalid">
2182 <xsl:with-param name="type">isrc</xsl:with-param>
2183 </xsl:call-template>
2184 <xsl:if test="marc:subfield[@code='a']">
2185 <identifier type="isrc">
2186 <xsl:value-of select="marc:subfield[@code='a']"/>
2190 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='2']">
2191 <xsl:call-template name="isInvalid">
2192 <xsl:with-param name="type">ismn</xsl:with-param>
2193 </xsl:call-template>
2194 <xsl:if test="marc:subfield[@code='a']">
2195 <identifier type="ismn">
2196 <xsl:value-of select="marc:subfield[@code='a']"/>
2200 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='4']">
2201 <xsl:call-template name="isInvalid">
2202 <xsl:with-param name="type">sici</xsl:with-param>
2203 </xsl:call-template>
2204 <identifier type="sici">
2205 <xsl:call-template name="subfieldSelect">
2206 <xsl:with-param name="codes">ab</xsl:with-param>
2207 </xsl:call-template>
2210 <xsl:for-each select="marc:datafield[@tag='022']">
2211 <xsl:call-template name="isInvalid">
2212 <xsl:with-param name="type">issn</xsl:with-param>
2213 </xsl:call-template>
2214 <identifier type="issn">
2215 <xsl:value-of select="marc:subfield[@code='a']"/>
2218 <xsl:for-each select="marc:datafield[@tag='010']">
2219 <xsl:call-template name="isInvalid">
2220 <xsl:with-param name="type">lccn</xsl:with-param>
2221 </xsl:call-template>
2222 <identifier type="lccn">
2223 <xsl:value-of select="normalize-space(marc:subfield[@code='a'])"/>
2226 <xsl:for-each select="marc:datafield[@tag='028']">
2228 <xsl:attribute name="type">
2230 <xsl:when test="@ind1='0'">issue number</xsl:when>
2231 <xsl:when test="@ind1='1'">matrix number</xsl:when>
2232 <xsl:when test="@ind1='2'">music plate</xsl:when>
2233 <xsl:when test="@ind1='3'">music publisher</xsl:when>
2234 <xsl:when test="@ind1='4'">videorecording identifier</xsl:when>
2237 <!--<xsl:call-template name="isInvalid"/>--> <!-- no $z in 028 -->
2238 <xsl:call-template name="subfieldSelect">
2239 <xsl:with-param name="codes">
2241 <xsl:when test="@ind1='0'">ba</xsl:when>
2242 <xsl:otherwise>ab</xsl:otherwise>
2245 </xsl:call-template>
2248 <xsl:for-each select="marc:datafield[@tag='037']">
2249 <identifier type="stock number">
2250 <!--<xsl:call-template name="isInvalid"/>--> <!-- no $z in 037 -->
2251 <xsl:call-template name="subfieldSelect">
2252 <xsl:with-param name="codes">ab</xsl:with-param>
2253 </xsl:call-template>
2256 <xsl:for-each select="marc:datafield[@tag='856'][marc:subfield[@code='u']]">
2258 <xsl:attribute name="type">
2260 <xsl:when test="starts-with(marc:subfield[@code='u'],'urn:doi') or starts-with(marc:subfield[@code='u'],'doi')">doi</xsl:when>
2261 <xsl:when test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl') or starts-with(marc:subfield[@code='u'],'http://hdl.loc.gov')">hdl</xsl:when>
2262 <xsl:otherwise>uri</xsl:otherwise>
2266 <xsl:when test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl') or starts-with(marc:subfield[@code='u'],'http://hdl.loc.gov') ">
2267 <xsl:value-of select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"></xsl:value-of>
2270 <xsl:value-of select="marc:subfield[@code='u']"></xsl:value-of>
2274 <xsl:if test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl')">
2275 <identifier type="hdl">
2276 <xsl:if test="marc:subfield[@code='y' or @code='3' or @code='z']">
2277 <xsl:attribute name="displayLabel">
2278 <xsl:call-template name="subfieldSelect">
2279 <xsl:with-param name="codes">y3z</xsl:with-param>
2280 </xsl:call-template>
2283 <xsl:value-of select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"></xsl:value-of>
2287 <xsl:for-each select="marc:datafield[@tag=024][@ind1=1]">
2288 <identifier type="upc">
2289 <xsl:call-template name="isInvalid"/>
2290 <xsl:value-of select="marc:subfield[@code='a']"/>
2293 <!-- 1/04 fix added $y -->
2294 <xsl:for-each select="marc:datafield[@tag=856][marc:subfield[@code='u']]">
2297 <xsl:if test="marc:subfield[@code='y' or @code='3']">
2298 <xsl:attribute name="displayLabel">
2299 <xsl:call-template name="subfieldSelect">
2300 <xsl:with-param name="codes">y3</xsl:with-param>
2301 </xsl:call-template>
2304 <xsl:if test="marc:subfield[@code='z' ]">
2305 <xsl:attribute name="note">
2306 <xsl:call-template name="subfieldSelect">
2307 <xsl:with-param name="codes">z</xsl:with-param>
2308 </xsl:call-template>
2311 <xsl:value-of select="marc:subfield[@code='u']"></xsl:value-of>
2317 <!-- 3.2 change tmee 856z -->
2320 <xsl:for-each select="marc:datafield[@tag=852]">
2323 <xsl:call-template name="displayLabel"></xsl:call-template>
2324 <xsl:call-template name="subfieldSelect">
2325 <xsl:with-param name="codes">abje</xsl:with-param>
2326 </xsl:call-template>
2330 <xsl:for-each select="marc:datafield[@tag=506]">
2331 <accessCondition type="restrictionOnAccess">
2332 <xsl:call-template name="subfieldSelect">
2333 <xsl:with-param name="codes">abcd35</xsl:with-param>
2334 </xsl:call-template>
2337 <xsl:for-each select="marc:datafield[@tag=540]">
2338 <accessCondition type="useAndReproduction">
2339 <xsl:call-template name="subfieldSelect">
2340 <xsl:with-param name="codes">abcde35</xsl:with-param>
2341 </xsl:call-template>
2345 <xsl:for-each select="marc:datafield[@tag=040]">
2346 <recordContentSource authority="marcorg">
2347 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
2348 </recordContentSource>
2350 <xsl:for-each select="marc:controlfield[@tag=008]">
2351 <recordCreationDate encoding="marc">
2352 <xsl:value-of select="substring(.,1,6)"></xsl:value-of>
2353 </recordCreationDate>
2355 <xsl:for-each select="marc:controlfield[@tag=005]">
2356 <recordChangeDate encoding="iso8601">
2357 <xsl:value-of select="."></xsl:value-of>
2360 <xsl:for-each select="marc:controlfield[@tag=001]">
2362 <xsl:if test="../marc:controlfield[@tag=003]">
2363 <xsl:attribute name="source">
2364 <xsl:value-of select="../marc:controlfield[@tag=003]"></xsl:value-of>
2367 <xsl:value-of select="."></xsl:value-of>
2370 <xsl:for-each select="marc:datafield[@tag=040]/marc:subfield[@code='b']">
2371 <languageOfCataloging>
2372 <languageTerm authority="iso639-2b" type="code">
2373 <xsl:value-of select="."></xsl:value-of>
2375 </languageOfCataloging>
2379 <xsl:template name="displayForm">
2380 <xsl:for-each select="marc:subfield[@code='c']">
2382 <xsl:value-of select="."></xsl:value-of>
2386 <xsl:template name="affiliation">
2387 <xsl:for-each select="marc:subfield[@code='u']">
2389 <xsl:value-of select="."></xsl:value-of>
2393 <xsl:template name="uri">
2394 <xsl:for-each select="marc:subfield[@code='u']">
2395 <xsl:attribute name="xlink:href">
2396 <xsl:value-of select="."></xsl:value-of>
2399 <xsl:for-each select="marc:subfield[@code='0']">
2401 <xsl:when test="contains(text(), ')')">
2402 <xsl:attribute name="xlink:href">
2403 <xsl:value-of select="substring-after(text(), ')')"></xsl:value-of>
2407 <xsl:attribute name="xlink:href">
2408 <xsl:value-of select="."></xsl:value-of>
2414 <xsl:template name="role">
2415 <xsl:for-each select="marc:subfield[@code='e']">
2417 <roleTerm type="text">
2418 <xsl:value-of select="."></xsl:value-of>
2422 <xsl:for-each select="marc:subfield[@code='4']">
2424 <roleTerm authority="marcrelator" type="code">
2425 <xsl:value-of select="."></xsl:value-of>
2430 <xsl:template name="part">
2431 <xsl:variable name="partNumber">
2432 <xsl:call-template name="specialSubfieldSelect">
2433 <xsl:with-param name="axis">n</xsl:with-param>
2434 <xsl:with-param name="anyCodes">n</xsl:with-param>
2435 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2436 </xsl:call-template>
2438 <xsl:variable name="partName">
2439 <xsl:call-template name="specialSubfieldSelect">
2440 <xsl:with-param name="axis">p</xsl:with-param>
2441 <xsl:with-param name="anyCodes">p</xsl:with-param>
2442 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2443 </xsl:call-template>
2445 <xsl:if test="string-length(normalize-space($partNumber))">
2447 <xsl:call-template name="chopPunctuation">
2448 <xsl:with-param name="chopString" select="$partNumber"></xsl:with-param>
2449 </xsl:call-template>
2452 <xsl:if test="string-length(normalize-space($partName))">
2454 <xsl:call-template name="chopPunctuation">
2455 <xsl:with-param name="chopString" select="$partName"></xsl:with-param>
2456 </xsl:call-template>
2460 <xsl:template name="relatedPart">
2461 <xsl:if test="@tag=773">
2462 <xsl:for-each select="marc:subfield[@code='g']">
2465 <xsl:value-of select="."></xsl:value-of>
2469 <xsl:for-each select="marc:subfield[@code='q']">
2471 <xsl:call-template name="parsePart"></xsl:call-template>
2476 <xsl:template name="relatedPartNumName">
2477 <xsl:variable name="partNumber">
2478 <xsl:call-template name="specialSubfieldSelect">
2479 <xsl:with-param name="axis">g</xsl:with-param>
2480 <xsl:with-param name="anyCodes">g</xsl:with-param>
2481 <xsl:with-param name="afterCodes">pst</xsl:with-param>
2482 </xsl:call-template>
2484 <xsl:variable name="partName">
2485 <xsl:call-template name="specialSubfieldSelect">
2486 <xsl:with-param name="axis">p</xsl:with-param>
2487 <xsl:with-param name="anyCodes">p</xsl:with-param>
2488 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2489 </xsl:call-template>
2491 <xsl:if test="string-length(normalize-space($partNumber))">
2493 <xsl:value-of select="$partNumber"></xsl:value-of>
2496 <xsl:if test="string-length(normalize-space($partName))">
2498 <xsl:value-of select="$partName"></xsl:value-of>
2502 <xsl:template name="relatedName">
2503 <xsl:for-each select="marc:subfield[@code='a']">
2506 <xsl:value-of select="."></xsl:value-of>
2511 <xsl:template name="relatedForm">
2512 <xsl:for-each select="marc:subfield[@code='h']">
2513 <physicalDescription>
2515 <xsl:value-of select="."></xsl:value-of>
2517 </physicalDescription>
2520 <xsl:template name="relatedExtent">
2521 <xsl:for-each select="marc:subfield[@code='h']">
2522 <physicalDescription>
2524 <xsl:value-of select="."></xsl:value-of>
2526 </physicalDescription>
2529 <xsl:template name="relatedNote">
2530 <xsl:for-each select="marc:subfield[@code='n']">
2532 <xsl:value-of select="."></xsl:value-of>
2536 <xsl:template name="relatedSubject">
2537 <xsl:for-each select="marc:subfield[@code='j']">
2539 <temporal encoding="iso8601">
2540 <xsl:call-template name="chopPunctuation">
2541 <xsl:with-param name="chopString" select="."></xsl:with-param>
2542 </xsl:call-template>
2547 <xsl:template name="relatedIdentifierISSN">
2548 <xsl:for-each select="marc:subfield[@code='x']">
2549 <identifier type="issn">
2550 <xsl:value-of select="."></xsl:value-of>
2554 <xsl:template name="relatedIdentifierLocal">
2555 <xsl:for-each select="marc:subfield[@code='w']">
2556 <identifier type="local">
2557 <xsl:value-of select="."></xsl:value-of>
2561 <xsl:template name="relatedIdentifier">
2562 <xsl:for-each select="marc:subfield[@code='o']">
2564 <xsl:value-of select="."></xsl:value-of>
2568 <xsl:template name="relatedItem76X-78X">
2569 <xsl:call-template name="displayLabel"></xsl:call-template>
2570 <xsl:call-template name="relatedTitle76X-78X"></xsl:call-template>
2571 <xsl:call-template name="relatedName"></xsl:call-template>
2572 <xsl:call-template name="relatedOriginInfo"></xsl:call-template>
2573 <xsl:call-template name="relatedLanguage"></xsl:call-template>
2574 <xsl:call-template name="relatedExtent"></xsl:call-template>
2575 <xsl:call-template name="relatedNote"></xsl:call-template>
2576 <xsl:call-template name="relatedSubject"></xsl:call-template>
2577 <xsl:call-template name="relatedIdentifier"></xsl:call-template>
2578 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
2579 <xsl:call-template name="relatedIdentifierLocal"></xsl:call-template>
2580 <xsl:call-template name="relatedPart"></xsl:call-template>
2582 <xsl:template name="subjectGeographicZ">
2584 <xsl:call-template name="chopPunctuation">
2585 <xsl:with-param name="chopString" select="."></xsl:with-param>
2586 </xsl:call-template>
2589 <xsl:template name="subjectTemporalY">
2591 <xsl:call-template name="chopPunctuation">
2592 <xsl:with-param name="chopString" select="."></xsl:with-param>
2593 </xsl:call-template>
2596 <xsl:template name="subjectTopic">
2598 <xsl:call-template name="chopPunctuation">
2599 <xsl:with-param name="chopString" select="."></xsl:with-param>
2600 </xsl:call-template>
2603 <!-- 3.2 change tmee 6xx $v genre -->
2604 <xsl:template name="subjectGenre">
2606 <xsl:call-template name="chopPunctuation">
2607 <xsl:with-param name="chopString" select="."></xsl:with-param>
2608 </xsl:call-template>
2612 <xsl:template name="nameABCDN">
2613 <xsl:for-each select="marc:subfield[@code='a']">
2615 <xsl:call-template name="chopPunctuation">
2616 <xsl:with-param name="chopString" select="."></xsl:with-param>
2617 </xsl:call-template>
2620 <xsl:for-each select="marc:subfield[@code='b']">
2622 <xsl:value-of select="."></xsl:value-of>
2625 <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
2627 <xsl:call-template name="subfieldSelect">
2628 <xsl:with-param name="codes">cdn</xsl:with-param>
2629 </xsl:call-template>
2633 <xsl:template name="nameABCDQ">
2635 <xsl:call-template name="chopPunctuation">
2636 <xsl:with-param name="chopString">
2637 <xsl:call-template name="subfieldSelect">
2638 <xsl:with-param name="codes">aq</xsl:with-param>
2639 </xsl:call-template>
2641 <xsl:with-param name="punctuation">
2642 <xsl:text>:,;/ </xsl:text>
2644 </xsl:call-template>
2646 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2647 <xsl:call-template name="nameDate"></xsl:call-template>
2649 <xsl:template name="nameACDEQ">
2651 <xsl:call-template name="subfieldSelect">
2652 <xsl:with-param name="codes">acdeq</xsl:with-param>
2653 </xsl:call-template>
2656 <xsl:template name="constituentOrRelatedType">
2657 <xsl:if test="@ind2=2">
2658 <xsl:attribute name="type">constituent</xsl:attribute>
2661 <xsl:template name="relatedTitle">
2662 <xsl:for-each select="marc:subfield[@code='t']">
2665 <xsl:call-template name="chopPunctuation">
2666 <xsl:with-param name="chopString">
2667 <xsl:value-of select="."></xsl:value-of>
2669 </xsl:call-template>
2674 <xsl:template name="relatedTitle76X-78X">
2675 <xsl:for-each select="marc:subfield[@code='t']">
2678 <xsl:call-template name="chopPunctuation">
2679 <xsl:with-param name="chopString">
2680 <xsl:value-of select="."></xsl:value-of>
2682 </xsl:call-template>
2684 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2685 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2689 <xsl:for-each select="marc:subfield[@code='p']">
2690 <titleInfo type="abbreviated">
2692 <xsl:call-template name="chopPunctuation">
2693 <xsl:with-param name="chopString">
2694 <xsl:value-of select="."></xsl:value-of>
2696 </xsl:call-template>
2698 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2699 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2703 <xsl:for-each select="marc:subfield[@code='s']">
2704 <titleInfo type="uniform">
2706 <xsl:call-template name="chopPunctuation">
2707 <xsl:with-param name="chopString">
2708 <xsl:value-of select="."></xsl:value-of>
2710 </xsl:call-template>
2712 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2713 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2718 <xsl:template name="relatedOriginInfo">
2719 <xsl:if test="marc:subfield[@code='b' or @code='d'] or marc:subfield[@code='f']">
2721 <xsl:if test="@tag=775">
2722 <xsl:for-each select="marc:subfield[@code='f']">
2725 <xsl:attribute name="type">code</xsl:attribute>
2726 <xsl:attribute name="authority">marcgac</xsl:attribute>
2727 <xsl:value-of select="."></xsl:value-of>
2732 <xsl:for-each select="marc:subfield[@code='d']">
2734 <xsl:value-of select="."></xsl:value-of>
2737 <xsl:for-each select="marc:subfield[@code='b']">
2739 <xsl:value-of select="."></xsl:value-of>
2745 <xsl:template name="relatedLanguage">
2746 <xsl:for-each select="marc:subfield[@code='e']">
2747 <xsl:call-template name="getLanguage">
2748 <xsl:with-param name="langString">
2749 <xsl:value-of select="."></xsl:value-of>
2751 </xsl:call-template>
2754 <xsl:template name="nameDate">
2755 <xsl:for-each select="marc:subfield[@code='d']">
2756 <namePart type="date">
2757 <xsl:call-template name="chopPunctuation">
2758 <xsl:with-param name="chopString" select="."></xsl:with-param>
2759 </xsl:call-template>
2763 <xsl:template name="subjectAuthority">
2764 <xsl:if test="@ind2!=4">
2765 <xsl:if test="@ind2!=' '">
2766 <xsl:if test="@ind2!=8">
2767 <xsl:if test="@ind2!=9">
2768 <xsl:attribute name="authority">
2770 <xsl:when test="@ind2=0">lcsh</xsl:when>
2771 <xsl:when test="@ind2=1">lcshac</xsl:when>
2772 <xsl:when test="@ind2=2">mesh</xsl:when>
2774 <xsl:when test="@ind2=3">nal</xsl:when>
2775 <xsl:when test="@ind2=5">csh</xsl:when>
2776 <xsl:when test="@ind2=6">rvm</xsl:when>
2777 <xsl:when test="@ind2=7">
2778 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
2787 <xsl:template name="subjectAnyOrder">
2788 <xsl:for-each select="marc:subfield[@code='v' or @code='x' or @code='y' or @code='z']">
2790 <xsl:when test="@code='v'">
2791 <xsl:call-template name="subjectGenre"></xsl:call-template>
2793 <xsl:when test="@code='x'">
2794 <xsl:call-template name="subjectTopic"></xsl:call-template>
2796 <xsl:when test="@code='y'">
2797 <xsl:call-template name="subjectTemporalY"></xsl:call-template>
2799 <xsl:when test="@code='z'">
2800 <xsl:call-template name="subjectGeographicZ"></xsl:call-template>
2805 <xsl:template name="specialSubfieldSelect">
2806 <xsl:param name="anyCodes"></xsl:param>
2807 <xsl:param name="axis"></xsl:param>
2808 <xsl:param name="beforeCodes"></xsl:param>
2809 <xsl:param name="afterCodes"></xsl:param>
2810 <xsl:variable name="str">
2811 <xsl:for-each select="marc:subfield">
2812 <xsl:if test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
2813 <xsl:value-of select="text()"></xsl:value-of>
2814 <xsl:text> </xsl:text>
2818 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
2821 <!-- 3.2 change tmee 6xx $v genre -->
2822 <xsl:template match="marc:datafield[@tag=600]">
2824 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2825 <name type="personal">
2826 <xsl:call-template name="uri" />
2828 <xsl:call-template name="chopPunctuation">
2829 <xsl:with-param name="chopString">
2830 <xsl:call-template name="subfieldSelect">
2831 <xsl:with-param name="codes">aq</xsl:with-param>
2832 </xsl:call-template>
2834 </xsl:call-template>
2836 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2837 <xsl:call-template name="nameDate"></xsl:call-template>
2838 <xsl:call-template name="affiliation"></xsl:call-template>
2839 <xsl:call-template name="role"></xsl:call-template>
2841 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2844 <xsl:template match="marc:datafield[@tag=610]">
2846 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2847 <name type="corporate">
2848 <xsl:call-template name="uri" />
2849 <xsl:for-each select="marc:subfield[@code='a']">
2851 <xsl:value-of select="."></xsl:value-of>
2854 <xsl:for-each select="marc:subfield[@code='b']">
2856 <xsl:value-of select="."></xsl:value-of>
2859 <xsl:if test="marc:subfield[@code='c' or @code='d' or @code='n' or @code='p']">
2861 <xsl:call-template name="subfieldSelect">
2862 <xsl:with-param name="codes">cdnp</xsl:with-param>
2863 </xsl:call-template>
2866 <xsl:call-template name="role"></xsl:call-template>
2868 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2871 <xsl:template match="marc:datafield[@tag=611]">
2873 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2874 <name type="conference">
2875 <xsl:call-template name="uri" />
2877 <xsl:call-template name="subfieldSelect">
2878 <xsl:with-param name="codes">abcdeqnp</xsl:with-param>
2879 </xsl:call-template>
2881 <xsl:for-each select="marc:subfield[@code='4']">
2883 <roleTerm authority="marcrelator" type="code">
2884 <xsl:value-of select="."></xsl:value-of>
2889 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2892 <xsl:template match="marc:datafield[@tag=630]">
2894 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2895 <xsl:variable name="titleChop">
2896 <xsl:call-template name="chopPunctuation">
2897 <xsl:with-param name="chopString">
2898 <xsl:call-template name="subfieldSelect">
2899 <xsl:with-param name="codes">adfhklor</xsl:with-param>
2900 </xsl:call-template>
2902 </xsl:call-template>
2906 <xsl:value-of select="$titleChop" />
2908 <xsl:call-template name="part"></xsl:call-template>
2910 <titleInfo type="nfi">
2912 <xsl:when test="@ind1>0">
2914 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
2917 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
2919 <xsl:call-template name="part"/>
2923 <xsl:value-of select="$titleChop" />
2927 <xsl:call-template name="part"></xsl:call-template>
2929 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2932 <xsl:template match="marc:datafield[@tag=650]">
2934 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2936 <xsl:call-template name="uri" />
2937 <xsl:call-template name="chopPunctuation">
2938 <xsl:with-param name="chopString">
2939 <xsl:call-template name="subfieldSelect">
2940 <xsl:with-param name="codes">abcd</xsl:with-param>
2941 </xsl:call-template>
2943 </xsl:call-template>
2945 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2948 <xsl:template match="marc:datafield[@tag=651]">
2950 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2951 <xsl:for-each select="marc:subfield[@code='a']">
2953 <xsl:call-template name="uri" />
2954 <xsl:call-template name="chopPunctuation">
2955 <xsl:with-param name="chopString" select="."></xsl:with-param>
2956 </xsl:call-template>
2959 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2962 <xsl:template match="marc:datafield[@tag=653]">
2964 <xsl:for-each select="marc:subfield[@code='a']">
2966 <xsl:call-template name="uri" />
2967 <xsl:value-of select="."></xsl:value-of>
2972 <xsl:template match="marc:datafield[@tag=656]">
2974 <xsl:if test="marc:subfield[@code=2]">
2975 <xsl:attribute name="authority">
2976 <xsl:value-of select="marc:subfield[@code=2]"></xsl:value-of>
2980 <xsl:call-template name="uri" />
2981 <xsl:call-template name="chopPunctuation">
2982 <xsl:with-param name="chopString">
2983 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
2985 </xsl:call-template>
2989 <xsl:template name="termsOfAddress">
2990 <xsl:if test="marc:subfield[@code='b' or @code='c']">
2991 <namePart type="termsOfAddress">
2992 <xsl:call-template name="chopPunctuation">
2993 <xsl:with-param name="chopString">
2994 <xsl:call-template name="subfieldSelect">
2995 <xsl:with-param name="codes">bc</xsl:with-param>
2996 </xsl:call-template>
2998 </xsl:call-template>
3002 <xsl:template name="displayLabel">
3003 <xsl:if test="marc:subfield[@code='i']">
3004 <xsl:attribute name="displayLabel">
3005 <xsl:value-of select="marc:subfield[@code='i']"></xsl:value-of>
3008 <xsl:if test="marc:subfield[@code='3']">
3009 <xsl:attribute name="displayLabel">
3010 <xsl:value-of select="marc:subfield[@code='3']"></xsl:value-of>
3014 <xsl:template name="isInvalid">
3015 <xsl:param name="type"/>
3016 <xsl:if test="marc:subfield[@code='z'] or marc:subfield[@code='y']">
3018 <xsl:attribute name="type">
3019 <xsl:value-of select="$type"/>
3021 <xsl:attribute name="invalid">
3022 <xsl:text>yes</xsl:text>
3024 <xsl:if test="marc:subfield[@code='z']">
3025 <xsl:value-of select="marc:subfield[@code='z']"/>
3027 <xsl:if test="marc:subfield[@code='y']">
3028 <xsl:value-of select="marc:subfield[@code='y']"/>
3033 <xsl:template name="subtitle">
3034 <xsl:if test="marc:subfield[@code='b']">
3036 <xsl:call-template name="chopPunctuation">
3037 <xsl:with-param name="chopString">
3038 <xsl:value-of select="marc:subfield[@code='b']"/>
3039 <!--<xsl:call-template name="subfieldSelect">
3040 <xsl:with-param name="codes">b</xsl:with-param>
3041 </xsl:call-template>-->
3043 </xsl:call-template>
3047 <xsl:template name="script">
3048 <xsl:param name="scriptCode"></xsl:param>
3049 <xsl:attribute name="script">
3051 <xsl:when test="$scriptCode='(3'">Arabic</xsl:when>
3052 <xsl:when test="$scriptCode='(B'">Latin</xsl:when>
3053 <xsl:when test="$scriptCode='$1'">Chinese, Japanese, Korean</xsl:when>
3054 <xsl:when test="$scriptCode='(N'">Cyrillic</xsl:when>
3055 <xsl:when test="$scriptCode='(2'">Hebrew</xsl:when>
3056 <xsl:when test="$scriptCode='(S'">Greek</xsl:when>
3060 <xsl:template name="parsePart">
3061 <!-- assumes 773$q= 1:2:3<4
3062 with up to 3 levels and one optional start page
3064 <xsl:variable name="level1">
3066 <xsl:when test="contains(text(),':')">
3068 <xsl:value-of select="substring-before(text(),':')"></xsl:value-of>
3070 <xsl:when test="not(contains(text(),':'))">
3072 <xsl:if test="contains(text(),'<')">
3074 <xsl:value-of select="substring-before(text(),'<')"></xsl:value-of>
3076 <xsl:if test="not(contains(text(),'<'))">
3078 <xsl:value-of select="text()"></xsl:value-of>
3083 <xsl:variable name="sici2">
3085 <xsl:when test="starts-with(substring-after(text(),$level1),':')">
3086 <xsl:value-of select="substring(substring-after(text(),$level1),2)"></xsl:value-of>
3089 <xsl:value-of select="substring-after(text(),$level1)"></xsl:value-of>
3093 <xsl:variable name="level2">
3095 <xsl:when test="contains($sici2,':')">
3097 <xsl:value-of select="substring-before($sici2,':')"></xsl:value-of>
3099 <xsl:when test="contains($sici2,'<')">
3101 <xsl:value-of select="substring-before($sici2,'<')"></xsl:value-of>
3104 <xsl:value-of select="$sici2"></xsl:value-of>
3109 <xsl:variable name="sici3">
3111 <xsl:when test="starts-with(substring-after($sici2,$level2),':')">
3112 <xsl:value-of select="substring(substring-after($sici2,$level2),2)"></xsl:value-of>
3115 <xsl:value-of select="substring-after($sici2,$level2)"></xsl:value-of>
3119 <xsl:variable name="level3">
3121 <xsl:when test="contains($sici3,'<')">
3123 <xsl:value-of select="substring-before($sici3,'<')"></xsl:value-of>
3126 <xsl:value-of select="$sici3"></xsl:value-of>
3131 <xsl:variable name="page">
3132 <xsl:if test="contains(text(),'<')">
3133 <xsl:value-of select="substring-after(text(),'<')"></xsl:value-of>
3136 <xsl:if test="$level1">
3139 <xsl:value-of select="$level1"></xsl:value-of>
3143 <xsl:if test="$level2">
3146 <xsl:value-of select="$level2"></xsl:value-of>
3150 <xsl:if test="$level3">
3153 <xsl:value-of select="$level3"></xsl:value-of>
3157 <xsl:if test="$page">
3158 <extent unit="page">
3160 <xsl:value-of select="$page"></xsl:value-of>
3165 <xsl:template name="getLanguage">
3166 <xsl:param name="langString"></xsl:param>
3167 <xsl:param name="controlField008-35-37"></xsl:param>
3168 <xsl:variable name="length" select="string-length($langString)"></xsl:variable>
3170 <xsl:when test="$length=0"></xsl:when>
3171 <xsl:when test="$controlField008-35-37=substring($langString,1,3)">
3172 <xsl:call-template name="getLanguage">
3173 <xsl:with-param name="langString" select="substring($langString,4,$length)"></xsl:with-param>
3174 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"></xsl:with-param>
3175 </xsl:call-template>
3179 <languageTerm authority="iso639-2b" type="code">
3180 <xsl:value-of select="substring($langString,1,3)"></xsl:value-of>
3183 <xsl:call-template name="getLanguage">
3184 <xsl:with-param name="langString" select="substring($langString,4,$length)"></xsl:with-param>
3185 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"></xsl:with-param>
3186 </xsl:call-template>
3190 <xsl:template name="isoLanguage">
3191 <xsl:param name="currentLanguage"></xsl:param>
3192 <xsl:param name="usedLanguages"></xsl:param>
3193 <xsl:param name="remainingLanguages"></xsl:param>
3195 <xsl:when test="string-length($currentLanguage)=0"></xsl:when>
3196 <xsl:when test="not(contains($usedLanguages, $currentLanguage))">
3198 <xsl:if test="@code!='a'">
3199 <xsl:attribute name="objectPart">
3201 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
3202 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
3203 <xsl:when test="@code='e'">libretto</xsl:when>
3204 <xsl:when test="@code='f'">table of contents</xsl:when>
3205 <xsl:when test="@code='g'">accompanying material</xsl:when>
3206 <xsl:when test="@code='h'">translation</xsl:when>
3210 <languageTerm authority="iso639-2b" type="code">
3211 <xsl:value-of select="$currentLanguage"></xsl:value-of>
3214 <xsl:call-template name="isoLanguage">
3215 <xsl:with-param name="currentLanguage">
3216 <xsl:value-of select="substring($remainingLanguages,1,3)"></xsl:value-of>
3218 <xsl:with-param name="usedLanguages">
3219 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"></xsl:value-of>
3221 <xsl:with-param name="remainingLanguages">
3222 <xsl:value-of select="substring($remainingLanguages,4,string-length($remainingLanguages))"></xsl:value-of>
3224 </xsl:call-template>
3227 <xsl:call-template name="isoLanguage">
3228 <xsl:with-param name="currentLanguage">
3229 <xsl:value-of select="substring($remainingLanguages,1,3)"></xsl:value-of>
3231 <xsl:with-param name="usedLanguages">
3232 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"></xsl:value-of>
3234 <xsl:with-param name="remainingLanguages">
3235 <xsl:value-of select="substring($remainingLanguages,4,string-length($remainingLanguages))"></xsl:value-of>
3237 </xsl:call-template>
3241 <xsl:template name="chopBrackets">
3242 <xsl:param name="chopString"></xsl:param>
3243 <xsl:variable name="string">
3244 <xsl:call-template name="chopPunctuation">
3245 <xsl:with-param name="chopString" select="$chopString"></xsl:with-param>
3246 </xsl:call-template>
3248 <xsl:if test="substring($string, 1,1)='['">
3249 <xsl:value-of select="substring($string,2, string-length($string)-2)"></xsl:value-of>
3251 <xsl:if test="substring($string, 1,1)!='['">
3252 <xsl:value-of select="$string"></xsl:value-of>
3255 <xsl:template name="rfcLanguages">
3256 <xsl:param name="nodeNum"></xsl:param>
3257 <xsl:param name="usedLanguages"></xsl:param>
3258 <xsl:param name="controlField008-35-37"></xsl:param>
3259 <xsl:variable name="currentLanguage" select="."></xsl:variable>
3261 <xsl:when test="not($currentLanguage)"></xsl:when>
3262 <xsl:when test="$currentLanguage!=$controlField008-35-37 and $currentLanguage!='rfc3066'">
3263 <xsl:if test="not(contains($usedLanguages,$currentLanguage))">
3265 <xsl:if test="@code!='a'">
3266 <xsl:attribute name="objectPart">
3268 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
3269 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
3270 <xsl:when test="@code='e'">libretto</xsl:when>
3271 <xsl:when test="@code='f'">table of contents</xsl:when>
3272 <xsl:when test="@code='g'">accompanying material</xsl:when>
3273 <xsl:when test="@code='h'">translation</xsl:when>
3277 <languageTerm authority="rfc3066" type="code">
3278 <xsl:value-of select="$currentLanguage"/>
3287 <xsl:template name="datafield">
3288 <xsl:param name="tag"/>
3289 <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
3290 <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
3291 <xsl:param name="subfields"/>
3292 <xsl:element name="marc:datafield">
3293 <xsl:attribute name="tag">
3294 <xsl:value-of select="$tag"/>
3296 <xsl:attribute name="ind1">
3297 <xsl:value-of select="$ind1"/>
3299 <xsl:attribute name="ind2">
3300 <xsl:value-of select="$ind2"/>
3302 <xsl:copy-of select="$subfields"/>
3306 <xsl:template name="subfieldSelect">
3307 <xsl:param name="codes"/>
3308 <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
3309 <xsl:variable name="str">
3310 <xsl:for-each select="marc:subfield">
3311 <xsl:if test="contains($codes, @code)">
3312 <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
3316 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
3319 <xsl:template name="buildSpaces">
3320 <xsl:param name="spaces"/>
3321 <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
3322 <xsl:if test="$spaces>0">
3323 <xsl:value-of select="$char"/>
3324 <xsl:call-template name="buildSpaces">
3325 <xsl:with-param name="spaces" select="$spaces - 1"/>
3326 <xsl:with-param name="char" select="$char"/>
3327 </xsl:call-template>
3331 <xsl:template name="chopPunctuation">
3332 <xsl:param name="chopString"/>
3333 <xsl:param name="punctuation"><xsl:text>.:,;/ </xsl:text></xsl:param>
3334 <xsl:variable name="length" select="string-length($chopString)"/>
3336 <xsl:when test="$length=0"/>
3337 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
3338 <xsl:call-template name="chopPunctuation">
3339 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
3340 <xsl:with-param name="punctuation" select="$punctuation"/>
3341 </xsl:call-template>
3343 <xsl:when test="not($chopString)"/>
3344 <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
3348 <xsl:template name="chopPunctuationFront">
3349 <xsl:param name="chopString"/>
3350 <xsl:variable name="length" select="string-length($chopString)"/>
3352 <xsl:when test="$length=0"/>
3353 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
3354 <xsl:call-template name="chopPunctuationFront">
3355 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"/>
3356 </xsl:call-template>
3358 <xsl:when test="not($chopString)"/>
3359 <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
3362 </xsl:stylesheet>$XXXX$ where name = $$mods32$$;
3364 update config.xml_transform set xslt = $XXXX$<xsl:stylesheet xmlns="http://www.loc.gov/mods/v3" xmlns:marc="http://www.loc.gov/MARC21/slim"
3365 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3366 exclude-result-prefixes="xlink marc" version="1.0">
3367 <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
3369 <xsl:variable name="ascii">
3370 <xsl:text> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:text>
3373 <xsl:variable name="latin1">
3374 <xsl:text> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:text>
3376 <!-- Characters that usually don't need to be escaped -->
3377 <xsl:variable name="safe">
3378 <xsl:text>!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:text>
3381 <xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
3383 <!-- Evergreen specific: revert Revision 1.23, so we can have those authority xlink attributes back. -->
3385 <!--MARC21slim2MODS3-3.xsl
3386 Revision 1.27 - Mapped 648 to <subject> 2009/03/13 tmee
3387 Revision 1.26 - Added subfield $s mapping for 130/240/730 2008/10/16 tmee
3388 Revision 1.25 - Mapped 040e to <descriptiveStandard> and Leader/18 to <descriptive standard>aacr2 2008/09/18 tmee
3389 Revision 1.24 - Mapped 852 subfields $h, $i, $j, $k, $l, $m, $t to <shelfLocation> and 852 subfield $u to <physicalLocation> with @xlink 2008/09/17 tmee
3390 Revision 1.23 - Commented out xlink/uri for subfield 0 for 130/240/730, 100/700, 110/710, 111/711 as these are currently unactionable 2008/09/17 tmee
3391 Revision 1.22 - Mapped 022 subfield $l to type "issn-l" subfield $m to output identifier element with corresponding @type and @invalid eq 'yes'2008/09/17 tmee
3392 Revision 1.21 - Mapped 856 ind2=1 or ind2=2 to <relatedItem><location><url> 2008/07/03 tmee
3393 Revision 1.20 - Added genre w/@auth="contents of 2" and type= "musical composition" 2008/07/01 tmee
3394 Revision 1.19 - Added genre offprint for 008/24+ BK code 2 2008/07/01 tmee
3395 Revision 1.18 - Added xlink/uri for subfield 0 for 130/240/730, 100/700, 110/710, 111/711 2008/06/26 tmee
3396 Revision 1.17 - Added mapping of 662 2008/05/14 tmee
3397 Revision 1.16 - Changed @authority from "marc" to "marcgt" for 007 and 008 codes mapped to a term in <genre> 2007/07/10 tmee
3398 Revision 1.15 - For field 630, moved call to part template outside title element 2007/07/10 tmee
3399 Revision 1.14 - Fixed template isValid and fields 010, 020, 022, 024, 028, and 037 to output additional identifier elements with corresponding @type and @invalid eq 'yes' when subfields z or y (in the case of 022) exist in the MARCXML ::: 2007/01/04 17:35:20 cred
3400 Revision 1.13 - Changed order of output under cartographics to reflect schema 2006/11/28 tmee
3401 Revision 1.12 - Updated to reflect MODS 3.2 Mapping 2006/10/11 tmee
3402 Revision 1.11 - The attribute objectPart moved from <languageTerm> to <language> 2006/04/08 jrad
3403 Revision 1.10 - MODS 3.1 revisions to language and classification elements (plus ability to find marc:collection embedded in wrapper elements such as SRU zs: wrappers) 2006/02/06 ggar
3404 Revision 1.9 - Subfield $y was added to field 242 2004/09/02 10:57 jrad
3405 Revision 1.8 - Subject chopPunctuation expanded and attribute fixes 2004/08/12 jrad
3406 Revision 1.7 - 2004/03/25 08:29 jrad
3407 Revision 1.6 - Various validation fixes 2004/02/20 ntra
3408 Revision 1.5 - MODS2 to MODS3 updates, language unstacking and de-duping, chopPunctuation expanded 2003/10/02 16:18:58 ntra
3409 Revision 1.3 - Additional Changes not related to MODS Version 2.0 by ntra
3410 Revision 1.2 - Added Log Comment 2003/03/24 19:37:42 ckeith
3412 <xsl:template match="/">
3414 <xsl:when test="//marc:collection">
3415 <modsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3416 xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
3417 <xsl:for-each select="//marc:collection/marc:record">
3418 <mods version="3.3">
3419 <xsl:call-template name="marcRecord"/>
3425 <mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3"
3426 xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
3427 <xsl:for-each select="//marc:record">
3428 <xsl:call-template name="marcRecord"/>
3434 <xsl:template name="marcRecord">
3435 <xsl:variable name="leader" select="marc:leader"/>
3436 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
3437 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
3438 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
3439 <xsl:variable name="typeOf008">
3441 <xsl:when test="$leader6='a'">
3444 test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
3445 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">SE</xsl:when>
3448 <xsl:when test="$leader6='t'">BK</xsl:when>
3449 <xsl:when test="$leader6='p'">MM</xsl:when>
3450 <xsl:when test="$leader6='m'">CF</xsl:when>
3451 <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
3452 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'">VM</xsl:when>
3453 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'"
3457 <xsl:for-each select="marc:datafield[@tag='245']">
3459 <xsl:variable name="title">
3461 <xsl:when test="marc:subfield[@code='b']">
3462 <xsl:call-template name="specialSubfieldSelect">
3463 <xsl:with-param name="axis">b</xsl:with-param>
3464 <xsl:with-param name="beforeCodes">afgk</xsl:with-param>
3465 </xsl:call-template>
3468 <xsl:call-template name="subfieldSelect">
3469 <xsl:with-param name="codes">abfgk</xsl:with-param>
3470 </xsl:call-template>
3474 <xsl:variable name="titleChop">
3475 <xsl:call-template name="chopPunctuation">
3476 <xsl:with-param name="chopString">
3477 <xsl:value-of select="$title"/>
3479 <xsl:with-param name="punctuation">
3480 <xsl:text>,;/ </xsl:text>
3482 </xsl:call-template>
3485 <xsl:when test="@ind2>0">
3487 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
3490 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
3495 <xsl:value-of select="$titleChop"/>
3499 <xsl:if test="marc:subfield[@code='b']">
3501 <xsl:call-template name="chopPunctuation">
3502 <xsl:with-param name="chopString">
3503 <xsl:call-template name="specialSubfieldSelect">
3504 <xsl:with-param name="axis">b</xsl:with-param>
3505 <xsl:with-param name="anyCodes">b</xsl:with-param>
3506 <xsl:with-param name="afterCodes">afgk</xsl:with-param>
3507 </xsl:call-template>
3509 </xsl:call-template>
3512 <xsl:call-template name="part"/>
3515 <xsl:for-each select="marc:datafield[@tag='210']">
3516 <titleInfo type="abbreviated">
3518 <xsl:call-template name="chopPunctuation">
3519 <xsl:with-param name="chopString">
3520 <xsl:call-template name="subfieldSelect">
3521 <xsl:with-param name="codes">a</xsl:with-param>
3522 </xsl:call-template>
3524 </xsl:call-template>
3526 <xsl:call-template name="subtitle"/>
3529 <xsl:for-each select="marc:datafield[@tag='242']">
3530 <titleInfo type="translated">
3531 <!--09/01/04 Added subfield $y-->
3532 <xsl:for-each select="marc:subfield[@code='y']">
3533 <xsl:attribute name="lang">
3534 <xsl:value-of select="text()"/>
3537 <xsl:for-each select="marc:subfield[@code='i']">
3538 <xsl:attribute name="displayLabel">
3539 <xsl:value-of select="text()"/>
3543 <xsl:call-template name="chopPunctuation">
3544 <xsl:with-param name="chopString">
3545 <xsl:call-template name="subfieldSelect">
3546 <!-- 1/04 removed $h, b -->
3547 <xsl:with-param name="codes">a</xsl:with-param>
3548 </xsl:call-template>
3550 </xsl:call-template>
3553 <xsl:call-template name="subtitle"/>
3554 <xsl:call-template name="part"/>
3557 <xsl:for-each select="marc:datafield[@tag='246']">
3558 <titleInfo type="alternative">
3559 <xsl:for-each select="marc:subfield[@code='i']">
3560 <xsl:attribute name="displayLabel">
3561 <xsl:value-of select="text()"/>
3565 <xsl:call-template name="chopPunctuation">
3566 <xsl:with-param name="chopString">
3567 <xsl:call-template name="subfieldSelect">
3568 <!-- 1/04 removed $h, $b -->
3569 <xsl:with-param name="codes">af</xsl:with-param>
3570 </xsl:call-template>
3572 </xsl:call-template>
3574 <xsl:call-template name="subtitle"/>
3575 <xsl:call-template name="part"/>
3579 select="marc:datafield[@tag='130']|marc:datafield[@tag='240']|marc:datafield[@tag='730'][@ind2!='2']">
3580 <titleInfo type="uniform">
3582 <xsl:call-template name="uri"/>
3584 <xsl:variable name="str">
3585 <xsl:for-each select="marc:subfield">
3587 test="(contains('adfklmors',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
3588 <xsl:value-of select="text()"/>
3589 <xsl:text> </xsl:text>
3593 <xsl:call-template name="chopPunctuation">
3594 <xsl:with-param name="chopString">
3595 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
3597 </xsl:call-template>
3599 <xsl:call-template name="part"/>
3602 <xsl:for-each select="marc:datafield[@tag='740'][@ind2!='2']">
3603 <titleInfo type="alternative">
3605 <xsl:call-template name="chopPunctuation">
3606 <xsl:with-param name="chopString">
3607 <xsl:call-template name="subfieldSelect">
3608 <xsl:with-param name="codes">ah</xsl:with-param>
3609 </xsl:call-template>
3611 </xsl:call-template>
3613 <xsl:call-template name="part"/>
3616 <xsl:for-each select="marc:datafield[@tag='100']">
3617 <name type="personal">
3619 <xsl:call-template name="uri"/>
3621 <xsl:call-template name="nameABCDQ"/>
3622 <xsl:call-template name="affiliation"/>
3624 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3626 <xsl:call-template name="role"/>
3629 <xsl:for-each select="marc:datafield[@tag='110']">
3630 <name type="corporate">
3632 <xsl:call-template name="uri"/>
3634 <xsl:call-template name="nameABCDN"/>
3636 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3638 <xsl:call-template name="role"/>
3641 <xsl:for-each select="marc:datafield[@tag='111']">
3642 <name type="conference">
3644 <xsl:call-template name="uri"/>
3646 <xsl:call-template name="nameACDEQ"/>
3648 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3650 <xsl:call-template name="role"/>
3653 <xsl:for-each select="marc:datafield[@tag='700'][not(marc:subfield[@code='t'])]">
3654 <name type="personal">
3656 <xsl:call-template name="uri"/>
3658 <xsl:call-template name="nameABCDQ"/>
3659 <xsl:call-template name="affiliation"/>
3660 <xsl:call-template name="role"/>
3663 <xsl:for-each select="marc:datafield[@tag='710'][not(marc:subfield[@code='t'])]">
3664 <name type="corporate">
3666 <xsl:call-template name="uri"/>
3668 <xsl:call-template name="nameABCDN"/>
3669 <xsl:call-template name="role"/>
3672 <xsl:for-each select="marc:datafield[@tag='711'][not(marc:subfield[@code='t'])]">
3673 <name type="conference">
3675 <xsl:call-template name="uri"/>
3677 <xsl:call-template name="nameACDEQ"/>
3678 <xsl:call-template name="role"/>
3681 <xsl:for-each select="marc:datafield[@tag='720'][not(marc:subfield[@code='t'])]">
3683 <xsl:if test="@ind1=1">
3684 <xsl:attribute name="type">
3685 <xsl:text>personal</xsl:text>
3689 <xsl:value-of select="marc:subfield[@code='a']"/>
3691 <xsl:call-template name="role"/>
3695 <xsl:if test="$leader7='c'">
3696 <xsl:attribute name="collection">yes</xsl:attribute>
3698 <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
3699 <xsl:attribute name="manuscript">yes</xsl:attribute>
3702 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
3703 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
3704 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
3705 <xsl:when test="$leader6='i'">sound recording-nonmusical</xsl:when>
3706 <xsl:when test="$leader6='j'">sound recording-musical</xsl:when>
3707 <xsl:when test="$leader6='k'">still image</xsl:when>
3708 <xsl:when test="$leader6='g'">moving image</xsl:when>
3709 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
3710 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
3711 <xsl:when test="$leader6='p'">mixed material</xsl:when>
3714 <xsl:if test="substring($controlField008,26,1)='d'">
3715 <genre authority="marcgt">globe</genre>
3718 test="marc:controlfield[@tag='007'][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
3719 <genre authority="marcgt">remote-sensing image</genre>
3721 <xsl:if test="$typeOf008='MP'">
3722 <xsl:variable name="controlField008-25" select="substring($controlField008,26,1)"/>
3725 test="$controlField008-25='a' or $controlField008-25='b' or $controlField008-25='c' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
3726 <genre authority="marcgt">map</genre>
3729 test="$controlField008-25='e' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
3730 <genre authority="marcgt">atlas</genre>
3734 <xsl:if test="$typeOf008='SE'">
3735 <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"/>
3737 <xsl:when test="$controlField008-21='d'">
3738 <genre authority="marcgt">database</genre>
3740 <xsl:when test="$controlField008-21='l'">
3741 <genre authority="marcgt">loose-leaf</genre>
3743 <xsl:when test="$controlField008-21='m'">
3744 <genre authority="marcgt">series</genre>
3746 <xsl:when test="$controlField008-21='n'">
3747 <genre authority="marcgt">newspaper</genre>
3749 <xsl:when test="$controlField008-21='p'">
3750 <genre authority="marcgt">periodical</genre>
3752 <xsl:when test="$controlField008-21='w'">
3753 <genre authority="marcgt">web site</genre>
3757 <xsl:if test="$typeOf008='BK' or $typeOf008='SE'">
3758 <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"/>
3760 <xsl:when test="contains($controlField008-24,'a')">
3761 <genre authority="marcgt">abstract or summary</genre>
3763 <xsl:when test="contains($controlField008-24,'b')">
3764 <genre authority="marcgt">bibliography</genre>
3766 <xsl:when test="contains($controlField008-24,'c')">
3767 <genre authority="marcgt">catalog</genre>
3769 <xsl:when test="contains($controlField008-24,'d')">
3770 <genre authority="marcgt">dictionary</genre>
3772 <xsl:when test="contains($controlField008-24,'e')">
3773 <genre authority="marcgt">encyclopedia</genre>
3775 <xsl:when test="contains($controlField008-24,'f')">
3776 <genre authority="marcgt">handbook</genre>
3778 <xsl:when test="contains($controlField008-24,'g')">
3779 <genre authority="marcgt">legal article</genre>
3781 <xsl:when test="contains($controlField008-24,'i')">
3782 <genre authority="marcgt">index</genre>
3784 <xsl:when test="contains($controlField008-24,'k')">
3785 <genre authority="marcgt">discography</genre>
3787 <xsl:when test="contains($controlField008-24,'l')">
3788 <genre authority="marcgt">legislation</genre>
3790 <xsl:when test="contains($controlField008-24,'m')">
3791 <genre authority="marcgt">theses</genre>
3793 <xsl:when test="contains($controlField008-24,'n')">
3794 <genre authority="marcgt">survey of literature</genre>
3796 <xsl:when test="contains($controlField008-24,'o')">
3797 <genre authority="marcgt">review</genre>
3799 <xsl:when test="contains($controlField008-24,'p')">
3800 <genre authority="marcgt">programmed text</genre>
3802 <xsl:when test="contains($controlField008-24,'q')">
3803 <genre authority="marcgt">filmography</genre>
3805 <xsl:when test="contains($controlField008-24,'r')">
3806 <genre authority="marcgt">directory</genre>
3808 <xsl:when test="contains($controlField008-24,'s')">
3809 <genre authority="marcgt">statistics</genre>
3811 <xsl:when test="contains($controlField008-24,'t')">
3812 <genre authority="marcgt">technical report</genre>
3814 <xsl:when test="contains($controlField008-24,'v')">
3815 <genre authority="marcgt">legal case and case notes</genre>
3817 <xsl:when test="contains($controlField008-24,'w')">
3818 <genre authority="marcgt">law report or digest</genre>
3820 <xsl:when test="contains($controlField008-24,'z')">
3821 <genre authority="marcgt">treaty</genre>
3824 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
3826 <xsl:when test="$controlField008-29='1'">
3827 <genre authority="marcgt">conference publication</genre>
3831 <xsl:if test="$typeOf008='CF'">
3832 <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"/>
3834 <xsl:when test="$controlField008-26='a'">
3835 <genre authority="marcgt">numeric data</genre>
3837 <xsl:when test="$controlField008-26='e'">
3838 <genre authority="marcgt">database</genre>
3840 <xsl:when test="$controlField008-26='f'">
3841 <genre authority="marcgt">font</genre>
3843 <xsl:when test="$controlField008-26='g'">
3844 <genre authority="marcgt">game</genre>
3848 <xsl:if test="$typeOf008='BK'">
3849 <xsl:if test="substring($controlField008,25,1)='j'">
3850 <genre authority="marcgt">patent</genre>
3852 <xsl:if test="substring($controlField008,25,1)='2'">
3853 <genre authority="marcgt">offprint</genre>
3855 <xsl:if test="substring($controlField008,31,1)='1'">
3856 <genre authority="marcgt">festschrift</genre>
3858 <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"/>
3860 test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
3861 <genre authority="marcgt">biography</genre>
3863 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
3865 <xsl:when test="$controlField008-33='e'">
3866 <genre authority="marcgt">essay</genre>
3868 <xsl:when test="$controlField008-33='d'">
3869 <genre authority="marcgt">drama</genre>
3871 <xsl:when test="$controlField008-33='c'">
3872 <genre authority="marcgt">comic strip</genre>
3874 <xsl:when test="$controlField008-33='l'">
3875 <genre authority="marcgt">fiction</genre>
3877 <xsl:when test="$controlField008-33='h'">
3878 <genre authority="marcgt">humor, satire</genre>
3880 <xsl:when test="$controlField008-33='i'">
3881 <genre authority="marcgt">letter</genre>
3883 <xsl:when test="$controlField008-33='f'">
3884 <genre authority="marcgt">novel</genre>
3886 <xsl:when test="$controlField008-33='j'">
3887 <genre authority="marcgt">short story</genre>
3889 <xsl:when test="$controlField008-33='s'">
3890 <genre authority="marcgt">speech</genre>
3894 <xsl:if test="$typeOf008='MU'">
3895 <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"/>
3896 <xsl:if test="contains($controlField008-30-31,'b')">
3897 <genre authority="marcgt">biography</genre>
3899 <xsl:if test="contains($controlField008-30-31,'c')">
3900 <genre authority="marcgt">conference publication</genre>
3902 <xsl:if test="contains($controlField008-30-31,'d')">
3903 <genre authority="marcgt">drama</genre>
3905 <xsl:if test="contains($controlField008-30-31,'e')">
3906 <genre authority="marcgt">essay</genre>
3908 <xsl:if test="contains($controlField008-30-31,'f')">
3909 <genre authority="marcgt">fiction</genre>
3911 <xsl:if test="contains($controlField008-30-31,'o')">
3912 <genre authority="marcgt">folktale</genre>
3914 <xsl:if test="contains($controlField008-30-31,'h')">
3915 <genre authority="marcgt">history</genre>
3917 <xsl:if test="contains($controlField008-30-31,'k')">
3918 <genre authority="marcgt">humor, satire</genre>
3920 <xsl:if test="contains($controlField008-30-31,'m')">
3921 <genre authority="marcgt">memoir</genre>
3923 <xsl:if test="contains($controlField008-30-31,'p')">
3924 <genre authority="marcgt">poetry</genre>
3926 <xsl:if test="contains($controlField008-30-31,'r')">
3927 <genre authority="marcgt">rehearsal</genre>
3929 <xsl:if test="contains($controlField008-30-31,'g')">
3930 <genre authority="marcgt">reporting</genre>
3932 <xsl:if test="contains($controlField008-30-31,'s')">
3933 <genre authority="marcgt">sound</genre>
3935 <xsl:if test="contains($controlField008-30-31,'l')">
3936 <genre authority="marcgt">speech</genre>
3939 <xsl:if test="$typeOf008='VM'">
3940 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
3942 <xsl:when test="$controlField008-33='a'">
3943 <genre authority="marcgt">art original</genre>
3945 <xsl:when test="$controlField008-33='b'">
3946 <genre authority="marcgt">kit</genre>
3948 <xsl:when test="$controlField008-33='c'">
3949 <genre authority="marcgt">art reproduction</genre>
3951 <xsl:when test="$controlField008-33='d'">
3952 <genre authority="marcgt">diorama</genre>
3954 <xsl:when test="$controlField008-33='f'">
3955 <genre authority="marcgt">filmstrip</genre>
3957 <xsl:when test="$controlField008-33='g'">
3958 <genre authority="marcgt">legal article</genre>
3960 <xsl:when test="$controlField008-33='i'">
3961 <genre authority="marcgt">picture</genre>
3963 <xsl:when test="$controlField008-33='k'">
3964 <genre authority="marcgt">graphic</genre>
3966 <xsl:when test="$controlField008-33='l'">
3967 <genre authority="marcgt">technical drawing</genre>
3969 <xsl:when test="$controlField008-33='m'">
3970 <genre authority="marcgt">motion picture</genre>
3972 <xsl:when test="$controlField008-33='n'">
3973 <genre authority="marcgt">chart</genre>
3975 <xsl:when test="$controlField008-33='o'">
3976 <genre authority="marcgt">flash card</genre>
3978 <xsl:when test="$controlField008-33='p'">
3979 <genre authority="marcgt">microscope slide</genre>
3982 test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
3983 <genre authority="marcgt">model</genre>
3985 <xsl:when test="$controlField008-33='r'">
3986 <genre authority="marcgt">realia</genre>
3988 <xsl:when test="$controlField008-33='s'">
3989 <genre authority="marcgt">slide</genre>
3991 <xsl:when test="$controlField008-33='t'">
3992 <genre authority="marcgt">transparency</genre>
3994 <xsl:when test="$controlField008-33='v'">
3995 <genre authority="marcgt">videorecording</genre>
3997 <xsl:when test="$controlField008-33='w'">
3998 <genre authority="marcgt">toy</genre>
4003 <!-- 1.20 047 genre tmee-->
4005 <xsl:for-each select="marc:datafield[@tag=047]">
4006 <genre authority="marcgt">
4007 <xsl:attribute name="authority">
4008 <xsl:value-of select="marc:subfield[@code='2']"/>
4010 <xsl:call-template name="subfieldSelect">
4011 <xsl:with-param name="codes">abcdef</xsl:with-param>
4012 <xsl:with-param name="delimeter">-</xsl:with-param>
4013 </xsl:call-template>
4016 <xsl:for-each select="marc:datafield[@tag=655]">
4017 <genre authority="marcgt">
4018 <xsl:attribute name="authority">
4019 <xsl:value-of select="marc:subfield[@code='2']"/>
4021 <xsl:call-template name="subfieldSelect">
4022 <xsl:with-param name="codes">abvxyz</xsl:with-param>
4023 <xsl:with-param name="delimeter">-</xsl:with-param>
4024 </xsl:call-template>
4028 <xsl:variable name="MARCpublicationCode"
4029 select="normalize-space(substring($controlField008,16,3))"/>
4030 <xsl:if test="translate($MARCpublicationCode,'|','')">
4033 <xsl:attribute name="type">code</xsl:attribute>
4034 <xsl:attribute name="authority">marccountry</xsl:attribute>
4035 <xsl:value-of select="$MARCpublicationCode"/>
4039 <xsl:for-each select="marc:datafield[@tag=044]/marc:subfield[@code='c']">
4042 <xsl:attribute name="type">code</xsl:attribute>
4043 <xsl:attribute name="authority">iso3166</xsl:attribute>
4044 <xsl:value-of select="."/>
4048 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='a']">
4051 <xsl:attribute name="type">text</xsl:attribute>
4052 <xsl:call-template name="chopPunctuationFront">
4053 <xsl:with-param name="chopString">
4054 <xsl:call-template name="chopPunctuation">
4055 <xsl:with-param name="chopString" select="."/>
4056 </xsl:call-template>
4058 </xsl:call-template>
4062 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='m']">
4063 <dateValid point="start">
4064 <xsl:value-of select="."/>
4067 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='n']">
4068 <dateValid point="end">
4069 <xsl:value-of select="."/>
4072 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='j']">
4074 <xsl:value-of select="."/>
4078 select="marc:datafield[@tag=260]/marc:subfield[@code='b' or @code='c' or @code='g']">
4080 <xsl:when test="@code='b'">
4082 <xsl:call-template name="chopPunctuation">
4083 <xsl:with-param name="chopString" select="."/>
4084 <xsl:with-param name="punctuation">
4085 <xsl:text>:,;/ </xsl:text>
4087 </xsl:call-template>
4090 <xsl:when test="@code='c'">
4092 <xsl:call-template name="chopPunctuation">
4093 <xsl:with-param name="chopString" select="."/>
4094 </xsl:call-template>
4097 <xsl:when test="@code='g'">
4099 <xsl:value-of select="."/>
4104 <xsl:variable name="dataField260c">
4105 <xsl:call-template name="chopPunctuation">
4106 <xsl:with-param name="chopString"
4107 select="marc:datafield[@tag=260]/marc:subfield[@code='c']"/>
4108 </xsl:call-template>
4110 <xsl:variable name="controlField008-7-10"
4111 select="normalize-space(substring($controlField008, 8, 4))"/>
4112 <xsl:variable name="controlField008-11-14"
4113 select="normalize-space(substring($controlField008, 12, 4))"/>
4114 <xsl:variable name="controlField008-6"
4115 select="normalize-space(substring($controlField008, 7, 1))"/>
4117 test="$controlField008-6='e' or $controlField008-6='p' or $controlField008-6='r' or $controlField008-6='t' or $controlField008-6='s'">
4118 <xsl:if test="$controlField008-7-10 and ($controlField008-7-10 != $dataField260c)">
4119 <dateIssued encoding="marc">
4120 <xsl:value-of select="$controlField008-7-10"/>
4125 test="$controlField008-6='c' or $controlField008-6='d' or $controlField008-6='i' or $controlField008-6='k' or $controlField008-6='m' or $controlField008-6='q' or $controlField008-6='u'">
4126 <xsl:if test="$controlField008-7-10">
4127 <dateIssued encoding="marc" point="start">
4128 <xsl:value-of select="$controlField008-7-10"/>
4133 test="$controlField008-6='c' or $controlField008-6='d' or $controlField008-6='i' or $controlField008-6='k' or $controlField008-6='m' or $controlField008-6='q' or $controlField008-6='u'">
4134 <xsl:if test="$controlField008-11-14">
4135 <dateIssued encoding="marc" point="end">
4136 <xsl:value-of select="$controlField008-11-14"/>
4140 <xsl:if test="$controlField008-6='q'">
4141 <xsl:if test="$controlField008-7-10">
4142 <dateIssued encoding="marc" point="start" qualifier="questionable">
4143 <xsl:value-of select="$controlField008-7-10"/>
4147 <xsl:if test="$controlField008-6='q'">
4148 <xsl:if test="$controlField008-11-14">
4149 <dateIssued encoding="marc" point="end" qualifier="questionable">
4150 <xsl:value-of select="$controlField008-11-14"/>
4154 <xsl:if test="$controlField008-6='t'">
4155 <xsl:if test="$controlField008-11-14">
4156 <copyrightDate encoding="marc">
4157 <xsl:value-of select="$controlField008-11-14"/>
4162 select="marc:datafield[@tag=033][@ind1=0 or @ind1=1]/marc:subfield[@code='a']">
4163 <dateCaptured encoding="iso8601">
4164 <xsl:value-of select="."/>
4167 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][1]">
4168 <dateCaptured encoding="iso8601" point="start">
4169 <xsl:value-of select="."/>
4172 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][2]">
4173 <dateCaptured encoding="iso8601" point="end">
4174 <xsl:value-of select="."/>
4177 <xsl:for-each select="marc:datafield[@tag=250]/marc:subfield[@code='a']">
4179 <xsl:value-of select="."/>
4182 <xsl:for-each select="marc:leader">
4186 test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'"
4187 >monographic</xsl:when>
4188 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'"
4189 >continuing</xsl:when>
4193 <xsl:for-each select="marc:datafield[@tag=310]|marc:datafield[@tag=321]">
4195 <xsl:call-template name="subfieldSelect">
4196 <xsl:with-param name="codes">ab</xsl:with-param>
4197 </xsl:call-template>
4201 <xsl:variable name="controlField008-35-37"
4202 select="normalize-space(translate(substring($controlField008,36,3),'|#',''))"/>
4203 <xsl:if test="$controlField008-35-37">
4205 <languageTerm authority="iso639-2b" type="code">
4206 <xsl:value-of select="substring($controlField008,36,3)"/>
4210 <xsl:for-each select="marc:datafield[@tag=041]">
4212 select="marc:subfield[@code='a' or @code='b' or @code='d' or @code='e' or @code='f' or @code='g' or @code='h']">
4213 <xsl:variable name="langCodes" select="."/>
4215 <xsl:when test="../marc:subfield[@code='2']='rfc3066'">
4216 <!-- not stacked but could be repeated -->
4217 <xsl:call-template name="rfcLanguages">
4218 <xsl:with-param name="nodeNum">
4219 <xsl:value-of select="1"/>
4221 <xsl:with-param name="usedLanguages">
4224 <xsl:with-param name="controlField008-35-37">
4225 <xsl:value-of select="$controlField008-35-37"/>
4227 </xsl:call-template>
4231 <xsl:variable name="allLanguages">
4232 <xsl:copy-of select="$langCodes"/>
4234 <xsl:variable name="currentLanguage">
4235 <xsl:value-of select="substring($allLanguages,1,3)"/>
4237 <xsl:call-template name="isoLanguage">
4238 <xsl:with-param name="currentLanguage">
4239 <xsl:value-of select="substring($allLanguages,1,3)"/>
4241 <xsl:with-param name="remainingLanguages">
4243 select="substring($allLanguages,4,string-length($allLanguages)-3)"
4246 <xsl:with-param name="usedLanguages">
4247 <xsl:if test="$controlField008-35-37">
4248 <xsl:value-of select="$controlField008-35-37"/>
4251 </xsl:call-template>
4256 <xsl:variable name="physicalDescription">
4257 <!--3.2 change tmee 007/11 -->
4258 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
4259 <digitalOrigin>reformatted digital</digitalOrigin>
4261 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
4262 <digitalOrigin>digitized microfilm</digitalOrigin>
4264 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
4265 <digitalOrigin>digitized other analog</digitalOrigin>
4267 <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"/>
4268 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
4269 <xsl:variable name="check008-23">
4271 test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='SE' or $typeOf008='MM'">
4272 <xsl:value-of select="true()"/>
4275 <xsl:variable name="check008-29">
4276 <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
4277 <xsl:value-of select="true()"/>
4282 test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
4283 <form authority="marcform">braille</form>
4286 test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='SE') and ($controlField008-23=' ' or $controlField008='r'))">
4287 <form authority="marcform">print</form>
4290 test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
4291 <form authority="marcform">electronic</form>
4294 test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
4295 <form authority="marcform">microfiche</form>
4298 test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
4299 <form authority="marcform">microfilm</form>
4303 <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
4304 <form authority="gmd">
4305 <xsl:call-template name="chopBrackets">
4306 <xsl:with-param name="chopString">
4307 <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"
4310 </xsl:call-template>
4313 <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
4314 <form authority="gmd">
4315 <xsl:call-template name="chopBrackets">
4316 <xsl:with-param name="chopString">
4317 <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"
4320 </xsl:call-template>
4323 <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
4324 <form authority="gmd">
4325 <xsl:call-template name="chopBrackets">
4326 <xsl:with-param name="chopString">
4327 <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"
4330 </xsl:call-template>
4333 <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
4334 <form authority="gmd">
4335 <xsl:call-template name="chopBrackets">
4336 <xsl:with-param name="chopString">
4337 <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"
4340 </xsl:call-template>
4343 <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
4344 <form authority="gmd">
4345 <xsl:call-template name="chopBrackets">
4346 <xsl:with-param name="chopString">
4347 <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"
4350 </xsl:call-template>
4353 <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
4354 <form authority="gmd">
4355 <xsl:call-template name="chopBrackets">
4356 <xsl:with-param name="chopString">
4357 <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"
4360 </xsl:call-template>
4363 <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
4365 <xsl:value-of select="."/>
4368 <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
4370 <xsl:when test="substring(text(),14,1)='a'">
4371 <reformattingQuality>access</reformattingQuality>
4373 <xsl:when test="substring(text(),14,1)='p'">
4374 <reformattingQuality>preservation</reformattingQuality>
4376 <xsl:when test="substring(text(),14,1)='r'">
4377 <reformattingQuality>replacement</reformattingQuality>
4381 <!--3.2 change tmee 007/01 -->
4383 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
4384 <form authority="smd">chip cartridge</form>
4387 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
4388 <form authority="smd">computer optical disc cartridge</form>
4391 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
4392 <form authority="smd">magnetic disc</form>
4395 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
4396 <form authority="smd">magneto-optical disc</form>
4399 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
4400 <form authority="smd">optical disc</form>
4403 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
4404 <form authority="smd">remote</form>
4407 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
4408 <form authority="smd">tape cartridge</form>
4411 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
4412 <form authority="smd">tape cassette</form>
4415 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
4416 <form authority="smd">tape reel</form>
4420 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
4421 <form authority="smd">celestial globe</form>
4424 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
4425 <form authority="smd">earth moon globe</form>
4428 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
4429 <form authority="smd">planetary or lunar globe</form>
4432 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
4433 <form authority="smd">terrestrial globe</form>
4437 test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
4438 <form authority="smd">kit</form>
4442 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
4443 <form authority="smd">atlas</form>
4446 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
4447 <form authority="smd">diagram</form>
4450 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
4451 <form authority="smd">map</form>
4454 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
4455 <form authority="smd">model</form>
4458 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
4459 <form authority="smd">profile</form>
4462 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
4463 <form authority="smd">remote-sensing image</form>
4466 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
4467 <form authority="smd">section</form>
4470 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
4471 <form authority="smd">view</form>
4475 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
4476 <form authority="smd">aperture card</form>
4479 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
4480 <form authority="smd">microfiche</form>
4483 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
4484 <form authority="smd">microfiche cassette</form>
4487 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
4488 <form authority="smd">microfilm cartridge</form>
4491 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
4492 <form authority="smd">microfilm cassette</form>
4495 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
4496 <form authority="smd">microfilm reel</form>
4499 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
4500 <form authority="smd">microopaque</form>
4504 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
4505 <form authority="smd">film cartridge</form>
4508 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
4509 <form authority="smd">film cassette</form>
4512 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
4513 <form authority="smd">film reel</form>
4517 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
4518 <form authority="smd">chart</form>
4521 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
4522 <form authority="smd">collage</form>
4525 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
4526 <form authority="smd">drawing</form>
4529 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
4530 <form authority="smd">flash card</form>
4533 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
4534 <form authority="smd">painting</form>
4537 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
4538 <form authority="smd">photomechanical print</form>
4541 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
4542 <form authority="smd">photonegative</form>
4545 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
4546 <form authority="smd">photoprint</form>
4549 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
4550 <form authority="smd">picture</form>
4553 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
4554 <form authority="smd">print</form>
4557 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
4558 <form authority="smd">technical drawing</form>
4562 test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
4563 <form authority="smd">notated music</form>
4567 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
4568 <form authority="smd">filmslip</form>
4571 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
4572 <form authority="smd">filmstrip cartridge</form>
4575 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
4576 <form authority="smd">filmstrip roll</form>
4579 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
4580 <form authority="smd">other filmstrip type</form>
4583 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
4584 <form authority="smd">slide</form>
4587 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
4588 <form authority="smd">transparency</form>
4591 test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
4592 <form authority="smd">remote-sensing image</form>
4595 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
4596 <form authority="smd">cylinder</form>
4599 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
4600 <form authority="smd">roll</form>
4603 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
4604 <form authority="smd">sound cartridge</form>
4607 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
4608 <form authority="smd">sound cassette</form>
4611 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
4612 <form authority="smd">sound disc</form>
4615 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
4616 <form authority="smd">sound-tape reel</form>
4619 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
4620 <form authority="smd">sound-track film</form>
4623 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
4624 <form authority="smd">wire recording</form>
4628 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
4629 <form authority="smd">braille</form>
4632 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
4633 <form authority="smd">combination</form>
4636 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
4637 <form authority="smd">moon</form>
4640 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
4641 <form authority="smd">tactile, with no writing system</form>
4645 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
4646 <form authority="smd">braille</form>
4649 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
4650 <form authority="smd">large print</form>
4653 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
4654 <form authority="smd">regular print</form>
4657 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
4658 <form authority="smd">text in looseleaf binder</form>
4662 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
4663 <form authority="smd">videocartridge</form>
4666 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
4667 <form authority="smd">videocassette</form>
4670 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
4671 <form authority="smd">videodisc</form>
4674 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
4675 <form authority="smd">videoreel</form>
4679 select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
4681 <xsl:value-of select="."/>
4682 </internetMediaType>
4684 <xsl:for-each select="marc:datafield[@tag=300]">
4686 <xsl:call-template name="subfieldSelect">
4687 <xsl:with-param name="codes">abce</xsl:with-param>
4688 </xsl:call-template>
4692 <xsl:if test="string-length(normalize-space($physicalDescription))">
4693 <physicalDescription>
4694 <xsl:copy-of select="$physicalDescription"/>
4695 </physicalDescription>
4697 <xsl:for-each select="marc:datafield[@tag=520]">
4699 <xsl:call-template name="uri"/>
4700 <xsl:call-template name="subfieldSelect">
4701 <xsl:with-param name="codes">ab</xsl:with-param>
4702 </xsl:call-template>
4705 <xsl:for-each select="marc:datafield[@tag=505]">
4707 <xsl:call-template name="uri"/>
4708 <xsl:call-template name="subfieldSelect">
4709 <xsl:with-param name="codes">agrt</xsl:with-param>
4710 </xsl:call-template>
4713 <xsl:for-each select="marc:datafield[@tag=521]">
4715 <xsl:call-template name="subfieldSelect">
4716 <xsl:with-param name="codes">ab</xsl:with-param>
4717 </xsl:call-template>
4720 <xsl:if test="$typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM'">
4721 <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"/>
4724 <xsl:when test="$controlField008-22='d'">
4725 <targetAudience authority="marctarget">adolescent</targetAudience>
4727 <xsl:when test="$controlField008-22='e'">
4728 <targetAudience authority="marctarget">adult</targetAudience>
4730 <xsl:when test="$controlField008-22='g'">
4731 <targetAudience authority="marctarget">general</targetAudience>
4734 test="$controlField008-22='b' or $controlField008-22='c' or $controlField008-22='j'">
4735 <targetAudience authority="marctarget">juvenile</targetAudience>
4737 <xsl:when test="$controlField008-22='a'">
4738 <targetAudience authority="marctarget">preschool</targetAudience>
4740 <xsl:when test="$controlField008-22='f'">
4741 <targetAudience authority="marctarget">specialized</targetAudience>
4745 <xsl:for-each select="marc:datafield[@tag=245]/marc:subfield[@code='c']">
4746 <note type="statement of responsibility">
4747 <xsl:value-of select="."/>
4750 <xsl:for-each select="marc:datafield[@tag=500]">
4752 <xsl:value-of select="marc:subfield[@code='a']"/>
4753 <xsl:call-template name="uri"/>
4757 <!--3.2 change tmee additional note fields-->
4759 <xsl:for-each select="marc:datafield[@tag=502]">
4760 <note type="thesis">
4761 <xsl:call-template name="uri"/>
4762 <xsl:variable name="str">
4763 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4764 <xsl:value-of select="."/>
4765 <xsl:text> </xsl:text>
4768 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4772 <xsl:for-each select="marc:datafield[@tag=504]">
4773 <note type="bibliography">
4774 <xsl:call-template name="uri"/>
4775 <xsl:variable name="str">
4776 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4777 <xsl:value-of select="."/>
4778 <xsl:text> </xsl:text>
4781 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4785 <xsl:for-each select="marc:datafield[@tag=508]">
4786 <note type="creation/production credits">
4787 <xsl:call-template name="uri"/>
4788 <xsl:variable name="str">
4789 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4790 <xsl:value-of select="."/>
4791 <xsl:text> </xsl:text>
4794 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4798 <xsl:for-each select="marc:datafield[@tag=506]">
4799 <note type="restrictions">
4800 <xsl:call-template name="uri"/>
4801 <xsl:variable name="str">
4802 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4803 <xsl:value-of select="."/>
4804 <xsl:text> </xsl:text>
4807 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4811 <xsl:for-each select="marc:datafield[@tag=510]">
4812 <note type="citation/reference">
4813 <xsl:call-template name="uri"/>
4814 <xsl:variable name="str">
4815 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4816 <xsl:value-of select="."/>
4817 <xsl:text> </xsl:text>
4820 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4825 <xsl:for-each select="marc:datafield[@tag=511]">
4826 <note type="performers">
4827 <xsl:call-template name="uri"/>
4828 <xsl:value-of select="marc:subfield[@code='a']"/>
4831 <xsl:for-each select="marc:datafield[@tag=518]">
4833 <xsl:call-template name="uri"/>
4834 <xsl:value-of select="marc:subfield[@code='a']"/>
4838 <xsl:for-each select="marc:datafield[@tag=530]">
4839 <note type="additional physical form">
4840 <xsl:call-template name="uri"/>
4841 <xsl:variable name="str">
4842 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4843 <xsl:value-of select="."/>
4844 <xsl:text> </xsl:text>
4847 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4851 <xsl:for-each select="marc:datafield[@tag=533]">
4852 <note type="reproduction">
4853 <xsl:call-template name="uri"/>
4854 <xsl:variable name="str">
4855 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4856 <xsl:value-of select="."/>
4857 <xsl:text> </xsl:text>
4860 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4864 <xsl:for-each select="marc:datafield[@tag=534]">
4865 <note type="original version">
4866 <xsl:call-template name="uri"/>
4867 <xsl:variable name="str">
4868 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4869 <xsl:value-of select="."/>
4870 <xsl:text> </xsl:text>
4873 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4877 <xsl:for-each select="marc:datafield[@tag=538]">
4878 <note type="system details">
4879 <xsl:call-template name="uri"/>
4880 <xsl:variable name="str">
4881 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4882 <xsl:value-of select="."/>
4883 <xsl:text> </xsl:text>
4886 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4890 <xsl:for-each select="marc:datafield[@tag=583]">
4891 <note type="action">
4892 <xsl:call-template name="uri"/>
4893 <xsl:variable name="str">
4894 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4895 <xsl:value-of select="."/>
4896 <xsl:text> </xsl:text>
4899 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4904 select="marc:datafield[@tag=501 or @tag=507 or @tag=513 or @tag=514 or @tag=515 or @tag=516 or @tag=522 or @tag=524 or @tag=525 or @tag=526 or @tag=535 or @tag=536 or @tag=540 or @tag=541 or @tag=544 or @tag=545 or @tag=546 or @tag=547 or @tag=550 or @tag=552 or @tag=555 or @tag=556 or @tag=561 or @tag=562 or @tag=565 or @tag=567 or @tag=580 or @tag=581 or @tag=584 or @tag=585 or @tag=586]">
4906 <xsl:call-template name="uri"/>
4907 <xsl:variable name="str">
4908 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4909 <xsl:value-of select="."/>
4910 <xsl:text> </xsl:text>
4913 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4917 select="marc:datafield[@tag=034][marc:subfield[@code='d' or @code='e' or @code='f' or @code='g']]">
4921 <xsl:call-template name="subfieldSelect">
4922 <xsl:with-param name="codes">defg</xsl:with-param>
4923 </xsl:call-template>
4928 <xsl:for-each select="marc:datafield[@tag=043]">
4930 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
4932 <xsl:attribute name="authority">
4933 <xsl:if test="@code='a'">
4934 <xsl:text>marcgac</xsl:text>
4936 <xsl:if test="@code='b'">
4937 <xsl:value-of select="following-sibling::marc:subfield[@code=2]"/>
4939 <xsl:if test="@code='c'">
4940 <xsl:text>iso3166</xsl:text>
4943 <xsl:value-of select="self::marc:subfield"/>
4948 <!-- tmee 2006/11/27 -->
4949 <xsl:for-each select="marc:datafield[@tag=255]">
4951 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
4953 <xsl:if test="@code='a'">
4955 <xsl:value-of select="."/>
4958 <xsl:if test="@code='b'">
4960 <xsl:value-of select="."/>
4963 <xsl:if test="@code='c'">
4965 <xsl:value-of select="."/>
4973 <xsl:apply-templates select="marc:datafield[653 >= @tag and @tag >= 600]"/>
4974 <xsl:apply-templates select="marc:datafield[@tag=656]"/>
4975 <xsl:for-each select="marc:datafield[@tag=752 or @tag=662]">
4977 <hierarchicalGeographic>
4978 <xsl:for-each select="marc:subfield[@code='a']">
4980 <xsl:call-template name="chopPunctuation">
4981 <xsl:with-param name="chopString" select="."/>
4982 </xsl:call-template>
4985 <xsl:for-each select="marc:subfield[@code='b']">
4987 <xsl:call-template name="chopPunctuation">
4988 <xsl:with-param name="chopString" select="."/>
4989 </xsl:call-template>
4992 <xsl:for-each select="marc:subfield[@code='c']">
4994 <xsl:call-template name="chopPunctuation">
4995 <xsl:with-param name="chopString" select="."/>
4996 </xsl:call-template>
4999 <xsl:for-each select="marc:subfield[@code='d']">
5001 <xsl:call-template name="chopPunctuation">
5002 <xsl:with-param name="chopString" select="."/>
5003 </xsl:call-template>
5006 <xsl:for-each select="marc:subfield[@code='e']">
5008 <xsl:call-template name="chopPunctuation">
5009 <xsl:with-param name="chopString" select="."/>
5010 </xsl:call-template>
5013 <xsl:for-each select="marc:subfield[@code='g']">
5015 <xsl:call-template name="chopPunctuation">
5016 <xsl:with-param name="chopString" select="."/>
5017 </xsl:call-template>
5020 <xsl:for-each select="marc:subfield[@code='h']">
5021 <extraterrestrialArea>
5022 <xsl:call-template name="chopPunctuation">
5023 <xsl:with-param name="chopString" select="."/>
5024 </xsl:call-template>
5025 </extraterrestrialArea>
5027 </hierarchicalGeographic>
5030 <xsl:for-each select="marc:datafield[@tag=045][marc:subfield[@code='b']]">
5033 <xsl:when test="@ind1=2">
5034 <temporal encoding="iso8601" point="start">
5035 <xsl:call-template name="chopPunctuation">
5036 <xsl:with-param name="chopString">
5037 <xsl:value-of select="marc:subfield[@code='b'][1]"/>
5039 </xsl:call-template>
5041 <temporal encoding="iso8601" point="end">
5042 <xsl:call-template name="chopPunctuation">
5043 <xsl:with-param name="chopString">
5044 <xsl:value-of select="marc:subfield[@code='b'][2]"/>
5046 </xsl:call-template>
5050 <xsl:for-each select="marc:subfield[@code='b']">
5051 <temporal encoding="iso8601">
5052 <xsl:call-template name="chopPunctuation">
5053 <xsl:with-param name="chopString" select="."/>
5054 </xsl:call-template>
5061 <xsl:for-each select="marc:datafield[@tag=050]">
5062 <xsl:for-each select="marc:subfield[@code='b']">
5063 <classification authority="lcc">
5064 <xsl:if test="../marc:subfield[@code='3']">
5065 <xsl:attribute name="displayLabel">
5066 <xsl:value-of select="../marc:subfield[@code='3']"/>
5069 <xsl:value-of select="preceding-sibling::marc:subfield[@code='a'][1]"/>
5070 <xsl:text> </xsl:text>
5071 <xsl:value-of select="text()"/>
5075 select="marc:subfield[@code='a'][not(following-sibling::marc:subfield[@code='b'])]">
5076 <classification authority="lcc">
5077 <xsl:if test="../marc:subfield[@code='3']">
5078 <xsl:attribute name="displayLabel">
5079 <xsl:value-of select="../marc:subfield[@code='3']"/>
5082 <xsl:value-of select="text()"/>
5086 <xsl:for-each select="marc:datafield[@tag=082]">
5087 <classification authority="ddc">
5088 <xsl:if test="marc:subfield[@code='2']">
5089 <xsl:attribute name="edition">
5090 <xsl:value-of select="marc:subfield[@code='2']"/>
5093 <xsl:call-template name="subfieldSelect">
5094 <xsl:with-param name="codes">ab</xsl:with-param>
5095 </xsl:call-template>
5098 <xsl:for-each select="marc:datafield[@tag=080]">
5099 <classification authority="udc">
5100 <xsl:call-template name="subfieldSelect">
5101 <xsl:with-param name="codes">abx</xsl:with-param>
5102 </xsl:call-template>
5105 <xsl:for-each select="marc:datafield[@tag=060]">
5106 <classification authority="nlm">
5107 <xsl:call-template name="subfieldSelect">
5108 <xsl:with-param name="codes">ab</xsl:with-param>
5109 </xsl:call-template>
5112 <xsl:for-each select="marc:datafield[@tag=086][@ind1=0]">
5113 <classification authority="sudocs">
5114 <xsl:value-of select="marc:subfield[@code='a']"/>
5117 <xsl:for-each select="marc:datafield[@tag=086][@ind1=1]">
5118 <classification authority="candoc">
5119 <xsl:value-of select="marc:subfield[@code='a']"/>
5122 <xsl:for-each select="marc:datafield[@tag=086]">
5124 <xsl:attribute name="authority">
5125 <xsl:value-of select="marc:subfield[@code='2']"/>
5127 <xsl:value-of select="marc:subfield[@code='a']"/>
5130 <xsl:for-each select="marc:datafield[@tag=084]">
5132 <xsl:attribute name="authority">
5133 <xsl:value-of select="marc:subfield[@code='2']"/>
5135 <xsl:call-template name="subfieldSelect">
5136 <xsl:with-param name="codes">ab</xsl:with-param>
5137 </xsl:call-template>
5140 <xsl:for-each select="marc:datafield[@tag=440]">
5141 <relatedItem type="series">
5144 <xsl:call-template name="chopPunctuation">
5145 <xsl:with-param name="chopString">
5146 <xsl:call-template name="subfieldSelect">
5147 <xsl:with-param name="codes">av</xsl:with-param>
5148 </xsl:call-template>
5150 </xsl:call-template>
5152 <xsl:call-template name="part"/>
5156 <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
5157 <relatedItem type="series">
5160 <xsl:call-template name="chopPunctuation">
5161 <xsl:with-param name="chopString">
5162 <xsl:call-template name="subfieldSelect">
5163 <xsl:with-param name="codes">av</xsl:with-param>
5164 </xsl:call-template>
5166 </xsl:call-template>
5168 <xsl:call-template name="part"/>
5172 <xsl:for-each select="marc:datafield[@tag=510]">
5173 <relatedItem type="isReferencedBy">
5175 <xsl:call-template name="subfieldSelect">
5176 <xsl:with-param name="codes">abcx3</xsl:with-param>
5177 </xsl:call-template>
5181 <xsl:for-each select="marc:datafield[@tag=534]">
5182 <relatedItem type="original">
5183 <xsl:call-template name="relatedTitle"/>
5184 <xsl:call-template name="relatedName"/>
5185 <xsl:if test="marc:subfield[@code='b' or @code='c']">
5187 <xsl:for-each select="marc:subfield[@code='c']">
5189 <xsl:value-of select="."/>
5192 <xsl:for-each select="marc:subfield[@code='b']">
5194 <xsl:value-of select="."/>
5199 <xsl:call-template name="relatedIdentifierISSN"/>
5200 <xsl:for-each select="marc:subfield[@code='z']">
5201 <identifier type="isbn">
5202 <xsl:value-of select="."/>
5205 <xsl:call-template name="relatedNote"/>
5208 <xsl:for-each select="marc:datafield[@tag=700][marc:subfield[@code='t']]">
5210 <xsl:call-template name="constituentOrRelatedType"/>
5213 <xsl:call-template name="chopPunctuation">
5214 <xsl:with-param name="chopString">
5215 <xsl:call-template name="specialSubfieldSelect">
5216 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5217 <xsl:with-param name="axis">t</xsl:with-param>
5218 <xsl:with-param name="afterCodes">g</xsl:with-param>
5219 </xsl:call-template>
5221 </xsl:call-template>
5223 <xsl:call-template name="part"/>
5225 <name type="personal">
5227 <xsl:call-template name="specialSubfieldSelect">
5228 <xsl:with-param name="anyCodes">aq</xsl:with-param>
5229 <xsl:with-param name="axis">t</xsl:with-param>
5230 <xsl:with-param name="beforeCodes">g</xsl:with-param>
5231 </xsl:call-template>
5233 <xsl:call-template name="termsOfAddress"/>
5234 <xsl:call-template name="nameDate"/>
5235 <xsl:call-template name="role"/>
5237 <xsl:call-template name="relatedForm"/>
5238 <xsl:call-template name="relatedIdentifierISSN"/>
5241 <xsl:for-each select="marc:datafield[@tag=710][marc:subfield[@code='t']]">
5243 <xsl:call-template name="constituentOrRelatedType"/>
5246 <xsl:call-template name="chopPunctuation">
5247 <xsl:with-param name="chopString">
5248 <xsl:call-template name="specialSubfieldSelect">
5249 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5250 <xsl:with-param name="axis">t</xsl:with-param>
5251 <xsl:with-param name="afterCodes">dg</xsl:with-param>
5252 </xsl:call-template>
5254 </xsl:call-template>
5256 <xsl:call-template name="relatedPartNumName"/>
5258 <name type="corporate">
5259 <xsl:for-each select="marc:subfield[@code='a']">
5261 <xsl:value-of select="."/>
5264 <xsl:for-each select="marc:subfield[@code='b']">
5266 <xsl:value-of select="."/>
5269 <xsl:variable name="tempNamePart">
5270 <xsl:call-template name="specialSubfieldSelect">
5271 <xsl:with-param name="anyCodes">c</xsl:with-param>
5272 <xsl:with-param name="axis">t</xsl:with-param>
5273 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
5274 </xsl:call-template>
5276 <xsl:if test="normalize-space($tempNamePart)">
5278 <xsl:value-of select="$tempNamePart"/>
5281 <xsl:call-template name="role"/>
5283 <xsl:call-template name="relatedForm"/>
5284 <xsl:call-template name="relatedIdentifierISSN"/>
5287 <xsl:for-each select="marc:datafield[@tag=711][marc:subfield[@code='t']]">
5289 <xsl:call-template name="constituentOrRelatedType"/>
5292 <xsl:call-template name="chopPunctuation">
5293 <xsl:with-param name="chopString">
5294 <xsl:call-template name="specialSubfieldSelect">
5295 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
5296 <xsl:with-param name="axis">t</xsl:with-param>
5297 <xsl:with-param name="afterCodes">g</xsl:with-param>
5298 </xsl:call-template>
5300 </xsl:call-template>
5302 <xsl:call-template name="relatedPartNumName"/>
5304 <name type="conference">
5306 <xsl:call-template name="specialSubfieldSelect">
5307 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
5308 <xsl:with-param name="axis">t</xsl:with-param>
5309 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
5310 </xsl:call-template>
5313 <xsl:call-template name="relatedForm"/>
5314 <xsl:call-template name="relatedIdentifierISSN"/>
5317 <xsl:for-each select="marc:datafield[@tag=730][@ind2=2]">
5319 <xsl:call-template name="constituentOrRelatedType"/>
5322 <xsl:call-template name="chopPunctuation">
5323 <xsl:with-param name="chopString">
5324 <xsl:call-template name="subfieldSelect">
5325 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
5326 </xsl:call-template>
5328 </xsl:call-template>
5330 <xsl:call-template name="part"/>
5332 <xsl:call-template name="relatedForm"/>
5333 <xsl:call-template name="relatedIdentifierISSN"/>
5336 <xsl:for-each select="marc:datafield[@tag=740][@ind2=2]">
5338 <xsl:call-template name="constituentOrRelatedType"/>
5341 <xsl:call-template name="chopPunctuation">
5342 <xsl:with-param name="chopString">
5343 <xsl:value-of select="marc:subfield[@code='a']"/>
5345 </xsl:call-template>
5347 <xsl:call-template name="part"/>
5349 <xsl:call-template name="relatedForm"/>
5352 <xsl:for-each select="marc:datafield[@tag=760]|marc:datafield[@tag=762]">
5353 <relatedItem type="series">
5354 <xsl:call-template name="relatedItem76X-78X"/>
5358 select="marc:datafield[@tag=765]|marc:datafield[@tag=767]|marc:datafield[@tag=777]|marc:datafield[@tag=787]">
5360 <xsl:call-template name="relatedItem76X-78X"/>
5363 <xsl:for-each select="marc:datafield[@tag=775]">
5364 <relatedItem type="otherVersion">
5365 <xsl:call-template name="relatedItem76X-78X"/>
5368 <xsl:for-each select="marc:datafield[@tag=770]|marc:datafield[@tag=774]">
5369 <relatedItem type="constituent">
5370 <xsl:call-template name="relatedItem76X-78X"/>
5373 <xsl:for-each select="marc:datafield[@tag=772]|marc:datafield[@tag=773]">
5374 <relatedItem type="host">
5375 <xsl:call-template name="relatedItem76X-78X"/>
5378 <xsl:for-each select="marc:datafield[@tag=776]">
5379 <relatedItem type="otherFormat">
5380 <xsl:call-template name="relatedItem76X-78X"/>
5383 <xsl:for-each select="marc:datafield[@tag=780]">
5384 <relatedItem type="preceding">
5385 <xsl:call-template name="relatedItem76X-78X"/>
5388 <xsl:for-each select="marc:datafield[@tag=785]">
5389 <relatedItem type="succeeding">
5390 <xsl:call-template name="relatedItem76X-78X"/>
5393 <xsl:for-each select="marc:datafield[@tag=786]">
5394 <relatedItem type="original">
5395 <xsl:call-template name="relatedItem76X-78X"/>
5398 <xsl:for-each select="marc:datafield[@tag=800]">
5399 <relatedItem type="series">
5402 <xsl:call-template name="chopPunctuation">
5403 <xsl:with-param name="chopString">
5404 <xsl:call-template name="specialSubfieldSelect">
5405 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5406 <xsl:with-param name="axis">t</xsl:with-param>
5407 <xsl:with-param name="afterCodes">g</xsl:with-param>
5408 </xsl:call-template>
5410 </xsl:call-template>
5412 <xsl:call-template name="part"/>
5414 <name type="personal">
5416 <xsl:call-template name="chopPunctuation">
5417 <xsl:with-param name="chopString">
5418 <xsl:call-template name="specialSubfieldSelect">
5419 <xsl:with-param name="anyCodes">aq</xsl:with-param>
5420 <xsl:with-param name="axis">t</xsl:with-param>
5421 <xsl:with-param name="beforeCodes">g</xsl:with-param>
5422 </xsl:call-template>
5424 </xsl:call-template>
5426 <xsl:call-template name="termsOfAddress"/>
5427 <xsl:call-template name="nameDate"/>
5428 <xsl:call-template name="role"/>
5430 <xsl:call-template name="relatedForm"/>
5433 <xsl:for-each select="marc:datafield[@tag=810]">
5434 <relatedItem type="series">
5437 <xsl:call-template name="chopPunctuation">
5438 <xsl:with-param name="chopString">
5439 <xsl:call-template name="specialSubfieldSelect">
5440 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5441 <xsl:with-param name="axis">t</xsl:with-param>
5442 <xsl:with-param name="afterCodes">dg</xsl:with-param>
5443 </xsl:call-template>
5445 </xsl:call-template>
5447 <xsl:call-template name="relatedPartNumName"/>
5449 <name type="corporate">
5450 <xsl:for-each select="marc:subfield[@code='a']">
5452 <xsl:value-of select="."/>
5455 <xsl:for-each select="marc:subfield[@code='b']">
5457 <xsl:value-of select="."/>
5461 <xsl:call-template name="specialSubfieldSelect">
5462 <xsl:with-param name="anyCodes">c</xsl:with-param>
5463 <xsl:with-param name="axis">t</xsl:with-param>
5464 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
5465 </xsl:call-template>
5467 <xsl:call-template name="role"/>
5469 <xsl:call-template name="relatedForm"/>
5472 <xsl:for-each select="marc:datafield[@tag=811]">
5473 <relatedItem type="series">
5476 <xsl:call-template name="chopPunctuation">
5477 <xsl:with-param name="chopString">
5478 <xsl:call-template name="specialSubfieldSelect">
5479 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
5480 <xsl:with-param name="axis">t</xsl:with-param>
5481 <xsl:with-param name="afterCodes">g</xsl:with-param>
5482 </xsl:call-template>
5484 </xsl:call-template>
5486 <xsl:call-template name="relatedPartNumName"/>
5488 <name type="conference">
5490 <xsl:call-template name="specialSubfieldSelect">
5491 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
5492 <xsl:with-param name="axis">t</xsl:with-param>
5493 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
5494 </xsl:call-template>
5496 <xsl:call-template name="role"/>
5498 <xsl:call-template name="relatedForm"/>
5501 <xsl:for-each select="marc:datafield[@tag='830']">
5502 <relatedItem type="series">
5505 <xsl:call-template name="chopPunctuation">
5506 <xsl:with-param name="chopString">
5507 <xsl:call-template name="subfieldSelect">
5508 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
5509 </xsl:call-template>
5511 </xsl:call-template>
5513 <xsl:call-template name="part"/>
5515 <xsl:call-template name="relatedForm"/>
5518 <xsl:for-each select="marc:datafield[@tag='856'][@ind2='2']/marc:subfield[@code='q']">
5521 <xsl:value-of select="."/>
5522 </internetMediaType>
5525 <xsl:for-each select="marc:datafield[@tag='020']">
5526 <xsl:call-template name="isInvalid">
5527 <xsl:with-param name="type">isbn</xsl:with-param>
5528 </xsl:call-template>
5529 <xsl:if test="marc:subfield[@code='a']">
5530 <identifier type="isbn">
5531 <xsl:value-of select="marc:subfield[@code='a']"/>
5535 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='0']">
5536 <xsl:call-template name="isInvalid">
5537 <xsl:with-param name="type">isrc</xsl:with-param>
5538 </xsl:call-template>
5539 <xsl:if test="marc:subfield[@code='a']">
5540 <identifier type="isrc">
5541 <xsl:value-of select="marc:subfield[@code='a']"/>
5545 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='2']">
5546 <xsl:call-template name="isInvalid">
5547 <xsl:with-param name="type">ismn</xsl:with-param>
5548 </xsl:call-template>
5549 <xsl:if test="marc:subfield[@code='a']">
5550 <identifier type="ismn">
5551 <xsl:value-of select="marc:subfield[@code='a']"/>
5555 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='4']">
5556 <xsl:call-template name="isInvalid">
5557 <xsl:with-param name="type">sici</xsl:with-param>
5558 </xsl:call-template>
5559 <identifier type="sici">
5560 <xsl:call-template name="subfieldSelect">
5561 <xsl:with-param name="codes">ab</xsl:with-param>
5562 </xsl:call-template>
5565 <xsl:for-each select="marc:datafield[@tag='022']">
5566 <xsl:if test="marc:subfield[@code='a']">
5567 <xsl:call-template name="isInvalid">
5568 <xsl:with-param name="type">issn</xsl:with-param>
5569 </xsl:call-template>
5570 <identifier type="issn">
5571 <xsl:value-of select="marc:subfield[@code='a']"/>
5574 <xsl:if test="marc:subfield[@code='l']">
5575 <xsl:call-template name="isInvalid">
5576 <xsl:with-param name="type">issn-l</xsl:with-param>
5577 </xsl:call-template>
5578 <identifier type="issn-l">
5579 <xsl:value-of select="marc:subfield[@code='l']"/>
5586 <xsl:for-each select="marc:datafield[@tag='010']">
5587 <xsl:call-template name="isInvalid">
5588 <xsl:with-param name="type">lccn</xsl:with-param>
5589 </xsl:call-template>
5590 <identifier type="lccn">
5591 <xsl:value-of select="normalize-space(marc:subfield[@code='a'])"/>
5594 <xsl:for-each select="marc:datafield[@tag='028']">
5596 <xsl:attribute name="type">
5598 <xsl:when test="@ind1='0'">issue number</xsl:when>
5599 <xsl:when test="@ind1='1'">matrix number</xsl:when>
5600 <xsl:when test="@ind1='2'">music plate</xsl:when>
5601 <xsl:when test="@ind1='3'">music publisher</xsl:when>
5602 <xsl:when test="@ind1='4'">videorecording identifier</xsl:when>
5605 <!--<xsl:call-template name="isInvalid"/>-->
5606 <!-- no $z in 028 -->
5607 <xsl:call-template name="subfieldSelect">
5608 <xsl:with-param name="codes">
5610 <xsl:when test="@ind1='0'">ba</xsl:when>
5611 <xsl:otherwise>ab</xsl:otherwise>
5614 </xsl:call-template>
5617 <xsl:for-each select="marc:datafield[@tag='037']">
5618 <identifier type="stock number">
5619 <!--<xsl:call-template name="isInvalid"/>-->
5620 <!-- no $z in 037 -->
5621 <xsl:call-template name="subfieldSelect">
5622 <xsl:with-param name="codes">ab</xsl:with-param>
5623 </xsl:call-template>
5626 <xsl:for-each select="marc:datafield[@tag='856'][marc:subfield[@code='u']]">
5628 <xsl:attribute name="type">
5631 test="starts-with(marc:subfield[@code='u'],'urn:doi') or starts-with(marc:subfield[@code='u'],'doi')"
5634 test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl') or starts-with(marc:subfield[@code='u'],'http://hdl.loc.gov')"
5636 <xsl:otherwise>uri</xsl:otherwise>
5641 test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl') or starts-with(marc:subfield[@code='u'],'http://hdl.loc.gov') ">
5643 select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"
5647 <xsl:value-of select="marc:subfield[@code='u']"/>
5652 test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl')">
5653 <identifier type="hdl">
5654 <xsl:if test="marc:subfield[@code='y' or @code='3' or @code='z']">
5655 <xsl:attribute name="displayLabel">
5656 <xsl:call-template name="subfieldSelect">
5657 <xsl:with-param name="codes">y3z</xsl:with-param>
5658 </xsl:call-template>
5662 select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"
5667 <xsl:for-each select="marc:datafield[@tag=024][@ind1=1]">
5668 <identifier type="upc">
5669 <xsl:call-template name="isInvalid"/>
5670 <xsl:value-of select="marc:subfield[@code='a']"/>
5674 <!-- 1/04 fix added $y -->
5677 <xsl:for-each select="marc:datafield[@tag=856][@ind2=1][marc:subfield[@code='u']]">
5678 <relatedItem type="otherVersion">
5681 <xsl:if test="marc:subfield[@code='y' or @code='3']">
5682 <xsl:attribute name="displayLabel">
5683 <xsl:call-template name="subfieldSelect">
5684 <xsl:with-param name="codes">y3</xsl:with-param>
5685 </xsl:call-template>
5688 <xsl:if test="marc:subfield[@code='z' ]">
5689 <xsl:attribute name="note">
5690 <xsl:call-template name="subfieldSelect">
5691 <xsl:with-param name="codes">z</xsl:with-param>
5692 </xsl:call-template>
5695 <xsl:value-of select="marc:subfield[@code='u']"/>
5700 <xsl:for-each select="marc:datafield[@tag=856][@ind2=2][marc:subfield[@code='u']]">
5704 <xsl:if test="marc:subfield[@code='y' or @code='3']">
5705 <xsl:attribute name="displayLabel">
5706 <xsl:call-template name="subfieldSelect">
5707 <xsl:with-param name="codes">y3</xsl:with-param>
5708 </xsl:call-template>
5711 <xsl:if test="marc:subfield[@code='z' ]">
5712 <xsl:attribute name="note">
5713 <xsl:call-template name="subfieldSelect">
5714 <xsl:with-param name="codes">z</xsl:with-param>
5715 </xsl:call-template>
5718 <xsl:value-of select="marc:subfield[@code='u']"/>
5724 <!-- 3.2 change tmee 856z -->
5727 <xsl:for-each select="marc:datafield[@tag=852]">
5729 <xsl:if test="marc:subfield[@code='a' or @code='b' or @code='e']">
5731 <xsl:call-template name="subfieldSelect">
5732 <xsl:with-param name="codes">abe</xsl:with-param>
5733 </xsl:call-template>
5737 <xsl:if test="marc:subfield[@code='u']">
5739 <xsl:call-template name="uri"/>
5740 <xsl:call-template name="subfieldSelect">
5741 <xsl:with-param name="codes">u</xsl:with-param>
5742 </xsl:call-template>
5747 test="marc:subfield[@code='h' or @code='i' or @code='j' or @code='k' or @code='l' or @code='m' or @code='t']">
5749 <xsl:call-template name="subfieldSelect">
5750 <xsl:with-param name="codes">hijklmt</xsl:with-param>
5751 </xsl:call-template>
5757 <xsl:for-each select="marc:datafield[@tag=506]">
5758 <accessCondition type="restrictionOnAccess">
5759 <xsl:call-template name="subfieldSelect">
5760 <xsl:with-param name="codes">abcd35</xsl:with-param>
5761 </xsl:call-template>
5764 <xsl:for-each select="marc:datafield[@tag=540]">
5765 <accessCondition type="useAndReproduction">
5766 <xsl:call-template name="subfieldSelect">
5767 <xsl:with-param name="codes">abcde35</xsl:with-param>
5768 </xsl:call-template>
5776 <xsl:for-each select="marc:leader[substring($leader,19,1)='a']">
5777 <descriptionStandard>aacr2</descriptionStandard>
5780 <xsl:for-each select="marc:datafield[@tag=040]">
5781 <xsl:if test="marc:subfield[@code='e']">
5782 <descriptionStandard>
5783 <xsl:value-of select="marc:subfield[@code='e']"/>
5784 </descriptionStandard>
5786 <recordContentSource authority="marcorg">
5787 <xsl:value-of select="marc:subfield[@code='a']"/>
5788 </recordContentSource>
5790 <xsl:for-each select="marc:controlfield[@tag=008]">
5791 <recordCreationDate encoding="marc">
5792 <xsl:value-of select="substring(.,1,6)"/>
5793 </recordCreationDate>
5796 <xsl:for-each select="marc:controlfield[@tag=005]">
5797 <recordChangeDate encoding="iso8601">
5798 <xsl:value-of select="."/>
5801 <xsl:for-each select="marc:controlfield[@tag=001]">
5803 <xsl:if test="../marc:controlfield[@tag=003]">
5804 <xsl:attribute name="source">
5805 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
5808 <xsl:value-of select="."/>
5811 <xsl:for-each select="marc:datafield[@tag=040]/marc:subfield[@code='b']">
5812 <languageOfCataloging>
5813 <languageTerm authority="iso639-2b" type="code">
5814 <xsl:value-of select="."/>
5816 </languageOfCataloging>
5820 <xsl:template name="displayForm">
5821 <xsl:for-each select="marc:subfield[@code='c']">
5823 <xsl:value-of select="."/>
5827 <xsl:template name="affiliation">
5828 <xsl:for-each select="marc:subfield[@code='u']">
5830 <xsl:value-of select="."/>
5834 <xsl:template name="uri">
5835 <xsl:for-each select="marc:subfield[@code='u']">
5836 <xsl:attribute name="xlink:href">
5837 <xsl:value-of select="."/>
5840 <xsl:for-each select="marc:subfield[@code='0']">
5842 <xsl:when test="contains(text(), ')')">
5843 <xsl:attribute name="xlink:href">
5844 <xsl:value-of select="substring-after(text(), ')')"></xsl:value-of>
5848 <xsl:attribute name="xlink:href">
5849 <xsl:value-of select="."></xsl:value-of>
5855 <xsl:template name="role">
5856 <xsl:for-each select="marc:subfield[@code='e']">
5858 <roleTerm type="text">
5859 <xsl:value-of select="."/>
5863 <xsl:for-each select="marc:subfield[@code='4']">
5865 <roleTerm authority="marcrelator" type="code">
5866 <xsl:value-of select="."/>
5871 <xsl:template name="part">
5872 <xsl:variable name="partNumber">
5873 <xsl:call-template name="specialSubfieldSelect">
5874 <xsl:with-param name="axis">n</xsl:with-param>
5875 <xsl:with-param name="anyCodes">n</xsl:with-param>
5876 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5877 </xsl:call-template>
5879 <xsl:variable name="partName">
5880 <xsl:call-template name="specialSubfieldSelect">
5881 <xsl:with-param name="axis">p</xsl:with-param>
5882 <xsl:with-param name="anyCodes">p</xsl:with-param>
5883 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5884 </xsl:call-template>
5886 <xsl:if test="string-length(normalize-space($partNumber))">
5888 <xsl:call-template name="chopPunctuation">
5889 <xsl:with-param name="chopString" select="$partNumber"/>
5890 </xsl:call-template>
5893 <xsl:if test="string-length(normalize-space($partName))">
5895 <xsl:call-template name="chopPunctuation">
5896 <xsl:with-param name="chopString" select="$partName"/>
5897 </xsl:call-template>
5901 <xsl:template name="relatedPart">
5902 <xsl:if test="@tag=773">
5903 <xsl:for-each select="marc:subfield[@code='g']">
5906 <xsl:value-of select="."/>
5910 <xsl:for-each select="marc:subfield[@code='q']">
5912 <xsl:call-template name="parsePart"/>
5917 <xsl:template name="relatedPartNumName">
5918 <xsl:variable name="partNumber">
5919 <xsl:call-template name="specialSubfieldSelect">
5920 <xsl:with-param name="axis">g</xsl:with-param>
5921 <xsl:with-param name="anyCodes">g</xsl:with-param>
5922 <xsl:with-param name="afterCodes">pst</xsl:with-param>
5923 </xsl:call-template>
5925 <xsl:variable name="partName">
5926 <xsl:call-template name="specialSubfieldSelect">
5927 <xsl:with-param name="axis">p</xsl:with-param>
5928 <xsl:with-param name="anyCodes">p</xsl:with-param>
5929 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5930 </xsl:call-template>
5932 <xsl:if test="string-length(normalize-space($partNumber))">
5934 <xsl:value-of select="$partNumber"/>
5937 <xsl:if test="string-length(normalize-space($partName))">
5939 <xsl:value-of select="$partName"/>
5943 <xsl:template name="relatedName">
5944 <xsl:for-each select="marc:subfield[@code='a']">
5947 <xsl:value-of select="."/>
5952 <xsl:template name="relatedForm">
5953 <xsl:for-each select="marc:subfield[@code='h']">
5954 <physicalDescription>
5956 <xsl:value-of select="."/>
5958 </physicalDescription>
5961 <xsl:template name="relatedExtent">
5962 <xsl:for-each select="marc:subfield[@code='h']">
5963 <physicalDescription>
5965 <xsl:value-of select="."/>
5967 </physicalDescription>
5970 <xsl:template name="relatedNote">
5971 <xsl:for-each select="marc:subfield[@code='n']">
5973 <xsl:value-of select="."/>
5977 <xsl:template name="relatedSubject">
5978 <xsl:for-each select="marc:subfield[@code='j']">
5980 <temporal encoding="iso8601">
5981 <xsl:call-template name="chopPunctuation">
5982 <xsl:with-param name="chopString" select="."/>
5983 </xsl:call-template>
5988 <xsl:template name="relatedIdentifierISSN">
5989 <xsl:for-each select="marc:subfield[@code='x']">
5990 <identifier type="issn">
5991 <xsl:value-of select="."/>
5995 <xsl:template name="relatedIdentifierLocal">
5996 <xsl:for-each select="marc:subfield[@code='w']">
5997 <identifier type="local">
5998 <xsl:value-of select="."/>
6002 <xsl:template name="relatedIdentifier">
6003 <xsl:for-each select="marc:subfield[@code='o']">
6005 <xsl:value-of select="."/>
6009 <xsl:template name="relatedItem76X-78X">
6010 <xsl:call-template name="displayLabel"/>
6011 <xsl:call-template name="relatedTitle76X-78X"/>
6012 <xsl:call-template name="relatedName"/>
6013 <xsl:call-template name="relatedOriginInfo"/>
6014 <xsl:call-template name="relatedLanguage"/>
6015 <xsl:call-template name="relatedExtent"/>
6016 <xsl:call-template name="relatedNote"/>
6017 <xsl:call-template name="relatedSubject"/>
6018 <xsl:call-template name="relatedIdentifier"/>
6019 <xsl:call-template name="relatedIdentifierISSN"/>
6020 <xsl:call-template name="relatedIdentifierLocal"/>
6021 <xsl:call-template name="relatedPart"/>
6023 <xsl:template name="subjectGeographicZ">
6025 <xsl:call-template name="chopPunctuation">
6026 <xsl:with-param name="chopString" select="."/>
6027 </xsl:call-template>
6030 <xsl:template name="subjectTemporalY">
6032 <xsl:call-template name="chopPunctuation">
6033 <xsl:with-param name="chopString" select="."/>
6034 </xsl:call-template>
6037 <xsl:template name="subjectTopic">
6039 <xsl:call-template name="chopPunctuation">
6040 <xsl:with-param name="chopString" select="."/>
6041 </xsl:call-template>
6044 <!-- 3.2 change tmee 6xx $v genre -->
6045 <xsl:template name="subjectGenre">
6047 <xsl:call-template name="chopPunctuation">
6048 <xsl:with-param name="chopString" select="."/>
6049 </xsl:call-template>
6053 <xsl:template name="nameABCDN">
6054 <xsl:for-each select="marc:subfield[@code='a']">
6056 <xsl:call-template name="chopPunctuation">
6057 <xsl:with-param name="chopString" select="."/>
6058 </xsl:call-template>
6061 <xsl:for-each select="marc:subfield[@code='b']">
6063 <xsl:value-of select="."/>
6067 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
6069 <xsl:call-template name="subfieldSelect">
6070 <xsl:with-param name="codes">cdn</xsl:with-param>
6071 </xsl:call-template>
6075 <xsl:template name="nameABCDQ">
6077 <xsl:call-template name="chopPunctuation">
6078 <xsl:with-param name="chopString">
6079 <xsl:call-template name="subfieldSelect">
6080 <xsl:with-param name="codes">aq</xsl:with-param>
6081 </xsl:call-template>
6083 <xsl:with-param name="punctuation">
6084 <xsl:text>:,;/ </xsl:text>
6086 </xsl:call-template>
6088 <xsl:call-template name="termsOfAddress"/>
6089 <xsl:call-template name="nameDate"/>
6091 <xsl:template name="nameACDEQ">
6093 <xsl:call-template name="subfieldSelect">
6094 <xsl:with-param name="codes">acdeq</xsl:with-param>
6095 </xsl:call-template>
6098 <xsl:template name="constituentOrRelatedType">
6099 <xsl:if test="@ind2=2">
6100 <xsl:attribute name="type">constituent</xsl:attribute>
6103 <xsl:template name="relatedTitle">
6104 <xsl:for-each select="marc:subfield[@code='t']">
6107 <xsl:call-template name="chopPunctuation">
6108 <xsl:with-param name="chopString">
6109 <xsl:value-of select="."/>
6111 </xsl:call-template>
6116 <xsl:template name="relatedTitle76X-78X">
6117 <xsl:for-each select="marc:subfield[@code='t']">
6120 <xsl:call-template name="chopPunctuation">
6121 <xsl:with-param name="chopString">
6122 <xsl:value-of select="."/>
6124 </xsl:call-template>
6126 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6127 <xsl:call-template name="relatedPartNumName"/>
6131 <xsl:for-each select="marc:subfield[@code='p']">
6132 <titleInfo type="abbreviated">
6134 <xsl:call-template name="chopPunctuation">
6135 <xsl:with-param name="chopString">
6136 <xsl:value-of select="."/>
6138 </xsl:call-template>
6140 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6141 <xsl:call-template name="relatedPartNumName"/>
6145 <xsl:for-each select="marc:subfield[@code='s']">
6146 <titleInfo type="uniform">
6148 <xsl:call-template name="chopPunctuation">
6149 <xsl:with-param name="chopString">
6150 <xsl:value-of select="."/>
6152 </xsl:call-template>
6154 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6155 <xsl:call-template name="relatedPartNumName"/>
6160 <xsl:template name="relatedOriginInfo">
6161 <xsl:if test="marc:subfield[@code='b' or @code='d'] or marc:subfield[@code='f']">
6163 <xsl:if test="@tag=775">
6164 <xsl:for-each select="marc:subfield[@code='f']">
6167 <xsl:attribute name="type">code</xsl:attribute>
6168 <xsl:attribute name="authority">marcgac</xsl:attribute>
6169 <xsl:value-of select="."/>
6174 <xsl:for-each select="marc:subfield[@code='d']">
6176 <xsl:value-of select="."/>
6179 <xsl:for-each select="marc:subfield[@code='b']">
6181 <xsl:value-of select="."/>
6187 <xsl:template name="relatedLanguage">
6188 <xsl:for-each select="marc:subfield[@code='e']">
6189 <xsl:call-template name="getLanguage">
6190 <xsl:with-param name="langString">
6191 <xsl:value-of select="."/>
6193 </xsl:call-template>
6196 <xsl:template name="nameDate">
6197 <xsl:for-each select="marc:subfield[@code='d']">
6198 <namePart type="date">
6199 <xsl:call-template name="chopPunctuation">
6200 <xsl:with-param name="chopString" select="."/>
6201 </xsl:call-template>
6205 <xsl:template name="subjectAuthority">
6206 <xsl:if test="@ind2!=4">
6207 <xsl:if test="@ind2!=' '">
6208 <xsl:if test="@ind2!=8">
6209 <xsl:if test="@ind2!=9">
6210 <xsl:attribute name="authority">
6212 <xsl:when test="@ind2=0">lcsh</xsl:when>
6213 <xsl:when test="@ind2=1">lcshac</xsl:when>
6214 <xsl:when test="@ind2=2">mesh</xsl:when>
6216 <xsl:when test="@ind2=3">nal</xsl:when>
6217 <xsl:when test="@ind2=5">csh</xsl:when>
6218 <xsl:when test="@ind2=6">rvm</xsl:when>
6219 <xsl:when test="@ind2=7">
6220 <xsl:value-of select="marc:subfield[@code='2']"/>
6229 <xsl:template name="subjectAnyOrder">
6230 <xsl:for-each select="marc:subfield[@code='v' or @code='x' or @code='y' or @code='z']">
6232 <xsl:when test="@code='v'">
6233 <xsl:call-template name="subjectGenre"/>
6235 <xsl:when test="@code='x'">
6236 <xsl:call-template name="subjectTopic"/>
6238 <xsl:when test="@code='y'">
6239 <xsl:call-template name="subjectTemporalY"/>
6241 <xsl:when test="@code='z'">
6242 <xsl:call-template name="subjectGeographicZ"/>
6247 <xsl:template name="specialSubfieldSelect">
6248 <xsl:param name="anyCodes"/>
6249 <xsl:param name="axis"/>
6250 <xsl:param name="beforeCodes"/>
6251 <xsl:param name="afterCodes"/>
6252 <xsl:variable name="str">
6253 <xsl:for-each select="marc:subfield">
6255 test="contains($anyCodes, @code) or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis]) or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
6256 <xsl:value-of select="text()"/>
6257 <xsl:text> </xsl:text>
6261 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
6264 <!-- 3.2 change tmee 6xx $v genre -->
6265 <xsl:template match="marc:datafield[@tag=600]">
6267 <xsl:call-template name="subjectAuthority"/>
6268 <name type="personal">
6269 <xsl:call-template name="termsOfAddress"/>
6271 <xsl:call-template name="chopPunctuation">
6272 <xsl:with-param name="chopString">
6273 <xsl:call-template name="subfieldSelect">
6274 <xsl:with-param name="codes">aq</xsl:with-param>
6275 </xsl:call-template>
6277 </xsl:call-template>
6279 <xsl:call-template name="nameDate"/>
6280 <xsl:call-template name="affiliation"/>
6281 <xsl:call-template name="role"/>
6283 <xsl:call-template name="subjectAnyOrder"/>
6286 <xsl:template match="marc:datafield[@tag=610]">
6288 <xsl:call-template name="subjectAuthority"/>
6289 <name type="corporate">
6290 <xsl:for-each select="marc:subfield[@code='a']">
6292 <xsl:value-of select="."/>
6295 <xsl:for-each select="marc:subfield[@code='b']">
6297 <xsl:value-of select="."/>
6300 <xsl:if test="marc:subfield[@code='c' or @code='d' or @code='n' or @code='p']">
6302 <xsl:call-template name="subfieldSelect">
6303 <xsl:with-param name="codes">cdnp</xsl:with-param>
6304 </xsl:call-template>
6307 <xsl:call-template name="role"/>
6309 <xsl:call-template name="subjectAnyOrder"/>
6312 <xsl:template match="marc:datafield[@tag=611]">
6314 <xsl:call-template name="subjectAuthority"/>
6315 <name type="conference">
6317 <xsl:call-template name="subfieldSelect">
6318 <xsl:with-param name="codes">abcdeqnp</xsl:with-param>
6319 </xsl:call-template>
6321 <xsl:for-each select="marc:subfield[@code='4']">
6323 <roleTerm authority="marcrelator" type="code">
6324 <xsl:value-of select="."/>
6329 <xsl:call-template name="subjectAnyOrder"/>
6332 <xsl:template match="marc:datafield[@tag=630]">
6334 <xsl:call-template name="subjectAuthority"/>
6337 <xsl:call-template name="chopPunctuation">
6338 <xsl:with-param name="chopString">
6339 <xsl:call-template name="subfieldSelect">
6340 <xsl:with-param name="codes">adfhklor</xsl:with-param>
6341 </xsl:call-template>
6343 </xsl:call-template>
6345 <xsl:call-template name="part"/>
6347 <xsl:call-template name="subjectAnyOrder"/>
6350 <!-- 1.27 648 tmee-->
6351 <xsl:template match="marc:datafield[@tag=648]">
6353 <xsl:if test="marc:subfield[@code=2]">
6354 <xsl:attribute name="authority">
6355 <xsl:value-of select="marc:subfield[@code=2]"/>
6358 <xsl:call-template name="uri"/>
6360 <xsl:call-template name="subjectAuthority"/>
6362 <xsl:call-template name="chopPunctuation">
6363 <xsl:with-param name="chopString">
6364 <xsl:call-template name="subfieldSelect">
6365 <xsl:with-param name="codes">abcd</xsl:with-param>
6366 </xsl:call-template>
6368 </xsl:call-template>
6370 <xsl:call-template name="subjectAnyOrder"/>
6374 <xsl:template match="marc:datafield[@tag=650]">
6376 <xsl:call-template name="subjectAuthority"/>
6378 <xsl:call-template name="chopPunctuation">
6379 <xsl:with-param name="chopString">
6380 <xsl:call-template name="subfieldSelect">
6381 <xsl:with-param name="codes">abcd</xsl:with-param>
6382 </xsl:call-template>
6384 </xsl:call-template>
6386 <xsl:call-template name="subjectAnyOrder"/>
6389 <xsl:template match="marc:datafield[@tag=651]">
6391 <xsl:call-template name="subjectAuthority"/>
6392 <xsl:for-each select="marc:subfield[@code='a']">
6394 <xsl:call-template name="chopPunctuation">
6395 <xsl:with-param name="chopString" select="."/>
6396 </xsl:call-template>
6399 <xsl:call-template name="subjectAnyOrder"/>
6402 <xsl:template match="marc:datafield[@tag=653]">
6404 <xsl:for-each select="marc:subfield[@code='a']">
6406 <xsl:value-of select="."/>
6411 <xsl:template match="marc:datafield[@tag=656]">
6413 <xsl:if test="marc:subfield[@code=2]">
6414 <xsl:attribute name="authority">
6415 <xsl:value-of select="marc:subfield[@code=2]"/>
6419 <xsl:call-template name="chopPunctuation">
6420 <xsl:with-param name="chopString">
6421 <xsl:value-of select="marc:subfield[@code='a']"/>
6423 </xsl:call-template>
6427 <xsl:template name="termsOfAddress">
6428 <xsl:if test="marc:subfield[@code='b' or @code='c']">
6429 <namePart type="termsOfAddress">
6430 <xsl:call-template name="chopPunctuation">
6431 <xsl:with-param name="chopString">
6432 <xsl:call-template name="subfieldSelect">
6433 <xsl:with-param name="codes">bc</xsl:with-param>
6434 </xsl:call-template>
6436 </xsl:call-template>
6440 <xsl:template name="displayLabel">
6441 <xsl:if test="marc:subfield[@code='i']">
6442 <xsl:attribute name="displayLabel">
6443 <xsl:value-of select="marc:subfield[@code='i']"/>
6446 <xsl:if test="marc:subfield[@code='3']">
6447 <xsl:attribute name="displayLabel">
6448 <xsl:value-of select="marc:subfield[@code='3']"/>
6452 <xsl:template name="isInvalid">
6453 <xsl:param name="type"/>
6455 test="marc:subfield[@code='z'] or marc:subfield[@code='y'] or marc:subfield[@code='m']">
6457 <xsl:attribute name="type">
6458 <xsl:value-of select="$type"/>
6460 <xsl:attribute name="invalid">
6461 <xsl:text>yes</xsl:text>
6463 <xsl:if test="marc:subfield[@code='z']">
6464 <xsl:value-of select="marc:subfield[@code='z']"/>
6466 <xsl:if test="marc:subfield[@code='y']">
6467 <xsl:value-of select="marc:subfield[@code='y']"/>
6469 <xsl:if test="marc:subfield[@code='m']">
6470 <xsl:value-of select="marc:subfield[@code='m']"/>
6475 <xsl:template name="subtitle">
6476 <xsl:if test="marc:subfield[@code='b']">
6478 <xsl:call-template name="chopPunctuation">
6479 <xsl:with-param name="chopString">
6480 <xsl:value-of select="marc:subfield[@code='b']"/>
6481 <!--<xsl:call-template name="subfieldSelect">
6482 <xsl:with-param name="codes">b</xsl:with-param>
6483 </xsl:call-template>-->
6485 </xsl:call-template>
6489 <xsl:template name="script">
6490 <xsl:param name="scriptCode"/>
6491 <xsl:attribute name="script">
6493 <xsl:when test="$scriptCode='(3'">Arabic</xsl:when>
6494 <xsl:when test="$scriptCode='(B'">Latin</xsl:when>
6495 <xsl:when test="$scriptCode='$1'">Chinese, Japanese, Korean</xsl:when>
6496 <xsl:when test="$scriptCode='(N'">Cyrillic</xsl:when>
6497 <xsl:when test="$scriptCode='(2'">Hebrew</xsl:when>
6498 <xsl:when test="$scriptCode='(S'">Greek</xsl:when>
6502 <xsl:template name="parsePart">
6503 <!-- assumes 773$q= 1:2:3<4
6504 with up to 3 levels and one optional start page
6506 <xsl:variable name="level1">
6508 <xsl:when test="contains(text(),':')">
6510 <xsl:value-of select="substring-before(text(),':')"/>
6512 <xsl:when test="not(contains(text(),':'))">
6514 <xsl:if test="contains(text(),'<')">
6516 <xsl:value-of select="substring-before(text(),'<')"/>
6518 <xsl:if test="not(contains(text(),'<'))">
6520 <xsl:value-of select="text()"/>
6525 <xsl:variable name="sici2">
6527 <xsl:when test="starts-with(substring-after(text(),$level1),':')">
6528 <xsl:value-of select="substring(substring-after(text(),$level1),2)"/>
6531 <xsl:value-of select="substring-after(text(),$level1)"/>
6535 <xsl:variable name="level2">
6537 <xsl:when test="contains($sici2,':')">
6539 <xsl:value-of select="substring-before($sici2,':')"/>
6541 <xsl:when test="contains($sici2,'<')">
6543 <xsl:value-of select="substring-before($sici2,'<')"/>
6546 <xsl:value-of select="$sici2"/>
6551 <xsl:variable name="sici3">
6553 <xsl:when test="starts-with(substring-after($sici2,$level2),':')">
6554 <xsl:value-of select="substring(substring-after($sici2,$level2),2)"/>
6557 <xsl:value-of select="substring-after($sici2,$level2)"/>
6561 <xsl:variable name="level3">
6563 <xsl:when test="contains($sici3,'<')">
6565 <xsl:value-of select="substring-before($sici3,'<')"/>
6568 <xsl:value-of select="$sici3"/>
6573 <xsl:variable name="page">
6574 <xsl:if test="contains(text(),'<')">
6575 <xsl:value-of select="substring-after(text(),'<')"/>
6578 <xsl:if test="$level1">
6581 <xsl:value-of select="$level1"/>
6585 <xsl:if test="$level2">
6588 <xsl:value-of select="$level2"/>
6592 <xsl:if test="$level3">
6595 <xsl:value-of select="$level3"/>
6599 <xsl:if test="$page">
6600 <extent unit="page">
6602 <xsl:value-of select="$page"/>
6607 <xsl:template name="getLanguage">
6608 <xsl:param name="langString"/>
6609 <xsl:param name="controlField008-35-37"/>
6610 <xsl:variable name="length" select="string-length($langString)"/>
6612 <xsl:when test="$length=0"/>
6613 <xsl:when test="$controlField008-35-37=substring($langString,1,3)">
6614 <xsl:call-template name="getLanguage">
6615 <xsl:with-param name="langString" select="substring($langString,4,$length)"/>
6616 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"/>
6617 </xsl:call-template>
6621 <languageTerm authority="iso639-2b" type="code">
6622 <xsl:value-of select="substring($langString,1,3)"/>
6625 <xsl:call-template name="getLanguage">
6626 <xsl:with-param name="langString" select="substring($langString,4,$length)"/>
6627 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"/>
6628 </xsl:call-template>
6632 <xsl:template name="isoLanguage">
6633 <xsl:param name="currentLanguage"/>
6634 <xsl:param name="usedLanguages"/>
6635 <xsl:param name="remainingLanguages"/>
6637 <xsl:when test="string-length($currentLanguage)=0"/>
6638 <xsl:when test="not(contains($usedLanguages, $currentLanguage))">
6640 <xsl:if test="@code!='a'">
6641 <xsl:attribute name="objectPart">
6643 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
6644 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
6645 <xsl:when test="@code='e'">libretto</xsl:when>
6646 <xsl:when test="@code='f'">table of contents</xsl:when>
6647 <xsl:when test="@code='g'">accompanying material</xsl:when>
6648 <xsl:when test="@code='h'">translation</xsl:when>
6652 <languageTerm authority="iso639-2b" type="code">
6653 <xsl:value-of select="$currentLanguage"/>
6656 <xsl:call-template name="isoLanguage">
6657 <xsl:with-param name="currentLanguage">
6658 <xsl:value-of select="substring($remainingLanguages,1,3)"/>
6660 <xsl:with-param name="usedLanguages">
6661 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"/>
6663 <xsl:with-param name="remainingLanguages">
6665 select="substring($remainingLanguages,4,string-length($remainingLanguages))"
6668 </xsl:call-template>
6671 <xsl:call-template name="isoLanguage">
6672 <xsl:with-param name="currentLanguage">
6673 <xsl:value-of select="substring($remainingLanguages,1,3)"/>
6675 <xsl:with-param name="usedLanguages">
6676 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"/>
6678 <xsl:with-param name="remainingLanguages">
6680 select="substring($remainingLanguages,4,string-length($remainingLanguages))"
6683 </xsl:call-template>
6687 <xsl:template name="chopBrackets">
6688 <xsl:param name="chopString"/>
6689 <xsl:variable name="string">
6690 <xsl:call-template name="chopPunctuation">
6691 <xsl:with-param name="chopString" select="$chopString"/>
6692 </xsl:call-template>
6694 <xsl:if test="substring($string, 1,1)='['">
6695 <xsl:value-of select="substring($string,2, string-length($string)-2)"/>
6697 <xsl:if test="substring($string, 1,1)!='['">
6698 <xsl:value-of select="$string"/>
6701 <xsl:template name="rfcLanguages">
6702 <xsl:param name="nodeNum"/>
6703 <xsl:param name="usedLanguages"/>
6704 <xsl:param name="controlField008-35-37"/>
6705 <xsl:variable name="currentLanguage" select="."/>
6707 <xsl:when test="not($currentLanguage)"/>
6709 test="$currentLanguage!=$controlField008-35-37 and $currentLanguage!='rfc3066'">
6710 <xsl:if test="not(contains($usedLanguages,$currentLanguage))">
6712 <xsl:if test="@code!='a'">
6713 <xsl:attribute name="objectPart">
6715 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
6716 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
6717 <xsl:when test="@code='e'">libretto</xsl:when>
6718 <xsl:when test="@code='f'">table of contents</xsl:when>
6719 <xsl:when test="@code='g'">accompanying material</xsl:when>
6720 <xsl:when test="@code='h'">translation</xsl:when>
6724 <languageTerm authority="rfc3066" type="code">
6725 <xsl:value-of select="$currentLanguage"/>
6730 <xsl:otherwise> </xsl:otherwise>
6734 <xsl:template name="datafield">
6735 <xsl:param name="tag"/>
6736 <xsl:param name="ind1">
6737 <xsl:text> </xsl:text>
6739 <xsl:param name="ind2">
6740 <xsl:text> </xsl:text>
6742 <xsl:param name="subfields"/>
6743 <xsl:element name="marc:datafield">
6744 <xsl:attribute name="tag">
6745 <xsl:value-of select="$tag"/>
6747 <xsl:attribute name="ind1">
6748 <xsl:value-of select="$ind1"/>
6750 <xsl:attribute name="ind2">
6751 <xsl:value-of select="$ind2"/>
6753 <xsl:copy-of select="$subfields"/>
6757 <xsl:template name="subfieldSelect">
6758 <xsl:param name="codes">abcdefghijklmnopqrstuvwxyz</xsl:param>
6759 <xsl:param name="delimeter">
6760 <xsl:text> </xsl:text>
6762 <xsl:variable name="str">
6763 <xsl:for-each select="marc:subfield">
6764 <xsl:if test="contains($codes, @code)">
6765 <xsl:value-of select="text()"/>
6766 <xsl:value-of select="$delimeter"/>
6770 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
6773 <xsl:template name="buildSpaces">
6774 <xsl:param name="spaces"/>
6775 <xsl:param name="char">
6776 <xsl:text> </xsl:text>
6778 <xsl:if test="$spaces>0">
6779 <xsl:value-of select="$char"/>
6780 <xsl:call-template name="buildSpaces">
6781 <xsl:with-param name="spaces" select="$spaces - 1"/>
6782 <xsl:with-param name="char" select="$char"/>
6783 </xsl:call-template>
6787 <xsl:template name="chopPunctuation">
6788 <xsl:param name="chopString"/>
6789 <xsl:param name="punctuation">
6790 <xsl:text>.:,;/ </xsl:text>
6792 <xsl:variable name="length" select="string-length($chopString)"/>
6794 <xsl:when test="$length=0"/>
6795 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
6796 <xsl:call-template name="chopPunctuation">
6797 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
6798 <xsl:with-param name="punctuation" select="$punctuation"/>
6799 </xsl:call-template>
6801 <xsl:when test="not($chopString)"/>
6803 <xsl:value-of select="$chopString"/>
6808 <xsl:template name="chopPunctuationFront">
6809 <xsl:param name="chopString"/>
6810 <xsl:variable name="length" select="string-length($chopString)"/>
6812 <xsl:when test="$length=0"/>
6813 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
6814 <xsl:call-template name="chopPunctuationFront">
6815 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"
6817 </xsl:call-template>
6819 <xsl:when test="not($chopString)"/>
6821 <xsl:value-of select="$chopString"/>
6826 <xsl:template name="chopPunctuationBack">
6827 <xsl:param name="chopString"/>
6828 <xsl:param name="punctuation">
6829 <xsl:text>.:,;/] </xsl:text>
6831 <xsl:variable name="length" select="string-length($chopString)"/>
6833 <xsl:when test="$length=0"/>
6834 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
6835 <xsl:call-template name="chopPunctuation">
6836 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
6837 <xsl:with-param name="punctuation" select="$punctuation"/>
6838 </xsl:call-template>
6840 <xsl:when test="not($chopString)"/>
6842 <xsl:value-of select="$chopString"/>
6847 <!-- nate added 12/14/2007 for lccn.loc.gov: url encode ampersand, etc. -->
6848 <xsl:template name="url-encode">
6850 <xsl:param name="str"/>
6852 <xsl:if test="$str">
6853 <xsl:variable name="first-char" select="substring($str,1,1)"/>
6855 <xsl:when test="contains($safe,$first-char)">
6856 <xsl:value-of select="$first-char"/>
6859 <xsl:variable name="codepoint">
6861 <xsl:when test="contains($ascii,$first-char)">
6863 select="string-length(substring-before($ascii,$first-char)) + 32"
6866 <xsl:when test="contains($latin1,$first-char)">
6868 select="string-length(substring-before($latin1,$first-char)) + 160"/>
6872 <xsl:message terminate="no">Warning: string contains a character
6873 that is out of range! Substituting "?".</xsl:message>
6874 <xsl:text>63</xsl:text>
6878 <xsl:variable name="hex-digit1"
6879 select="substring($hex,floor($codepoint div 16) + 1,1)"/>
6880 <xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
6881 <!-- <xsl:value-of select="concat('%',$hex-digit2)"/> -->
6882 <xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
6885 <xsl:if test="string-length($str) > 1">
6886 <xsl:call-template name="url-encode">
6887 <xsl:with-param name="str" select="substring($str,2)"/>
6888 </xsl:call-template>
6892 </xsl:stylesheet>$XXXX$ where name = $$mods33$$;