3 SELECT evergreen.upgrade_deps_block_check('1102', :eg_version);
5 update config.xml_transform set xslt = $XXXX$<?xml version="1.0" encoding="UTF-8"?>
6 <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">
7 <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
9 Revision 1.14 - Fixed template isValid and fields 010, 020, 022, 024, 028, and 037 to output additional identifier elements
10 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
12 Revision 1.13 - Changed order of output under cartographics to reflect schema 2006/11/28 tmee
14 Revision 1.12 - Updated to reflect MODS 3.2 Mapping 2006/10/11 tmee
16 Revision 1.11 - The attribute objectPart moved from <languageTerm> to <language>
19 Revision 1.10 MODS 3.1 revisions to language and classification elements
20 (plus ability to find marc:collection embedded in wrapper elements such as SRU zs: wrappers)
23 Revision 1.9 subfield $y was added to field 242 2004/09/02 10:57 jrad
25 Revision 1.8 Subject chopPunctuation expanded and attribute fixes 2004/08/12 jrad
27 Revision 1.7 2004/03/25 08:29 jrad
29 Revision 1.6 various validation fixes 2004/02/20 ntra
31 Revision 1.5 2003/10/02 16:18:58 ntra
32 MODS2 to MODS3 updates, language unstacking and
33 de-duping, chopPunctuation expanded
35 Revision 1.3 2003/04/03 00:07:19 ntra
36 Revision 1.3 Additional Changes not related to MODS Version 2.0 by ntra
38 Revision 1.2 2003/03/24 19:37:42 ckeith
42 <xsl:template match="/">
44 <xsl:when test="//marc:collection">
45 <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">
46 <xsl:for-each select="//marc:collection/marc:record">
48 <xsl:call-template name="marcRecord"/>
54 <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">
55 <xsl:for-each select="//marc:record">
56 <xsl:call-template name="marcRecord"/>
62 <xsl:template name="marcRecord">
63 <xsl:variable name="leader" select="marc:leader"/>
64 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
65 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
66 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
67 <xsl:variable name="typeOf008">
69 <xsl:when test="$leader6='a'">
71 <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
72 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">SE</xsl:when>
75 <xsl:when test="$leader6='t'">BK</xsl:when>
76 <xsl:when test="$leader6='p'">MM</xsl:when>
77 <xsl:when test="$leader6='m'">CF</xsl:when>
78 <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
79 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'">VM</xsl:when>
80 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'">MU</xsl:when>
83 <xsl:for-each select="marc:datafield[@tag='245']">
85 <xsl:variable name="title">
87 <xsl:when test="marc:subfield[@code='b']">
88 <xsl:call-template name="specialSubfieldSelect">
89 <xsl:with-param name="axis">b</xsl:with-param>
90 <xsl:with-param name="beforeCodes">afgk</xsl:with-param>
94 <xsl:call-template name="subfieldSelect">
95 <xsl:with-param name="codes">abfgk</xsl:with-param>
100 <xsl:variable name="titleChop">
101 <xsl:call-template name="chopPunctuation">
102 <xsl:with-param name="chopString">
103 <xsl:value-of select="$title"/>
105 <xsl:with-param name="punctuation">
106 <xsl:text>,;/ </xsl:text>
111 <xsl:when test="@ind2>0">
113 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
116 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
121 <xsl:value-of select="$titleChop"/>
125 <xsl:if test="marc:subfield[@code='b']">
127 <xsl:call-template name="chopPunctuation">
128 <xsl:with-param name="chopString">
129 <xsl:call-template name="specialSubfieldSelect">
130 <xsl:with-param name="axis">b</xsl:with-param>
131 <xsl:with-param name="anyCodes">b</xsl:with-param>
132 <xsl:with-param name="afterCodes">afgk</xsl:with-param>
138 <xsl:call-template name="part"></xsl:call-template>
140 <!-- A form of title that ignores non-filing characters; useful
141 for not converting "L'Oreal" into "L' Oreal" at index time -->
144 <xsl:call-template name="chopPunctuation">
145 <xsl:with-param name="chopString">
146 <xsl:call-template name="subfieldSelect">
147 <xsl:with-param name="codes">abfgk</xsl:with-param>
152 <xsl:call-template name="part"></xsl:call-template>
154 <!-- hybrid of titleInfo and titleNonfiling which will give us a preformatted string (for punctuation)
155 but also keep the nonSort stuff in a separate field (for sorting) -->
157 <xsl:variable name="titleBrowseChop">
158 <xsl:call-template name="chopPunctuation">
159 <xsl:with-param name="chopString">
160 <xsl:call-template name="subfieldSelect">
161 <xsl:with-param name="codes">abfgk</xsl:with-param>
167 <xsl:when test="@ind2>0">
169 <xsl:value-of select="substring($titleBrowseChop,1,@ind2)"/>
172 <xsl:value-of select="substring($titleBrowseChop,@ind2+1)"/>
177 <xsl:value-of select="$titleBrowseChop"/>
181 <xsl:call-template name="part"></xsl:call-template>
184 <xsl:for-each select="marc:datafield[@tag='210']">
185 <titleInfo type="abbreviated">
187 <xsl:call-template name="chopPunctuation">
188 <xsl:with-param name="chopString">
189 <xsl:call-template name="subfieldSelect">
190 <xsl:with-param name="codes">a</xsl:with-param>
195 <xsl:call-template name="subtitle"/>
198 <xsl:for-each select="marc:datafield[@tag='242']">
199 <xsl:variable name="titleChop">
200 <xsl:call-template name="chopPunctuation">
201 <xsl:with-param name="chopString">
202 <xsl:call-template name="subfieldSelect">
203 <!-- 1/04 removed $h, b -->
204 <xsl:with-param name="codes">a</xsl:with-param>
209 <titleInfo type="translated">
210 <!--09/01/04 Added subfield $y-->
211 <xsl:for-each select="marc:subfield[@code='y']">
212 <xsl:attribute name="lang">
213 <xsl:value-of select="text()"/>
217 <xsl:value-of select="$titleChop" />
220 <xsl:call-template name="subtitle"/>
221 <xsl:call-template name="part"/>
223 <titleInfo type="translated-nfi">
224 <xsl:for-each select="marc:subfield[@code='y']">
225 <xsl:attribute name="lang">
226 <xsl:value-of select="text()"/>
230 <xsl:when test="@ind2>0">
232 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
235 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
240 <xsl:value-of select="$titleChop" />
244 <xsl:call-template name="subtitle"/>
245 <xsl:call-template name="part"/>
248 <xsl:for-each select="marc:datafield[@tag='246']">
249 <titleInfo type="alternative">
250 <xsl:for-each select="marc:subfield[@code='i']">
251 <xsl:attribute name="displayLabel">
252 <xsl:value-of select="text()"/>
256 <xsl:call-template name="chopPunctuation">
257 <xsl:with-param name="chopString">
258 <xsl:call-template name="subfieldSelect">
259 <!-- 1/04 removed $h, $b -->
260 <xsl:with-param name="codes">af</xsl:with-param>
265 <xsl:call-template name="subtitle"/>
266 <xsl:call-template name="part"/>
269 <xsl:for-each select="marc:datafield[@tag='130']|marc:datafield[@tag='240']|marc:datafield[@tag='730'][@ind2!='2']">
270 <xsl:variable name="nfi">
272 <xsl:when test="@tag='240'">
273 <xsl:value-of select="@ind2"/>
276 <xsl:value-of select="@ind1"/>
280 <xsl:variable name="titleChop">
281 <xsl:call-template name="uri" />
282 <xsl:variable name="str">
283 <xsl:for-each select="marc:subfield">
284 <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'])))">
285 <xsl:value-of select="text()"/>
286 <xsl:text> </xsl:text>
290 <xsl:call-template name="chopPunctuation">
291 <xsl:with-param name="chopString">
292 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
296 <titleInfo type="uniform">
298 <xsl:value-of select="$titleChop"/>
300 <xsl:call-template name="part"/>
302 <titleInfo type="uniform-nfi">
304 <xsl:when test="$nfi>0">
306 <xsl:value-of select="substring($titleChop,1,$nfi)"/>
309 <xsl:value-of select="substring($titleChop,$nfi+1)"/>
314 <xsl:value-of select="$titleChop"/>
318 <xsl:call-template name="part"/>
321 <xsl:for-each select="marc:datafield[@tag='740'][@ind2!='2']">
322 <xsl:variable name="titleChop">
323 <xsl:call-template name="chopPunctuation">
324 <xsl:with-param name="chopString">
325 <xsl:call-template name="subfieldSelect">
326 <xsl:with-param name="codes">ah</xsl:with-param>
331 <titleInfo type="alternative">
333 <xsl:value-of select="$titleChop" />
335 <xsl:call-template name="part"/>
337 <titleInfo type="alternative-nfi">
339 <xsl:when test="@ind1>0">
341 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
344 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
349 <xsl:value-of select="$titleChop" />
353 <xsl:call-template name="part"/>
356 <xsl:for-each select="marc:datafield[@tag='100']">
357 <name type="personal">
358 <xsl:call-template name="uri" />
359 <xsl:call-template name="nameABCDQ"/>
360 <xsl:call-template name="affiliation"/>
362 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
364 <xsl:call-template name="role"/>
367 <xsl:for-each select="marc:datafield[@tag='110']">
368 <name type="corporate">
369 <xsl:call-template name="uri" />
370 <xsl:call-template name="nameABCDN"/>
372 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
374 <xsl:call-template name="role"/>
377 <xsl:for-each select="marc:datafield[@tag='111']">
378 <name type="conference">
379 <xsl:call-template name="uri" />
380 <xsl:call-template name="nameACDEQ"/>
382 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
384 <xsl:call-template name="role"/>
387 <xsl:for-each select="marc:datafield[@tag='700'][not(marc:subfield[@code='t'])]">
388 <name type="personal">
389 <xsl:call-template name="uri" />
390 <xsl:call-template name="nameABCDQ"/>
391 <xsl:call-template name="affiliation"/>
392 <xsl:call-template name="role"/>
395 <xsl:for-each select="marc:datafield[@tag='710'][not(marc:subfield[@code='t'])]">
396 <name type="corporate">
397 <xsl:call-template name="uri" />
398 <xsl:call-template name="nameABCDN"/>
399 <xsl:call-template name="role"/>
402 <xsl:for-each select="marc:datafield[@tag='711'][not(marc:subfield[@code='t'])]">
403 <name type="conference">
404 <xsl:call-template name="uri" />
405 <xsl:call-template name="nameACDEQ"/>
406 <xsl:call-template name="role"/>
409 <xsl:for-each select="marc:datafield[@tag='720'][not(marc:subfield[@code='t'])]">
411 <xsl:if test="@ind1=1">
412 <xsl:attribute name="type">
413 <xsl:text>personal</xsl:text>
417 <xsl:value-of select="marc:subfield[@code='a']"/>
419 <xsl:call-template name="role"/>
423 <xsl:if test="$leader7='c'">
424 <xsl:attribute name="collection">yes</xsl:attribute>
426 <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
427 <xsl:attribute name="manuscript">yes</xsl:attribute>
430 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
431 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
432 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
433 <xsl:when test="$leader6='i'">sound recording-nonmusical</xsl:when>
434 <xsl:when test="$leader6='j'">sound recording-musical</xsl:when>
435 <xsl:when test="$leader6='k'">still image</xsl:when>
436 <xsl:when test="$leader6='g'">moving image</xsl:when>
437 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
438 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
439 <xsl:when test="$leader6='p'">mixed material</xsl:when>
442 <xsl:if test="substring($controlField008,26,1)='d'">
443 <genre authority="marc">globe</genre>
445 <xsl:if test="marc:controlfield[@tag='007'][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
446 <genre authority="marc">remote sensing image</genre>
448 <xsl:if test="$typeOf008='MP'">
449 <xsl:variable name="controlField008-25" select="substring($controlField008,26,1)"></xsl:variable>
451 <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']">
452 <genre authority="marc">map</genre>
454 <xsl:when test="$controlField008-25='e' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
455 <genre authority="marc">atlas</genre>
459 <xsl:if test="$typeOf008='SE'">
460 <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"></xsl:variable>
462 <xsl:when test="$controlField008-21='d'">
463 <genre authority="marc">database</genre>
465 <xsl:when test="$controlField008-21='l'">
466 <genre authority="marc">loose-leaf</genre>
468 <xsl:when test="$controlField008-21='m'">
469 <genre authority="marc">series</genre>
471 <xsl:when test="$controlField008-21='n'">
472 <genre authority="marc">newspaper</genre>
474 <xsl:when test="$controlField008-21='p'">
475 <genre authority="marc">periodical</genre>
477 <xsl:when test="$controlField008-21='w'">
478 <genre authority="marc">web site</genre>
482 <xsl:if test="$typeOf008='BK' or $typeOf008='SE'">
483 <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"></xsl:variable>
485 <xsl:when test="contains($controlField008-24,'a')">
486 <genre authority="marc">abstract or summary</genre>
488 <xsl:when test="contains($controlField008-24,'b')">
489 <genre authority="marc">bibliography</genre>
491 <xsl:when test="contains($controlField008-24,'c')">
492 <genre authority="marc">catalog</genre>
494 <xsl:when test="contains($controlField008-24,'d')">
495 <genre authority="marc">dictionary</genre>
497 <xsl:when test="contains($controlField008-24,'e')">
498 <genre authority="marc">encyclopedia</genre>
500 <xsl:when test="contains($controlField008-24,'f')">
501 <genre authority="marc">handbook</genre>
503 <xsl:when test="contains($controlField008-24,'g')">
504 <genre authority="marc">legal article</genre>
506 <xsl:when test="contains($controlField008-24,'i')">
507 <genre authority="marc">index</genre>
509 <xsl:when test="contains($controlField008-24,'k')">
510 <genre authority="marc">discography</genre>
512 <xsl:when test="contains($controlField008-24,'l')">
513 <genre authority="marc">legislation</genre>
515 <xsl:when test="contains($controlField008-24,'m')">
516 <genre authority="marc">theses</genre>
518 <xsl:when test="contains($controlField008-24,'n')">
519 <genre authority="marc">survey of literature</genre>
521 <xsl:when test="contains($controlField008-24,'o')">
522 <genre authority="marc">review</genre>
524 <xsl:when test="contains($controlField008-24,'p')">
525 <genre authority="marc">programmed text</genre>
527 <xsl:when test="contains($controlField008-24,'q')">
528 <genre authority="marc">filmography</genre>
530 <xsl:when test="contains($controlField008-24,'r')">
531 <genre authority="marc">directory</genre>
533 <xsl:when test="contains($controlField008-24,'s')">
534 <genre authority="marc">statistics</genre>
536 <xsl:when test="contains($controlField008-24,'t')">
537 <genre authority="marc">technical report</genre>
539 <xsl:when test="contains($controlField008-24,'v')">
540 <genre authority="marc">legal case and case notes</genre>
542 <xsl:when test="contains($controlField008-24,'w')">
543 <genre authority="marc">law report or digest</genre>
545 <xsl:when test="contains($controlField008-24,'z')">
546 <genre authority="marc">treaty</genre>
549 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"></xsl:variable>
551 <xsl:when test="$controlField008-29='1'">
552 <genre authority="marc">conference publication</genre>
556 <xsl:if test="$typeOf008='CF'">
557 <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"></xsl:variable>
559 <xsl:when test="$controlField008-26='a'">
560 <genre authority="marc">numeric data</genre>
562 <xsl:when test="$controlField008-26='e'">
563 <genre authority="marc">database</genre>
565 <xsl:when test="$controlField008-26='f'">
566 <genre authority="marc">font</genre>
568 <xsl:when test="$controlField008-26='g'">
569 <genre authority="marc">game</genre>
573 <xsl:if test="$typeOf008='BK'">
574 <xsl:if test="substring($controlField008,25,1)='j'">
575 <genre authority="marc">patent</genre>
577 <xsl:if test="substring($controlField008,31,1)='1'">
578 <genre authority="marc">festschrift</genre>
580 <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"></xsl:variable>
581 <xsl:if test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
582 <genre authority="marc">biography</genre>
584 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"></xsl:variable>
586 <xsl:when test="$controlField008-33='e'">
587 <genre authority="marc">essay</genre>
589 <xsl:when test="$controlField008-33='d'">
590 <genre authority="marc">drama</genre>
592 <xsl:when test="$controlField008-33='c'">
593 <genre authority="marc">comic strip</genre>
595 <xsl:when test="$controlField008-33='l'">
596 <genre authority="marc">fiction</genre>
598 <xsl:when test="$controlField008-33='h'">
599 <genre authority="marc">humor, satire</genre>
601 <xsl:when test="$controlField008-33='i'">
602 <genre authority="marc">letter</genre>
604 <xsl:when test="$controlField008-33='f'">
605 <genre authority="marc">novel</genre>
607 <xsl:when test="$controlField008-33='j'">
608 <genre authority="marc">short story</genre>
610 <xsl:when test="$controlField008-33='s'">
611 <genre authority="marc">speech</genre>
615 <xsl:if test="$typeOf008='MU'">
616 <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"></xsl:variable>
617 <xsl:if test="contains($controlField008-30-31,'b')">
618 <genre authority="marc">biography</genre>
620 <xsl:if test="contains($controlField008-30-31,'c')">
621 <genre authority="marc">conference publication</genre>
623 <xsl:if test="contains($controlField008-30-31,'d')">
624 <genre authority="marc">drama</genre>
626 <xsl:if test="contains($controlField008-30-31,'e')">
627 <genre authority="marc">essay</genre>
629 <xsl:if test="contains($controlField008-30-31,'f')">
630 <genre authority="marc">fiction</genre>
632 <xsl:if test="contains($controlField008-30-31,'o')">
633 <genre authority="marc">folktale</genre>
635 <xsl:if test="contains($controlField008-30-31,'h')">
636 <genre authority="marc">history</genre>
638 <xsl:if test="contains($controlField008-30-31,'k')">
639 <genre authority="marc">humor, satire</genre>
641 <xsl:if test="contains($controlField008-30-31,'m')">
642 <genre authority="marc">memoir</genre>
644 <xsl:if test="contains($controlField008-30-31,'p')">
645 <genre authority="marc">poetry</genre>
647 <xsl:if test="contains($controlField008-30-31,'r')">
648 <genre authority="marc">rehearsal</genre>
650 <xsl:if test="contains($controlField008-30-31,'g')">
651 <genre authority="marc">reporting</genre>
653 <xsl:if test="contains($controlField008-30-31,'s')">
654 <genre authority="marc">sound</genre>
656 <xsl:if test="contains($controlField008-30-31,'l')">
657 <genre authority="marc">speech</genre>
660 <xsl:if test="$typeOf008='VM'">
661 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"></xsl:variable>
663 <xsl:when test="$controlField008-33='a'">
664 <genre authority="marc">art original</genre>
666 <xsl:when test="$controlField008-33='b'">
667 <genre authority="marc">kit</genre>
669 <xsl:when test="$controlField008-33='c'">
670 <genre authority="marc">art reproduction</genre>
672 <xsl:when test="$controlField008-33='d'">
673 <genre authority="marc">diorama</genre>
675 <xsl:when test="$controlField008-33='f'">
676 <genre authority="marc">filmstrip</genre>
678 <xsl:when test="$controlField008-33='g'">
679 <genre authority="marc">legal article</genre>
681 <xsl:when test="$controlField008-33='i'">
682 <genre authority="marc">picture</genre>
684 <xsl:when test="$controlField008-33='k'">
685 <genre authority="marc">graphic</genre>
687 <xsl:when test="$controlField008-33='l'">
688 <genre authority="marc">technical drawing</genre>
690 <xsl:when test="$controlField008-33='m'">
691 <genre authority="marc">motion picture</genre>
693 <xsl:when test="$controlField008-33='n'">
694 <genre authority="marc">chart</genre>
696 <xsl:when test="$controlField008-33='o'">
697 <genre authority="marc">flash card</genre>
699 <xsl:when test="$controlField008-33='p'">
700 <genre authority="marc">microscope slide</genre>
702 <xsl:when test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
703 <genre authority="marc">model</genre>
705 <xsl:when test="$controlField008-33='r'">
706 <genre authority="marc">realia</genre>
708 <xsl:when test="$controlField008-33='s'">
709 <genre authority="marc">slide</genre>
711 <xsl:when test="$controlField008-33='t'">
712 <genre authority="marc">transparency</genre>
714 <xsl:when test="$controlField008-33='v'">
715 <genre authority="marc">videorecording</genre>
717 <xsl:when test="$controlField008-33='w'">
718 <genre authority="marc">toy</genre>
722 <xsl:for-each select="marc:datafield[@tag=655]">
723 <genre authority="marc">
724 <xsl:attribute name="authority">
725 <xsl:value-of select="marc:subfield[@code='2']"/>
727 <xsl:call-template name="subfieldSelect">
728 <xsl:with-param name="codes">abvxyz</xsl:with-param>
729 <xsl:with-param name="delimeter">-</xsl:with-param>
734 <xsl:variable name="MARCpublicationCode" select="normalize-space(substring($controlField008,16,3))"></xsl:variable>
735 <xsl:if test="translate($MARCpublicationCode,'|','')">
738 <xsl:attribute name="type">code</xsl:attribute>
739 <xsl:attribute name="authority">marccountry</xsl:attribute>
740 <xsl:value-of select="$MARCpublicationCode"/>
744 <xsl:for-each select="marc:datafield[@tag=044]/marc:subfield[@code='c']">
747 <xsl:attribute name="type">code</xsl:attribute>
748 <xsl:attribute name="authority">iso3166</xsl:attribute>
749 <xsl:value-of select="."/>
753 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='a']">
756 <xsl:attribute name="type">text</xsl:attribute>
757 <xsl:call-template name="chopPunctuationFront">
758 <xsl:with-param name="chopString">
759 <xsl:call-template name="chopPunctuation">
760 <xsl:with-param name="chopString" select="."/>
767 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='m']">
768 <dateValid point="start">
769 <xsl:value-of select="."/>
772 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='n']">
773 <dateValid point="end">
774 <xsl:value-of select="."/>
777 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='j']">
779 <xsl:value-of select="."/>
782 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='b' or @code='c' or @code='g']">
784 <xsl:when test="@code='b'">
786 <xsl:call-template name="chopPunctuation">
787 <xsl:with-param name="chopString" select="."/>
788 <xsl:with-param name="punctuation">
789 <xsl:text>:,;/ </xsl:text>
794 <xsl:when test="@code='c'">
796 <xsl:call-template name="chopPunctuation">
797 <xsl:with-param name="chopString" select="."/>
801 <xsl:when test="@code='g'">
803 <xsl:value-of select="."/>
808 <xsl:variable name="dataField260c">
809 <xsl:call-template name="chopPunctuation">
810 <xsl:with-param name="chopString" select="marc:datafield[@tag=260]/marc:subfield[@code='c']"></xsl:with-param>
813 <xsl:variable name="controlField008-7-10" select="normalize-space(substring($controlField008, 8, 4))"></xsl:variable>
814 <xsl:variable name="controlField008-11-14" select="normalize-space(substring($controlField008, 12, 4))"></xsl:variable>
815 <xsl:variable name="controlField008-6" select="normalize-space(substring($controlField008, 7, 1))"></xsl:variable>
816 <xsl:if test="$controlField008-6='e' or $controlField008-6='p' or $controlField008-6='r' or $controlField008-6='t' or $controlField008-6='s'">
817 <xsl:if test="$controlField008-7-10 and ($controlField008-7-10 != $dataField260c)">
818 <dateIssued encoding="marc">
819 <xsl:value-of select="$controlField008-7-10"/>
823 <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'">
824 <xsl:if test="$controlField008-7-10">
825 <dateIssued encoding="marc" point="start">
826 <xsl:value-of select="$controlField008-7-10"/>
830 <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'">
831 <xsl:if test="$controlField008-11-14">
832 <dateIssued encoding="marc" point="end">
833 <xsl:value-of select="$controlField008-11-14"/>
837 <xsl:if test="$controlField008-6='q'">
838 <xsl:if test="$controlField008-7-10">
839 <dateIssued encoding="marc" point="start" qualifier="questionable">
840 <xsl:value-of select="$controlField008-7-10"/>
844 <xsl:if test="$controlField008-6='q'">
845 <xsl:if test="$controlField008-11-14">
846 <dateIssued encoding="marc" point="end" qualifier="questionable">
847 <xsl:value-of select="$controlField008-11-14"/>
851 <xsl:if test="$controlField008-6='t'">
852 <xsl:if test="$controlField008-11-14">
853 <copyrightDate encoding="marc">
854 <xsl:value-of select="$controlField008-11-14"/>
858 <xsl:for-each select="marc:datafield[@tag=033][@ind1=0 or @ind1=1]/marc:subfield[@code='a']">
859 <dateCaptured encoding="iso8601">
860 <xsl:value-of select="."/>
863 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][1]">
864 <dateCaptured encoding="iso8601" point="start">
865 <xsl:value-of select="."/>
868 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][2]">
869 <dateCaptured encoding="iso8601" point="end">
870 <xsl:value-of select="."/>
873 <xsl:for-each select="marc:datafield[@tag=250]/marc:subfield[@code='a']">
875 <xsl:value-of select="."/>
878 <xsl:for-each select="marc:leader">
881 <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">monographic</xsl:when>
882 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">continuing</xsl:when>
886 <xsl:for-each select="marc:datafield[@tag=310]|marc:datafield[@tag=321]">
888 <xsl:call-template name="subfieldSelect">
889 <xsl:with-param name="codes">ab</xsl:with-param>
894 <xsl:variable name="controlField008-35-37" select="normalize-space(translate(substring($controlField008,36,3),'|#',''))"></xsl:variable>
895 <xsl:if test="$controlField008-35-37">
897 <languageTerm authority="iso639-2b" type="code">
898 <xsl:value-of select="substring($controlField008,36,3)"/>
902 <xsl:for-each select="marc:datafield[@tag=041]">
903 <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']">
904 <xsl:variable name="langCodes" select="."/>
906 <xsl:when test="../marc:subfield[@code='2']='rfc3066'">
907 <!-- not stacked but could be repeated -->
908 <xsl:call-template name="rfcLanguages">
909 <xsl:with-param name="nodeNum">
910 <xsl:value-of select="1"/>
912 <xsl:with-param name="usedLanguages">
913 <xsl:text></xsl:text>
915 <xsl:with-param name="controlField008-35-37">
916 <xsl:value-of select="$controlField008-35-37"></xsl:value-of>
922 <xsl:variable name="allLanguages">
923 <xsl:copy-of select="$langCodes"></xsl:copy-of>
925 <xsl:variable name="currentLanguage">
926 <xsl:value-of select="substring($allLanguages,1,3)"></xsl:value-of>
928 <xsl:call-template name="isoLanguage">
929 <xsl:with-param name="currentLanguage">
930 <xsl:value-of select="substring($allLanguages,1,3)"></xsl:value-of>
932 <xsl:with-param name="remainingLanguages">
933 <xsl:value-of select="substring($allLanguages,4,string-length($allLanguages)-3)"></xsl:value-of>
935 <xsl:with-param name="usedLanguages">
936 <xsl:if test="$controlField008-35-37">
937 <xsl:value-of select="$controlField008-35-37"></xsl:value-of>
945 <xsl:variable name="physicalDescription">
946 <!--3.2 change tmee 007/11 -->
947 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
948 <digitalOrigin>reformatted digital</digitalOrigin>
950 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
951 <digitalOrigin>digitized microfilm</digitalOrigin>
953 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
954 <digitalOrigin>digitized other analog</digitalOrigin>
956 <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"></xsl:variable>
957 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"></xsl:variable>
958 <xsl:variable name="check008-23">
959 <xsl:if test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='SE' or $typeOf008='MM'">
960 <xsl:value-of select="true()"></xsl:value-of>
963 <xsl:variable name="check008-29">
964 <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
965 <xsl:value-of select="true()"></xsl:value-of>
969 <xsl:when test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
970 <form authority="marcform">braille</form>
972 <xsl:when test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='SE') and ($controlField008-23=' ' or $controlField008='r'))">
973 <form authority="marcform">print</form>
975 <xsl:when test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
976 <form authority="marcform">electronic</form>
978 <xsl:when test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
979 <form authority="marcform">microfiche</form>
981 <xsl:when test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
982 <form authority="marcform">microfilm</form>
986 <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
987 <form authority="gmd">
988 <xsl:call-template name="chopBrackets">
989 <xsl:with-param name="chopString">
990 <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"></xsl:value-of>
995 <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
996 <form authority="gmd">
997 <xsl:call-template name="chopBrackets">
998 <xsl:with-param name="chopString">
999 <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"></xsl:value-of>
1001 </xsl:call-template>
1004 <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
1005 <form authority="gmd">
1006 <xsl:call-template name="chopBrackets">
1007 <xsl:with-param name="chopString">
1008 <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"></xsl:value-of>
1010 </xsl:call-template>
1013 <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
1014 <form authority="gmd">
1015 <xsl:call-template name="chopBrackets">
1016 <xsl:with-param name="chopString">
1017 <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"></xsl:value-of>
1019 </xsl:call-template>
1022 <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
1023 <form authority="gmd">
1024 <xsl:call-template name="chopBrackets">
1025 <xsl:with-param name="chopString">
1026 <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"></xsl:value-of>
1028 </xsl:call-template>
1031 <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
1032 <form authority="gmd">
1033 <xsl:call-template name="chopBrackets">
1034 <xsl:with-param name="chopString">
1035 <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"></xsl:value-of>
1037 </xsl:call-template>
1040 <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
1042 <xsl:value-of select="."></xsl:value-of>
1045 <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
1047 <xsl:when test="substring(text(),14,1)='a'">
1048 <reformattingQuality>access</reformattingQuality>
1050 <xsl:when test="substring(text(),14,1)='p'">
1051 <reformattingQuality>preservation</reformattingQuality>
1053 <xsl:when test="substring(text(),14,1)='r'">
1054 <reformattingQuality>replacement</reformattingQuality>
1058 <!--3.2 change tmee 007/01 -->
1059 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
1060 <form authority="smd">chip cartridge</form>
1062 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
1063 <form authority="smd">computer optical disc cartridge</form>
1065 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
1066 <form authority="smd">magnetic disc</form>
1068 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
1069 <form authority="smd">magneto-optical disc</form>
1071 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
1072 <form authority="smd">optical disc</form>
1074 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
1075 <form authority="smd">remote</form>
1077 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
1078 <form authority="smd">tape cartridge</form>
1080 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
1081 <form authority="smd">tape cassette</form>
1083 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
1084 <form authority="smd">tape reel</form>
1087 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
1088 <form authority="smd">celestial globe</form>
1090 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
1091 <form authority="smd">earth moon globe</form>
1093 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
1094 <form authority="smd">planetary or lunar globe</form>
1096 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
1097 <form authority="smd">terrestrial globe</form>
1100 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
1101 <form authority="smd">kit</form>
1104 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
1105 <form authority="smd">atlas</form>
1107 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
1108 <form authority="smd">diagram</form>
1110 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
1111 <form authority="smd">map</form>
1113 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
1114 <form authority="smd">model</form>
1116 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
1117 <form authority="smd">profile</form>
1119 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
1120 <form authority="smd">remote-sensing image</form>
1122 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
1123 <form authority="smd">section</form>
1125 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
1126 <form authority="smd">view</form>
1129 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
1130 <form authority="smd">aperture card</form>
1132 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
1133 <form authority="smd">microfiche</form>
1135 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
1136 <form authority="smd">microfiche cassette</form>
1138 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
1139 <form authority="smd">microfilm cartridge</form>
1141 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
1142 <form authority="smd">microfilm cassette</form>
1144 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
1145 <form authority="smd">microfilm reel</form>
1147 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
1148 <form authority="smd">microopaque</form>
1151 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
1152 <form authority="smd">film cartridge</form>
1154 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
1155 <form authority="smd">film cassette</form>
1157 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
1158 <form authority="smd">film reel</form>
1161 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
1162 <form authority="smd">chart</form>
1164 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
1165 <form authority="smd">collage</form>
1167 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
1168 <form authority="smd">drawing</form>
1170 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
1171 <form authority="smd">flash card</form>
1173 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
1174 <form authority="smd">painting</form>
1176 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
1177 <form authority="smd">photomechanical print</form>
1179 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
1180 <form authority="smd">photonegative</form>
1182 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
1183 <form authority="smd">photoprint</form>
1185 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
1186 <form authority="smd">picture</form>
1188 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
1189 <form authority="smd">print</form>
1191 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
1192 <form authority="smd">technical drawing</form>
1195 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
1196 <form authority="smd">notated music</form>
1199 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
1200 <form authority="smd">filmslip</form>
1202 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
1203 <form authority="smd">filmstrip cartridge</form>
1205 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
1206 <form authority="smd">filmstrip roll</form>
1208 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
1209 <form authority="smd">other filmstrip type</form>
1211 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
1212 <form authority="smd">slide</form>
1214 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
1215 <form authority="smd">transparency</form>
1217 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
1218 <form authority="smd">remote-sensing image</form>
1220 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
1221 <form authority="smd">cylinder</form>
1223 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
1224 <form authority="smd">roll</form>
1226 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
1227 <form authority="smd">sound cartridge</form>
1229 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
1230 <form authority="smd">sound cassette</form>
1232 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
1233 <form authority="smd">sound disc</form>
1235 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
1236 <form authority="smd">sound-tape reel</form>
1238 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
1239 <form authority="smd">sound-track film</form>
1241 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
1242 <form authority="smd">wire recording</form>
1245 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
1246 <form authority="smd">braille</form>
1248 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
1249 <form authority="smd">combination</form>
1251 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
1252 <form authority="smd">moon</form>
1254 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
1255 <form authority="smd">tactile, with no writing system</form>
1258 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
1259 <form authority="smd">braille</form>
1261 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
1262 <form authority="smd">large print</form>
1264 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
1265 <form authority="smd">regular print</form>
1267 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
1268 <form authority="smd">text in looseleaf binder</form>
1271 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
1272 <form authority="smd">videocartridge</form>
1274 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
1275 <form authority="smd">videocassette</form>
1277 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
1278 <form authority="smd">videodisc</form>
1280 <xsl:if test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
1281 <form authority="smd">videoreel</form>
1284 <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
1286 <xsl:value-of select="."></xsl:value-of>
1287 </internetMediaType>
1289 <xsl:for-each select="marc:datafield[@tag=300]">
1291 <xsl:call-template name="subfieldSelect">
1292 <xsl:with-param name="codes">abce</xsl:with-param>
1293 </xsl:call-template>
1297 <xsl:if test="string-length(normalize-space($physicalDescription))">
1298 <physicalDescription>
1299 <xsl:copy-of select="$physicalDescription"></xsl:copy-of>
1300 </physicalDescription>
1302 <xsl:for-each select="marc:datafield[@tag=520]">
1304 <xsl:call-template name="uri"></xsl:call-template>
1305 <xsl:call-template name="subfieldSelect">
1306 <xsl:with-param name="codes">ab</xsl:with-param>
1307 </xsl:call-template>
1310 <xsl:for-each select="marc:datafield[@tag=505]">
1312 <xsl:call-template name="uri"></xsl:call-template>
1313 <xsl:call-template name="subfieldSelect">
1314 <xsl:with-param name="codes">agrt</xsl:with-param>
1315 </xsl:call-template>
1318 <xsl:for-each select="marc:datafield[@tag=521]">
1320 <xsl:call-template name="subfieldSelect">
1321 <xsl:with-param name="codes">ab</xsl:with-param>
1322 </xsl:call-template>
1325 <xsl:if test="$typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM'">
1326 <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"></xsl:variable>
1329 <xsl:when test="$controlField008-22='d'">
1330 <targetAudience authority="marctarget">adolescent</targetAudience>
1332 <xsl:when test="$controlField008-22='e'">
1333 <targetAudience authority="marctarget">adult</targetAudience>
1335 <xsl:when test="$controlField008-22='g'">
1336 <targetAudience authority="marctarget">general</targetAudience>
1338 <xsl:when test="$controlField008-22='b' or $controlField008-22='c' or $controlField008-22='j'">
1339 <targetAudience authority="marctarget">juvenile</targetAudience>
1341 <xsl:when test="$controlField008-22='a'">
1342 <targetAudience authority="marctarget">preschool</targetAudience>
1344 <xsl:when test="$controlField008-22='f'">
1345 <targetAudience authority="marctarget">specialized</targetAudience>
1349 <xsl:for-each select="marc:datafield[@tag=245]/marc:subfield[@code='c']">
1350 <note type="statement of responsibility">
1351 <xsl:value-of select="."></xsl:value-of>
1354 <xsl:for-each select="marc:datafield[@tag=500]">
1356 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1357 <xsl:call-template name="uri"></xsl:call-template>
1361 <!--3.2 change tmee additional note fields-->
1363 <xsl:for-each select="marc:datafield[@tag=502]">
1364 <note type="thesis">
1365 <xsl:call-template name="uri"/>
1366 <xsl:variable name="str">
1367 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1368 <xsl:value-of select="."/>
1369 <xsl:text> </xsl:text>
1372 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1376 <xsl:for-each select="marc:datafield[@tag=504]">
1377 <note type="bibliography">
1378 <xsl:call-template name="uri"/>
1379 <xsl:variable name="str">
1380 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1381 <xsl:value-of select="."/>
1382 <xsl:text> </xsl:text>
1385 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1389 <xsl:for-each select="marc:datafield[@tag=508]">
1390 <note type="creation/production credits">
1391 <xsl:call-template name="uri"/>
1392 <xsl:variable name="str">
1393 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1394 <xsl:value-of select="."/>
1395 <xsl:text> </xsl:text>
1398 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1402 <xsl:for-each select="marc:datafield[@tag=506]">
1403 <note type="restrictions">
1404 <xsl:call-template name="uri"></xsl:call-template>
1405 <xsl:variable name="str">
1406 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1407 <xsl:value-of select="."></xsl:value-of>
1408 <xsl:text> </xsl:text>
1411 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1415 <xsl:for-each select="marc:datafield[@tag=510]">
1416 <note type="citation/reference">
1417 <xsl:call-template name="uri"></xsl:call-template>
1418 <xsl:variable name="str">
1419 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1420 <xsl:value-of select="."></xsl:value-of>
1421 <xsl:text> </xsl:text>
1424 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1429 <xsl:for-each select="marc:datafield[@tag=511]">
1430 <note type="performers">
1431 <xsl:call-template name="uri"></xsl:call-template>
1432 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1435 <xsl:for-each select="marc:datafield[@tag=518]">
1437 <xsl:call-template name="uri"></xsl:call-template>
1438 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1442 <xsl:for-each select="marc:datafield[@tag=530]">
1443 <note type="additional physical form">
1444 <xsl:call-template name="uri"></xsl:call-template>
1445 <xsl:variable name="str">
1446 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1447 <xsl:value-of select="."></xsl:value-of>
1448 <xsl:text> </xsl:text>
1451 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1455 <xsl:for-each select="marc:datafield[@tag=533]">
1456 <note type="reproduction">
1457 <xsl:call-template name="uri"></xsl:call-template>
1458 <xsl:variable name="str">
1459 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1460 <xsl:value-of select="."></xsl:value-of>
1461 <xsl:text> </xsl:text>
1464 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1468 <xsl:for-each select="marc:datafield[@tag=534]">
1469 <note type="original version">
1470 <xsl:call-template name="uri"></xsl:call-template>
1471 <xsl:variable name="str">
1472 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1473 <xsl:value-of select="."></xsl:value-of>
1474 <xsl:text> </xsl:text>
1477 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1481 <xsl:for-each select="marc:datafield[@tag=538]">
1482 <note type="system details">
1483 <xsl:call-template name="uri"></xsl:call-template>
1484 <xsl:variable name="str">
1485 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1486 <xsl:value-of select="."></xsl:value-of>
1487 <xsl:text> </xsl:text>
1490 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1494 <xsl:for-each select="marc:datafield[@tag=583]">
1495 <note type="action">
1496 <xsl:call-template name="uri"></xsl:call-template>
1497 <xsl:variable name="str">
1498 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1499 <xsl:value-of select="."></xsl:value-of>
1500 <xsl:text> </xsl:text>
1503 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1511 <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]">
1513 <xsl:call-template name="uri"></xsl:call-template>
1514 <xsl:variable name="str">
1515 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
1516 <xsl:value-of select="."></xsl:value-of>
1517 <xsl:text> </xsl:text>
1520 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
1523 <xsl:for-each select="marc:datafield[@tag=034][marc:subfield[@code='d' or @code='e' or @code='f' or @code='g']]">
1527 <xsl:call-template name="subfieldSelect">
1528 <xsl:with-param name="codes">defg</xsl:with-param>
1529 </xsl:call-template>
1534 <xsl:for-each select="marc:datafield[@tag=043]">
1536 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
1538 <xsl:attribute name="authority">
1539 <xsl:if test="@code='a'">
1540 <xsl:text>marcgac</xsl:text>
1542 <xsl:if test="@code='b'">
1543 <xsl:value-of select="following-sibling::marc:subfield[@code=2]"></xsl:value-of>
1545 <xsl:if test="@code='c'">
1546 <xsl:text>iso3166</xsl:text>
1549 <xsl:value-of select="self::marc:subfield"></xsl:value-of>
1554 <!-- tmee 2006/11/27 -->
1555 <xsl:for-each select="marc:datafield[@tag=255]">
1557 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
1559 <xsl:if test="@code='a'">
1561 <xsl:value-of select="."></xsl:value-of>
1564 <xsl:if test="@code='b'">
1566 <xsl:value-of select="."></xsl:value-of>
1569 <xsl:if test="@code='c'">
1571 <xsl:value-of select="."></xsl:value-of>
1579 <xsl:apply-templates select="marc:datafield[653 >= @tag and @tag >= 600]"></xsl:apply-templates>
1580 <xsl:apply-templates select="marc:datafield[@tag=656]"></xsl:apply-templates>
1581 <xsl:for-each select="marc:datafield[@tag=752]">
1583 <hierarchicalGeographic>
1584 <xsl:for-each select="marc:subfield[@code='a']">
1586 <xsl:call-template name="chopPunctuation">
1587 <xsl:with-param name="chopString" select="."></xsl:with-param>
1588 </xsl:call-template>
1591 <xsl:for-each select="marc:subfield[@code='b']">
1593 <xsl:call-template name="chopPunctuation">
1594 <xsl:with-param name="chopString" select="."></xsl:with-param>
1595 </xsl:call-template>
1598 <xsl:for-each select="marc:subfield[@code='c']">
1600 <xsl:call-template name="chopPunctuation">
1601 <xsl:with-param name="chopString" select="."></xsl:with-param>
1602 </xsl:call-template>
1605 <xsl:for-each select="marc:subfield[@code='d']">
1607 <xsl:call-template name="chopPunctuation">
1608 <xsl:with-param name="chopString" select="."></xsl:with-param>
1609 </xsl:call-template>
1612 </hierarchicalGeographic>
1615 <xsl:for-each select="marc:datafield[@tag=045][marc:subfield[@code='b']]">
1618 <xsl:when test="@ind1=2">
1619 <temporal encoding="iso8601" point="start">
1620 <xsl:call-template name="chopPunctuation">
1621 <xsl:with-param name="chopString">
1622 <xsl:value-of select="marc:subfield[@code='b'][1]"></xsl:value-of>
1624 </xsl:call-template>
1626 <temporal encoding="iso8601" point="end">
1627 <xsl:call-template name="chopPunctuation">
1628 <xsl:with-param name="chopString">
1629 <xsl:value-of select="marc:subfield[@code='b'][2]"></xsl:value-of>
1631 </xsl:call-template>
1635 <xsl:for-each select="marc:subfield[@code='b']">
1636 <temporal encoding="iso8601">
1637 <xsl:call-template name="chopPunctuation">
1638 <xsl:with-param name="chopString" select="."></xsl:with-param>
1639 </xsl:call-template>
1646 <xsl:for-each select="marc:datafield[@tag=050]">
1647 <xsl:for-each select="marc:subfield[@code='b']">
1648 <classification authority="lcc">
1649 <xsl:if test="../marc:subfield[@code='3']">
1650 <xsl:attribute name="displayLabel">
1651 <xsl:value-of select="../marc:subfield[@code='3']"></xsl:value-of>
1654 <xsl:value-of select="preceding-sibling::marc:subfield[@code='a'][1]"></xsl:value-of>
1655 <xsl:text> </xsl:text>
1656 <xsl:value-of select="text()"></xsl:value-of>
1659 <xsl:for-each select="marc:subfield[@code='a'][not(following-sibling::marc:subfield[@code='b'])]">
1660 <classification authority="lcc">
1661 <xsl:if test="../marc:subfield[@code='3']">
1662 <xsl:attribute name="displayLabel">
1663 <xsl:value-of select="../marc:subfield[@code='3']"></xsl:value-of>
1666 <xsl:value-of select="text()"></xsl:value-of>
1670 <xsl:for-each select="marc:datafield[@tag=082]">
1671 <classification authority="ddc">
1672 <xsl:if test="marc:subfield[@code='2']">
1673 <xsl:attribute name="edition">
1674 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1677 <xsl:call-template name="subfieldSelect">
1678 <xsl:with-param name="codes">ab</xsl:with-param>
1679 </xsl:call-template>
1682 <xsl:for-each select="marc:datafield[@tag=080]">
1683 <classification authority="udc">
1684 <xsl:call-template name="subfieldSelect">
1685 <xsl:with-param name="codes">abx</xsl:with-param>
1686 </xsl:call-template>
1689 <xsl:for-each select="marc:datafield[@tag=060]">
1690 <classification authority="nlm">
1691 <xsl:call-template name="subfieldSelect">
1692 <xsl:with-param name="codes">ab</xsl:with-param>
1693 </xsl:call-template>
1696 <xsl:for-each select="marc:datafield[@tag=086][@ind1=0]">
1697 <classification authority="sudocs">
1698 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1701 <xsl:for-each select="marc:datafield[@tag=086][@ind1=1]">
1702 <classification authority="candoc">
1703 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1706 <xsl:for-each select="marc:datafield[@tag=086]">
1708 <xsl:attribute name="authority">
1709 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1711 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1714 <xsl:for-each select="marc:datafield[@tag=084]">
1716 <xsl:attribute name="authority">
1717 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
1719 <xsl:call-template name="subfieldSelect">
1720 <xsl:with-param name="codes">ab</xsl:with-param>
1721 </xsl:call-template>
1724 <xsl:for-each select="marc:datafield[@tag=440]">
1725 <relatedItem type="series">
1726 <xsl:variable name="titleChop">
1727 <xsl:call-template name="chopPunctuation">
1728 <xsl:with-param name="chopString">
1729 <xsl:call-template name="subfieldSelect">
1730 <xsl:with-param name="codes">av</xsl:with-param>
1731 </xsl:call-template>
1733 </xsl:call-template>
1737 <xsl:value-of select="$titleChop" />
1739 <xsl:call-template name="part"></xsl:call-template>
1741 <titleInfo type="nfi">
1743 <xsl:when test="@ind2>0">
1745 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
1748 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
1750 <xsl:call-template name="part"/>
1754 <xsl:value-of select="$titleChop" />
1758 <xsl:call-template name="part"></xsl:call-template>
1762 <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
1763 <relatedItem type="series">
1766 <xsl:call-template name="chopPunctuation">
1767 <xsl:with-param name="chopString">
1768 <xsl:call-template name="subfieldSelect">
1769 <xsl:with-param name="codes">av</xsl:with-param>
1770 </xsl:call-template>
1772 </xsl:call-template>
1774 <xsl:call-template name="part"></xsl:call-template>
1778 <xsl:for-each select="marc:datafield[@tag=510]">
1779 <relatedItem type="isReferencedBy">
1781 <xsl:call-template name="subfieldSelect">
1782 <xsl:with-param name="codes">abcx3</xsl:with-param>
1783 </xsl:call-template>
1787 <xsl:for-each select="marc:datafield[@tag=534]">
1788 <relatedItem type="original">
1789 <xsl:call-template name="relatedTitle"></xsl:call-template>
1790 <xsl:call-template name="relatedName"></xsl:call-template>
1791 <xsl:if test="marc:subfield[@code='b' or @code='c']">
1793 <xsl:for-each select="marc:subfield[@code='c']">
1795 <xsl:value-of select="."></xsl:value-of>
1798 <xsl:for-each select="marc:subfield[@code='b']">
1800 <xsl:value-of select="."></xsl:value-of>
1805 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1806 <xsl:for-each select="marc:subfield[@code='z']">
1807 <identifier type="isbn">
1808 <xsl:value-of select="."></xsl:value-of>
1811 <xsl:call-template name="relatedNote"></xsl:call-template>
1814 <xsl:for-each select="marc:datafield[@tag=700][marc:subfield[@code='t']]">
1816 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1819 <xsl:call-template name="chopPunctuation">
1820 <xsl:with-param name="chopString">
1821 <xsl:call-template name="specialSubfieldSelect">
1822 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
1823 <xsl:with-param name="axis">t</xsl:with-param>
1824 <xsl:with-param name="afterCodes">g</xsl:with-param>
1825 </xsl:call-template>
1827 </xsl:call-template>
1829 <xsl:call-template name="part"></xsl:call-template>
1831 <name type="personal">
1833 <xsl:call-template name="specialSubfieldSelect">
1834 <xsl:with-param name="anyCodes">aq</xsl:with-param>
1835 <xsl:with-param name="axis">t</xsl:with-param>
1836 <xsl:with-param name="beforeCodes">g</xsl:with-param>
1837 </xsl:call-template>
1839 <xsl:call-template name="termsOfAddress"></xsl:call-template>
1840 <xsl:call-template name="nameDate"></xsl:call-template>
1841 <xsl:call-template name="role"></xsl:call-template>
1843 <xsl:call-template name="relatedForm"></xsl:call-template>
1844 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1847 <xsl:for-each select="marc:datafield[@tag=710][marc:subfield[@code='t']]">
1849 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1852 <xsl:call-template name="chopPunctuation">
1853 <xsl:with-param name="chopString">
1854 <xsl:call-template name="specialSubfieldSelect">
1855 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
1856 <xsl:with-param name="axis">t</xsl:with-param>
1857 <xsl:with-param name="afterCodes">dg</xsl:with-param>
1858 </xsl:call-template>
1860 </xsl:call-template>
1862 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
1864 <name type="corporate">
1865 <xsl:for-each select="marc:subfield[@code='a']">
1867 <xsl:value-of select="."></xsl:value-of>
1870 <xsl:for-each select="marc:subfield[@code='b']">
1872 <xsl:value-of select="."></xsl:value-of>
1875 <xsl:variable name="tempNamePart">
1876 <xsl:call-template name="specialSubfieldSelect">
1877 <xsl:with-param name="anyCodes">c</xsl:with-param>
1878 <xsl:with-param name="axis">t</xsl:with-param>
1879 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
1880 </xsl:call-template>
1882 <xsl:if test="normalize-space($tempNamePart)">
1884 <xsl:value-of select="$tempNamePart"></xsl:value-of>
1887 <xsl:call-template name="role"></xsl:call-template>
1889 <xsl:call-template name="relatedForm"></xsl:call-template>
1890 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1893 <xsl:for-each select="marc:datafield[@tag=711][marc:subfield[@code='t']]">
1895 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1898 <xsl:call-template name="chopPunctuation">
1899 <xsl:with-param name="chopString">
1900 <xsl:call-template name="specialSubfieldSelect">
1901 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
1902 <xsl:with-param name="axis">t</xsl:with-param>
1903 <xsl:with-param name="afterCodes">g</xsl:with-param>
1904 </xsl:call-template>
1906 </xsl:call-template>
1908 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
1910 <name type="conference">
1912 <xsl:call-template name="specialSubfieldSelect">
1913 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
1914 <xsl:with-param name="axis">t</xsl:with-param>
1915 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
1916 </xsl:call-template>
1919 <xsl:call-template name="relatedForm"></xsl:call-template>
1920 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1923 <xsl:for-each select="marc:datafield[@tag=730][@ind2=2]">
1925 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1928 <xsl:call-template name="chopPunctuation">
1929 <xsl:with-param name="chopString">
1930 <xsl:call-template name="subfieldSelect">
1931 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
1932 </xsl:call-template>
1934 </xsl:call-template>
1936 <xsl:call-template name="part"></xsl:call-template>
1938 <xsl:call-template name="relatedForm"></xsl:call-template>
1939 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
1942 <xsl:for-each select="marc:datafield[@tag=740][@ind2=2]">
1944 <xsl:call-template name="constituentOrRelatedType"></xsl:call-template>
1945 <xsl:variable name="titleChop">
1946 <xsl:call-template name="chopPunctuation">
1947 <xsl:with-param name="chopString">
1948 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
1950 </xsl:call-template>
1954 <xsl:value-of select="$titleChop" />
1956 <xsl:call-template name="part"></xsl:call-template>
1958 <titleInfo type="nfi">
1960 <xsl:when test="@ind1>0">
1962 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
1965 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
1970 <xsl:value-of select="$titleChop" />
1974 <xsl:call-template name="part"></xsl:call-template>
1976 <xsl:call-template name="relatedForm"></xsl:call-template>
1979 <xsl:for-each select="marc:datafield[@tag=760]|marc:datafield[@tag=762]">
1980 <relatedItem type="series">
1981 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1984 <xsl:for-each select="marc:datafield[@tag=765]|marc:datafield[@tag=767]|marc:datafield[@tag=777]|marc:datafield[@tag=787]">
1986 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1989 <xsl:for-each select="marc:datafield[@tag=775]">
1990 <relatedItem type="otherVersion">
1991 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1994 <xsl:for-each select="marc:datafield[@tag=770]|marc:datafield[@tag=774]">
1995 <relatedItem type="constituent">
1996 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
1999 <xsl:for-each select="marc:datafield[@tag=772]|marc:datafield[@tag=773]">
2000 <relatedItem type="host">
2001 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2004 <xsl:for-each select="marc:datafield[@tag=776]">
2005 <relatedItem type="otherFormat">
2006 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2009 <xsl:for-each select="marc:datafield[@tag=780]">
2010 <relatedItem type="preceding">
2011 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2014 <xsl:for-each select="marc:datafield[@tag=785]">
2015 <relatedItem type="succeeding">
2016 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2019 <xsl:for-each select="marc:datafield[@tag=786]">
2020 <relatedItem type="original">
2021 <xsl:call-template name="relatedItem76X-78X"></xsl:call-template>
2024 <xsl:for-each select="marc:datafield[@tag=800]">
2025 <relatedItem type="series">
2028 <xsl:call-template name="chopPunctuation">
2029 <xsl:with-param name="chopString">
2030 <xsl:call-template name="specialSubfieldSelect">
2031 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
2032 <xsl:with-param name="axis">t</xsl:with-param>
2033 <xsl:with-param name="afterCodes">g</xsl:with-param>
2034 </xsl:call-template>
2036 </xsl:call-template>
2038 <xsl:call-template name="part"></xsl:call-template>
2040 <name type="personal">
2042 <xsl:call-template name="chopPunctuation">
2043 <xsl:with-param name="chopString">
2044 <xsl:call-template name="specialSubfieldSelect">
2045 <xsl:with-param name="anyCodes">aq</xsl:with-param>
2046 <xsl:with-param name="axis">t</xsl:with-param>
2047 <xsl:with-param name="beforeCodes">g</xsl:with-param>
2048 </xsl:call-template>
2050 </xsl:call-template>
2052 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2053 <xsl:call-template name="nameDate"></xsl:call-template>
2054 <xsl:call-template name="role"></xsl:call-template>
2056 <xsl:call-template name="relatedForm"></xsl:call-template>
2059 <xsl:for-each select="marc:datafield[@tag=810]">
2060 <relatedItem type="series">
2063 <xsl:call-template name="chopPunctuation">
2064 <xsl:with-param name="chopString">
2065 <xsl:call-template name="specialSubfieldSelect">
2066 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
2067 <xsl:with-param name="axis">t</xsl:with-param>
2068 <xsl:with-param name="afterCodes">dg</xsl:with-param>
2069 </xsl:call-template>
2071 </xsl:call-template>
2073 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2075 <name type="corporate">
2076 <xsl:for-each select="marc:subfield[@code='a']">
2078 <xsl:value-of select="."></xsl:value-of>
2081 <xsl:for-each select="marc:subfield[@code='b']">
2083 <xsl:value-of select="."></xsl:value-of>
2087 <xsl:call-template name="specialSubfieldSelect">
2088 <xsl:with-param name="anyCodes">c</xsl:with-param>
2089 <xsl:with-param name="axis">t</xsl:with-param>
2090 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
2091 </xsl:call-template>
2093 <xsl:call-template name="role"></xsl:call-template>
2095 <xsl:call-template name="relatedForm"></xsl:call-template>
2098 <xsl:for-each select="marc:datafield[@tag=811]">
2099 <relatedItem type="series">
2102 <xsl:call-template name="chopPunctuation">
2103 <xsl:with-param name="chopString">
2104 <xsl:call-template name="specialSubfieldSelect">
2105 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
2106 <xsl:with-param name="axis">t</xsl:with-param>
2107 <xsl:with-param name="afterCodes">g</xsl:with-param>
2108 </xsl:call-template>
2110 </xsl:call-template>
2112 <xsl:call-template name="relatedPartNumName"/>
2114 <name type="conference">
2116 <xsl:call-template name="specialSubfieldSelect">
2117 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
2118 <xsl:with-param name="axis">t</xsl:with-param>
2119 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
2120 </xsl:call-template>
2122 <xsl:call-template name="role"/>
2124 <xsl:call-template name="relatedForm"/>
2127 <xsl:for-each select="marc:datafield[@tag='830']">
2128 <relatedItem type="series">
2129 <xsl:variable name="titleChop">
2130 <xsl:call-template name="chopPunctuation">
2131 <xsl:with-param name="chopString">
2132 <xsl:call-template name="subfieldSelect">
2133 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
2134 </xsl:call-template>
2136 </xsl:call-template>
2140 <xsl:value-of select="$titleChop" />
2142 <xsl:call-template name="part"/>
2144 <titleInfo type="nfi">
2146 <xsl:when test="@ind2>0">
2148 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
2151 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
2156 <xsl:value-of select="$titleChop" />
2160 <xsl:call-template name="part"/>
2162 <xsl:call-template name="relatedForm"/>
2165 <xsl:for-each select="marc:datafield[@tag='856'][@ind2='2']/marc:subfield[@code='q']">
2168 <xsl:value-of select="."/>
2169 </internetMediaType>
2172 <xsl:for-each select="marc:datafield[@tag='020']">
2173 <xsl:call-template name="isInvalid">
2174 <xsl:with-param name="type">isbn</xsl:with-param>
2175 </xsl:call-template>
2176 <xsl:if test="marc:subfield[@code='a']">
2177 <identifier type="isbn">
2178 <xsl:value-of select="marc:subfield[@code='a']"/>
2182 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='0']">
2183 <xsl:call-template name="isInvalid">
2184 <xsl:with-param name="type">isrc</xsl:with-param>
2185 </xsl:call-template>
2186 <xsl:if test="marc:subfield[@code='a']">
2187 <identifier type="isrc">
2188 <xsl:value-of select="marc:subfield[@code='a']"/>
2192 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='2']">
2193 <xsl:call-template name="isInvalid">
2194 <xsl:with-param name="type">ismn</xsl:with-param>
2195 </xsl:call-template>
2196 <xsl:if test="marc:subfield[@code='a']">
2197 <identifier type="ismn">
2198 <xsl:value-of select="marc:subfield[@code='a']"/>
2202 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='4']">
2203 <xsl:call-template name="isInvalid">
2204 <xsl:with-param name="type">sici</xsl:with-param>
2205 </xsl:call-template>
2206 <identifier type="sici">
2207 <xsl:call-template name="subfieldSelect">
2208 <xsl:with-param name="codes">ab</xsl:with-param>
2209 </xsl:call-template>
2212 <xsl:for-each select="marc:datafield[@tag='022']">
2213 <xsl:call-template name="isInvalid">
2214 <xsl:with-param name="type">issn</xsl:with-param>
2215 </xsl:call-template>
2216 <identifier type="issn">
2217 <xsl:value-of select="marc:subfield[@code='a']"/>
2220 <xsl:for-each select="marc:datafield[@tag='010']">
2221 <xsl:call-template name="isInvalid">
2222 <xsl:with-param name="type">lccn</xsl:with-param>
2223 </xsl:call-template>
2224 <identifier type="lccn">
2225 <xsl:value-of select="normalize-space(marc:subfield[@code='a'])"/>
2228 <xsl:for-each select="marc:datafield[@tag='028']">
2230 <xsl:attribute name="type">
2232 <xsl:when test="@ind1='0'">issue number</xsl:when>
2233 <xsl:when test="@ind1='1'">matrix number</xsl:when>
2234 <xsl:when test="@ind1='2'">music plate</xsl:when>
2235 <xsl:when test="@ind1='3'">music publisher</xsl:when>
2236 <xsl:when test="@ind1='4'">videorecording identifier</xsl:when>
2239 <!--<xsl:call-template name="isInvalid"/>--> <!-- no $z in 028 -->
2240 <xsl:call-template name="subfieldSelect">
2241 <xsl:with-param name="codes">
2243 <xsl:when test="@ind1='0'">ba</xsl:when>
2244 <xsl:otherwise>ab</xsl:otherwise>
2247 </xsl:call-template>
2250 <xsl:for-each select="marc:datafield[@tag='037']">
2251 <identifier type="stock number">
2252 <!--<xsl:call-template name="isInvalid"/>--> <!-- no $z in 037 -->
2253 <xsl:call-template name="subfieldSelect">
2254 <xsl:with-param name="codes">ab</xsl:with-param>
2255 </xsl:call-template>
2258 <xsl:for-each select="marc:datafield[@tag='856'][marc:subfield[@code='u']]">
2260 <xsl:attribute name="type">
2262 <xsl:when test="starts-with(marc:subfield[@code='u'],'urn:doi') or starts-with(marc:subfield[@code='u'],'doi')">doi</xsl:when>
2263 <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>
2264 <xsl:otherwise>uri</xsl:otherwise>
2268 <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') ">
2269 <xsl:value-of select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"></xsl:value-of>
2272 <xsl:value-of select="marc:subfield[@code='u']"></xsl:value-of>
2276 <xsl:if test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl')">
2277 <identifier type="hdl">
2278 <xsl:if test="marc:subfield[@code='y' or @code='3' or @code='z']">
2279 <xsl:attribute name="displayLabel">
2280 <xsl:call-template name="subfieldSelect">
2281 <xsl:with-param name="codes">y3z</xsl:with-param>
2282 </xsl:call-template>
2285 <xsl:value-of select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"></xsl:value-of>
2289 <xsl:for-each select="marc:datafield[@tag=024][@ind1=1]">
2290 <identifier type="upc">
2291 <xsl:call-template name="isInvalid"/>
2292 <xsl:value-of select="marc:subfield[@code='a']"/>
2295 <!-- 1/04 fix added $y -->
2296 <xsl:for-each select="marc:datafield[@tag=856][marc:subfield[@code='u']]">
2299 <xsl:if test="marc:subfield[@code='y' or @code='3']">
2300 <xsl:attribute name="displayLabel">
2301 <xsl:call-template name="subfieldSelect">
2302 <xsl:with-param name="codes">y3</xsl:with-param>
2303 </xsl:call-template>
2306 <xsl:if test="marc:subfield[@code='z' ]">
2307 <xsl:attribute name="note">
2308 <xsl:call-template name="subfieldSelect">
2309 <xsl:with-param name="codes">z</xsl:with-param>
2310 </xsl:call-template>
2313 <xsl:value-of select="marc:subfield[@code='u']"></xsl:value-of>
2319 <!-- 3.2 change tmee 856z -->
2322 <xsl:for-each select="marc:datafield[@tag=852]">
2325 <xsl:call-template name="displayLabel"></xsl:call-template>
2326 <xsl:call-template name="subfieldSelect">
2327 <xsl:with-param name="codes">abje</xsl:with-param>
2328 </xsl:call-template>
2332 <xsl:for-each select="marc:datafield[@tag=506]">
2333 <accessCondition type="restrictionOnAccess">
2334 <xsl:call-template name="subfieldSelect">
2335 <xsl:with-param name="codes">abcd35</xsl:with-param>
2336 </xsl:call-template>
2339 <xsl:for-each select="marc:datafield[@tag=540]">
2340 <accessCondition type="useAndReproduction">
2341 <xsl:call-template name="subfieldSelect">
2342 <xsl:with-param name="codes">abcde35</xsl:with-param>
2343 </xsl:call-template>
2347 <xsl:for-each select="marc:datafield[@tag=040]">
2348 <recordContentSource authority="marcorg">
2349 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
2350 </recordContentSource>
2352 <xsl:for-each select="marc:controlfield[@tag=008]">
2353 <recordCreationDate encoding="marc">
2354 <xsl:value-of select="substring(.,1,6)"></xsl:value-of>
2355 </recordCreationDate>
2357 <xsl:for-each select="marc:controlfield[@tag=005]">
2358 <recordChangeDate encoding="iso8601">
2359 <xsl:value-of select="."></xsl:value-of>
2362 <xsl:for-each select="marc:controlfield[@tag=001]">
2364 <xsl:if test="../marc:controlfield[@tag=003]">
2365 <xsl:attribute name="source">
2366 <xsl:value-of select="../marc:controlfield[@tag=003]"></xsl:value-of>
2369 <xsl:value-of select="."></xsl:value-of>
2372 <xsl:for-each select="marc:datafield[@tag=040]/marc:subfield[@code='b']">
2373 <languageOfCataloging>
2374 <languageTerm authority="iso639-2b" type="code">
2375 <xsl:value-of select="."></xsl:value-of>
2377 </languageOfCataloging>
2381 <xsl:template name="displayForm">
2382 <xsl:for-each select="marc:subfield[@code='c']">
2384 <xsl:value-of select="."></xsl:value-of>
2388 <xsl:template name="affiliation">
2389 <xsl:for-each select="marc:subfield[@code='u']">
2391 <xsl:value-of select="."></xsl:value-of>
2395 <xsl:template name="uri">
2396 <xsl:for-each select="marc:subfield[@code='u']">
2397 <xsl:attribute name="xlink:href">
2398 <xsl:value-of select="."></xsl:value-of>
2401 <xsl:for-each select="marc:subfield[@code='0']">
2403 <xsl:when test="contains(text(), ')')">
2404 <xsl:attribute name="xlink:href">
2405 <xsl:value-of select="substring-after(text(), ')')"></xsl:value-of>
2409 <xsl:attribute name="xlink:href">
2410 <xsl:value-of select="."></xsl:value-of>
2416 <xsl:template name="role">
2417 <xsl:for-each select="marc:subfield[@code='e']">
2419 <roleTerm type="text">
2420 <xsl:value-of select="."></xsl:value-of>
2424 <xsl:for-each select="marc:subfield[@code='4']">
2426 <roleTerm authority="marcrelator" type="code">
2427 <xsl:value-of select="."></xsl:value-of>
2432 <xsl:template name="part">
2433 <xsl:variable name="partNumber">
2434 <xsl:call-template name="specialSubfieldSelect">
2435 <xsl:with-param name="axis">n</xsl:with-param>
2436 <xsl:with-param name="anyCodes">n</xsl:with-param>
2437 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2438 </xsl:call-template>
2440 <xsl:variable name="partName">
2441 <xsl:call-template name="specialSubfieldSelect">
2442 <xsl:with-param name="axis">p</xsl:with-param>
2443 <xsl:with-param name="anyCodes">p</xsl:with-param>
2444 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2445 </xsl:call-template>
2447 <xsl:if test="string-length(normalize-space($partNumber))">
2449 <xsl:call-template name="chopPunctuation">
2450 <xsl:with-param name="chopString" select="$partNumber"></xsl:with-param>
2451 </xsl:call-template>
2454 <xsl:if test="string-length(normalize-space($partName))">
2456 <xsl:call-template name="chopPunctuation">
2457 <xsl:with-param name="chopString" select="$partName"></xsl:with-param>
2458 </xsl:call-template>
2462 <xsl:template name="relatedPart">
2463 <xsl:if test="@tag=773">
2464 <xsl:for-each select="marc:subfield[@code='g']">
2467 <xsl:value-of select="."></xsl:value-of>
2471 <xsl:for-each select="marc:subfield[@code='q']">
2473 <xsl:call-template name="parsePart"></xsl:call-template>
2478 <xsl:template name="relatedPartNumName">
2479 <xsl:variable name="partNumber">
2480 <xsl:call-template name="specialSubfieldSelect">
2481 <xsl:with-param name="axis">g</xsl:with-param>
2482 <xsl:with-param name="anyCodes">g</xsl:with-param>
2483 <xsl:with-param name="afterCodes">pst</xsl:with-param>
2484 </xsl:call-template>
2486 <xsl:variable name="partName">
2487 <xsl:call-template name="specialSubfieldSelect">
2488 <xsl:with-param name="axis">p</xsl:with-param>
2489 <xsl:with-param name="anyCodes">p</xsl:with-param>
2490 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
2491 </xsl:call-template>
2493 <xsl:if test="string-length(normalize-space($partNumber))">
2495 <xsl:value-of select="$partNumber"></xsl:value-of>
2498 <xsl:if test="string-length(normalize-space($partName))">
2500 <xsl:value-of select="$partName"></xsl:value-of>
2504 <xsl:template name="relatedName">
2505 <xsl:for-each select="marc:subfield[@code='a']">
2508 <xsl:value-of select="."></xsl:value-of>
2513 <xsl:template name="relatedForm">
2514 <xsl:for-each select="marc:subfield[@code='h']">
2515 <physicalDescription>
2517 <xsl:value-of select="."></xsl:value-of>
2519 </physicalDescription>
2522 <xsl:template name="relatedExtent">
2523 <xsl:for-each select="marc:subfield[@code='h']">
2524 <physicalDescription>
2526 <xsl:value-of select="."></xsl:value-of>
2528 </physicalDescription>
2531 <xsl:template name="relatedNote">
2532 <xsl:for-each select="marc:subfield[@code='n']">
2534 <xsl:value-of select="."></xsl:value-of>
2538 <xsl:template name="relatedSubject">
2539 <xsl:for-each select="marc:subfield[@code='j']">
2541 <temporal encoding="iso8601">
2542 <xsl:call-template name="chopPunctuation">
2543 <xsl:with-param name="chopString" select="."></xsl:with-param>
2544 </xsl:call-template>
2549 <xsl:template name="relatedIdentifierISSN">
2550 <xsl:for-each select="marc:subfield[@code='x']">
2551 <identifier type="issn">
2552 <xsl:value-of select="."></xsl:value-of>
2556 <xsl:template name="relatedIdentifierLocal">
2557 <xsl:for-each select="marc:subfield[@code='w']">
2558 <identifier type="local">
2559 <xsl:value-of select="."></xsl:value-of>
2563 <xsl:template name="relatedIdentifier">
2564 <xsl:for-each select="marc:subfield[@code='o']">
2566 <xsl:value-of select="."></xsl:value-of>
2570 <xsl:template name="relatedItem76X-78X">
2571 <xsl:call-template name="displayLabel"></xsl:call-template>
2572 <xsl:call-template name="relatedTitle76X-78X"></xsl:call-template>
2573 <xsl:call-template name="relatedName"></xsl:call-template>
2574 <xsl:call-template name="relatedOriginInfo"></xsl:call-template>
2575 <xsl:call-template name="relatedLanguage"></xsl:call-template>
2576 <xsl:call-template name="relatedExtent"></xsl:call-template>
2577 <xsl:call-template name="relatedNote"></xsl:call-template>
2578 <xsl:call-template name="relatedSubject"></xsl:call-template>
2579 <xsl:call-template name="relatedIdentifier"></xsl:call-template>
2580 <xsl:call-template name="relatedIdentifierISSN"></xsl:call-template>
2581 <xsl:call-template name="relatedIdentifierLocal"></xsl:call-template>
2582 <xsl:call-template name="relatedPart"></xsl:call-template>
2584 <xsl:template name="subjectGeographicZ">
2586 <xsl:call-template name="chopPunctuation">
2587 <xsl:with-param name="chopString" select="."></xsl:with-param>
2588 </xsl:call-template>
2591 <xsl:template name="subjectTemporalY">
2593 <xsl:call-template name="chopPunctuation">
2594 <xsl:with-param name="chopString" select="."></xsl:with-param>
2595 </xsl:call-template>
2598 <xsl:template name="subjectTopic">
2600 <xsl:call-template name="chopPunctuation">
2601 <xsl:with-param name="chopString" select="."></xsl:with-param>
2602 </xsl:call-template>
2605 <!-- 3.2 change tmee 6xx $v genre -->
2606 <xsl:template name="subjectGenre">
2608 <xsl:call-template name="chopPunctuation">
2609 <xsl:with-param name="chopString" select="."></xsl:with-param>
2610 </xsl:call-template>
2614 <xsl:template name="nameABCDN">
2615 <xsl:for-each select="marc:subfield[@code='a']">
2617 <xsl:call-template name="chopPunctuation">
2618 <xsl:with-param name="chopString" select="."></xsl:with-param>
2619 </xsl:call-template>
2622 <xsl:for-each select="marc:subfield[@code='b']">
2624 <xsl:value-of select="."></xsl:value-of>
2627 <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
2629 <xsl:call-template name="subfieldSelect">
2630 <xsl:with-param name="codes">cdn</xsl:with-param>
2631 </xsl:call-template>
2635 <xsl:template name="nameABCDQ">
2637 <xsl:call-template name="chopPunctuation">
2638 <xsl:with-param name="chopString">
2639 <xsl:call-template name="subfieldSelect">
2640 <xsl:with-param name="codes">aq</xsl:with-param>
2641 </xsl:call-template>
2643 <xsl:with-param name="punctuation">
2644 <xsl:text>:,;/ </xsl:text>
2646 </xsl:call-template>
2648 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2649 <xsl:call-template name="nameDate"></xsl:call-template>
2651 <xsl:template name="nameACDEQ">
2653 <xsl:call-template name="subfieldSelect">
2654 <xsl:with-param name="codes">acdeq</xsl:with-param>
2655 </xsl:call-template>
2658 <xsl:template name="constituentOrRelatedType">
2659 <xsl:if test="@ind2=2">
2660 <xsl:attribute name="type">constituent</xsl:attribute>
2663 <xsl:template name="relatedTitle">
2664 <xsl:for-each select="marc:subfield[@code='t']">
2667 <xsl:call-template name="chopPunctuation">
2668 <xsl:with-param name="chopString">
2669 <xsl:value-of select="."></xsl:value-of>
2671 </xsl:call-template>
2676 <xsl:template name="relatedTitle76X-78X">
2677 <xsl:for-each select="marc:subfield[@code='t']">
2680 <xsl:call-template name="chopPunctuation">
2681 <xsl:with-param name="chopString">
2682 <xsl:value-of select="."></xsl:value-of>
2684 </xsl:call-template>
2686 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2687 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2691 <xsl:for-each select="marc:subfield[@code='p']">
2692 <titleInfo type="abbreviated">
2694 <xsl:call-template name="chopPunctuation">
2695 <xsl:with-param name="chopString">
2696 <xsl:value-of select="."></xsl:value-of>
2698 </xsl:call-template>
2700 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2701 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2705 <xsl:for-each select="marc:subfield[@code='s']">
2706 <titleInfo type="uniform">
2708 <xsl:call-template name="chopPunctuation">
2709 <xsl:with-param name="chopString">
2710 <xsl:value-of select="."></xsl:value-of>
2712 </xsl:call-template>
2714 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
2715 <xsl:call-template name="relatedPartNumName"></xsl:call-template>
2720 <xsl:template name="relatedOriginInfo">
2721 <xsl:if test="marc:subfield[@code='b' or @code='d'] or marc:subfield[@code='f']">
2723 <xsl:if test="@tag=775">
2724 <xsl:for-each select="marc:subfield[@code='f']">
2727 <xsl:attribute name="type">code</xsl:attribute>
2728 <xsl:attribute name="authority">marcgac</xsl:attribute>
2729 <xsl:value-of select="."></xsl:value-of>
2734 <xsl:for-each select="marc:subfield[@code='d']">
2736 <xsl:value-of select="."></xsl:value-of>
2739 <xsl:for-each select="marc:subfield[@code='b']">
2741 <xsl:value-of select="."></xsl:value-of>
2747 <xsl:template name="relatedLanguage">
2748 <xsl:for-each select="marc:subfield[@code='e']">
2749 <xsl:call-template name="getLanguage">
2750 <xsl:with-param name="langString">
2751 <xsl:value-of select="."></xsl:value-of>
2753 </xsl:call-template>
2756 <xsl:template name="nameDate">
2757 <xsl:for-each select="marc:subfield[@code='d']">
2758 <namePart type="date">
2759 <xsl:call-template name="chopPunctuation">
2760 <xsl:with-param name="chopString" select="."></xsl:with-param>
2761 </xsl:call-template>
2765 <xsl:template name="subjectAuthority">
2766 <xsl:if test="@ind2!=4">
2767 <xsl:if test="@ind2!=' '">
2768 <xsl:if test="@ind2!=8">
2769 <xsl:if test="@ind2!=9">
2770 <xsl:attribute name="authority">
2772 <xsl:when test="@ind2=0">lcsh</xsl:when>
2773 <xsl:when test="@ind2=1">lcshac</xsl:when>
2774 <xsl:when test="@ind2=2">mesh</xsl:when>
2776 <xsl:when test="@ind2=3">nal</xsl:when>
2777 <xsl:when test="@ind2=5">csh</xsl:when>
2778 <xsl:when test="@ind2=6">rvm</xsl:when>
2779 <xsl:when test="@ind2=7">
2780 <xsl:value-of select="marc:subfield[@code='2']"></xsl:value-of>
2789 <xsl:template name="subjectAnyOrder">
2790 <xsl:for-each select="marc:subfield[@code='v' or @code='x' or @code='y' or @code='z']">
2792 <xsl:when test="@code='v'">
2793 <xsl:call-template name="subjectGenre"></xsl:call-template>
2795 <xsl:when test="@code='x'">
2796 <xsl:call-template name="subjectTopic"></xsl:call-template>
2798 <xsl:when test="@code='y'">
2799 <xsl:call-template name="subjectTemporalY"></xsl:call-template>
2801 <xsl:when test="@code='z'">
2802 <xsl:call-template name="subjectGeographicZ"></xsl:call-template>
2807 <xsl:template name="specialSubfieldSelect">
2808 <xsl:param name="anyCodes"></xsl:param>
2809 <xsl:param name="axis"></xsl:param>
2810 <xsl:param name="beforeCodes"></xsl:param>
2811 <xsl:param name="afterCodes"></xsl:param>
2812 <xsl:variable name="str">
2813 <xsl:for-each select="marc:subfield">
2814 <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])">
2815 <xsl:value-of select="text()"></xsl:value-of>
2816 <xsl:text> </xsl:text>
2820 <xsl:value-of select="substring($str,1,string-length($str)-1)"></xsl:value-of>
2823 <!-- 3.2 change tmee 6xx $v genre -->
2824 <xsl:template match="marc:datafield[@tag=600]">
2826 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2827 <name type="personal">
2828 <xsl:call-template name="uri" />
2830 <xsl:call-template name="chopPunctuation">
2831 <xsl:with-param name="chopString">
2832 <xsl:call-template name="subfieldSelect">
2833 <xsl:with-param name="codes">aq</xsl:with-param>
2834 </xsl:call-template>
2836 </xsl:call-template>
2838 <xsl:call-template name="termsOfAddress"></xsl:call-template>
2839 <xsl:call-template name="nameDate"></xsl:call-template>
2840 <xsl:call-template name="affiliation"></xsl:call-template>
2841 <xsl:call-template name="role"></xsl:call-template>
2843 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2846 <xsl:template match="marc:datafield[@tag=610]">
2848 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2849 <name type="corporate">
2850 <xsl:call-template name="uri" />
2851 <xsl:for-each select="marc:subfield[@code='a']">
2853 <xsl:value-of select="."></xsl:value-of>
2856 <xsl:for-each select="marc:subfield[@code='b']">
2858 <xsl:value-of select="."></xsl:value-of>
2861 <xsl:if test="marc:subfield[@code='c' or @code='d' or @code='n' or @code='p']">
2863 <xsl:call-template name="subfieldSelect">
2864 <xsl:with-param name="codes">cdnp</xsl:with-param>
2865 </xsl:call-template>
2868 <xsl:call-template name="role"></xsl:call-template>
2870 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2873 <xsl:template match="marc:datafield[@tag=611]">
2875 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2876 <name type="conference">
2877 <xsl:call-template name="uri" />
2879 <xsl:call-template name="subfieldSelect">
2880 <xsl:with-param name="codes">abcdeqnp</xsl:with-param>
2881 </xsl:call-template>
2883 <xsl:for-each select="marc:subfield[@code='4']">
2885 <roleTerm authority="marcrelator" type="code">
2886 <xsl:value-of select="."></xsl:value-of>
2891 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2894 <xsl:template match="marc:datafield[@tag=630]">
2896 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2897 <xsl:variable name="titleChop">
2898 <xsl:call-template name="chopPunctuation">
2899 <xsl:with-param name="chopString">
2900 <xsl:call-template name="subfieldSelect">
2901 <xsl:with-param name="codes">adfhklor</xsl:with-param>
2902 </xsl:call-template>
2904 </xsl:call-template>
2908 <xsl:value-of select="$titleChop" />
2910 <xsl:call-template name="part"></xsl:call-template>
2912 <titleInfo type="nfi">
2914 <xsl:when test="@ind1>0">
2916 <xsl:value-of select="substring($titleChop,1,@ind1)"/>
2919 <xsl:value-of select="substring($titleChop,@ind1+1)"/>
2921 <xsl:call-template name="part"/>
2925 <xsl:value-of select="$titleChop" />
2929 <xsl:call-template name="part"></xsl:call-template>
2931 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2934 <xsl:template match="marc:datafield[@tag=650]">
2936 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2938 <xsl:call-template name="uri" />
2939 <xsl:call-template name="chopPunctuation">
2940 <xsl:with-param name="chopString">
2941 <xsl:call-template name="subfieldSelect">
2942 <xsl:with-param name="codes">abcd</xsl:with-param>
2943 </xsl:call-template>
2945 </xsl:call-template>
2947 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2950 <xsl:template match="marc:datafield[@tag=651]">
2952 <xsl:call-template name="subjectAuthority"></xsl:call-template>
2953 <xsl:for-each select="marc:subfield[@code='a']">
2955 <xsl:call-template name="uri" />
2956 <xsl:call-template name="chopPunctuation">
2957 <xsl:with-param name="chopString" select="."></xsl:with-param>
2958 </xsl:call-template>
2961 <xsl:call-template name="subjectAnyOrder"></xsl:call-template>
2964 <xsl:template match="marc:datafield[@tag=653]">
2966 <xsl:for-each select="marc:subfield[@code='a']">
2968 <xsl:call-template name="uri" />
2969 <xsl:value-of select="."></xsl:value-of>
2974 <xsl:template match="marc:datafield[@tag=656]">
2976 <xsl:if test="marc:subfield[@code=2]">
2977 <xsl:attribute name="authority">
2978 <xsl:value-of select="marc:subfield[@code=2]"></xsl:value-of>
2982 <xsl:call-template name="uri" />
2983 <xsl:call-template name="chopPunctuation">
2984 <xsl:with-param name="chopString">
2985 <xsl:value-of select="marc:subfield[@code='a']"></xsl:value-of>
2987 </xsl:call-template>
2991 <xsl:template name="termsOfAddress">
2992 <xsl:if test="marc:subfield[@code='b' or @code='c']">
2993 <namePart type="termsOfAddress">
2994 <xsl:call-template name="chopPunctuation">
2995 <xsl:with-param name="chopString">
2996 <xsl:call-template name="subfieldSelect">
2997 <xsl:with-param name="codes">bc</xsl:with-param>
2998 </xsl:call-template>
3000 </xsl:call-template>
3004 <xsl:template name="displayLabel">
3005 <xsl:if test="marc:subfield[@code='i']">
3006 <xsl:attribute name="displayLabel">
3007 <xsl:value-of select="marc:subfield[@code='i']"></xsl:value-of>
3010 <xsl:if test="marc:subfield[@code='3']">
3011 <xsl:attribute name="displayLabel">
3012 <xsl:value-of select="marc:subfield[@code='3']"></xsl:value-of>
3016 <xsl:template name="isInvalid">
3017 <xsl:param name="type"/>
3018 <xsl:if test="marc:subfield[@code='z'] or marc:subfield[@code='y']">
3020 <xsl:attribute name="type">
3021 <xsl:value-of select="$type"/>
3023 <xsl:attribute name="invalid">
3024 <xsl:text>yes</xsl:text>
3026 <xsl:if test="marc:subfield[@code='z']">
3027 <xsl:value-of select="marc:subfield[@code='z']"/>
3029 <xsl:if test="marc:subfield[@code='y']">
3030 <xsl:value-of select="marc:subfield[@code='y']"/>
3035 <xsl:template name="subtitle">
3036 <xsl:if test="marc:subfield[@code='b']">
3038 <xsl:call-template name="chopPunctuation">
3039 <xsl:with-param name="chopString">
3040 <xsl:value-of select="marc:subfield[@code='b']"/>
3041 <!--<xsl:call-template name="subfieldSelect">
3042 <xsl:with-param name="codes">b</xsl:with-param>
3043 </xsl:call-template>-->
3045 </xsl:call-template>
3049 <xsl:template name="script">
3050 <xsl:param name="scriptCode"></xsl:param>
3051 <xsl:attribute name="script">
3053 <xsl:when test="$scriptCode='(3'">Arabic</xsl:when>
3054 <xsl:when test="$scriptCode='(B'">Latin</xsl:when>
3055 <xsl:when test="$scriptCode='$1'">Chinese, Japanese, Korean</xsl:when>
3056 <xsl:when test="$scriptCode='(N'">Cyrillic</xsl:when>
3057 <xsl:when test="$scriptCode='(2'">Hebrew</xsl:when>
3058 <xsl:when test="$scriptCode='(S'">Greek</xsl:when>
3062 <xsl:template name="parsePart">
3063 <!-- assumes 773$q= 1:2:3<4
3064 with up to 3 levels and one optional start page
3066 <xsl:variable name="level1">
3068 <xsl:when test="contains(text(),':')">
3070 <xsl:value-of select="substring-before(text(),':')"></xsl:value-of>
3072 <xsl:when test="not(contains(text(),':'))">
3074 <xsl:if test="contains(text(),'<')">
3076 <xsl:value-of select="substring-before(text(),'<')"></xsl:value-of>
3078 <xsl:if test="not(contains(text(),'<'))">
3080 <xsl:value-of select="text()"></xsl:value-of>
3085 <xsl:variable name="sici2">
3087 <xsl:when test="starts-with(substring-after(text(),$level1),':')">
3088 <xsl:value-of select="substring(substring-after(text(),$level1),2)"></xsl:value-of>
3091 <xsl:value-of select="substring-after(text(),$level1)"></xsl:value-of>
3095 <xsl:variable name="level2">
3097 <xsl:when test="contains($sici2,':')">
3099 <xsl:value-of select="substring-before($sici2,':')"></xsl:value-of>
3101 <xsl:when test="contains($sici2,'<')">
3103 <xsl:value-of select="substring-before($sici2,'<')"></xsl:value-of>
3106 <xsl:value-of select="$sici2"></xsl:value-of>
3111 <xsl:variable name="sici3">
3113 <xsl:when test="starts-with(substring-after($sici2,$level2),':')">
3114 <xsl:value-of select="substring(substring-after($sici2,$level2),2)"></xsl:value-of>
3117 <xsl:value-of select="substring-after($sici2,$level2)"></xsl:value-of>
3121 <xsl:variable name="level3">
3123 <xsl:when test="contains($sici3,'<')">
3125 <xsl:value-of select="substring-before($sici3,'<')"></xsl:value-of>
3128 <xsl:value-of select="$sici3"></xsl:value-of>
3133 <xsl:variable name="page">
3134 <xsl:if test="contains(text(),'<')">
3135 <xsl:value-of select="substring-after(text(),'<')"></xsl:value-of>
3138 <xsl:if test="$level1">
3141 <xsl:value-of select="$level1"></xsl:value-of>
3145 <xsl:if test="$level2">
3148 <xsl:value-of select="$level2"></xsl:value-of>
3152 <xsl:if test="$level3">
3155 <xsl:value-of select="$level3"></xsl:value-of>
3159 <xsl:if test="$page">
3160 <extent unit="page">
3162 <xsl:value-of select="$page"></xsl:value-of>
3167 <xsl:template name="getLanguage">
3168 <xsl:param name="langString"></xsl:param>
3169 <xsl:param name="controlField008-35-37"></xsl:param>
3170 <xsl:variable name="length" select="string-length($langString)"></xsl:variable>
3172 <xsl:when test="$length=0"></xsl:when>
3173 <xsl:when test="$controlField008-35-37=substring($langString,1,3)">
3174 <xsl:call-template name="getLanguage">
3175 <xsl:with-param name="langString" select="substring($langString,4,$length)"></xsl:with-param>
3176 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"></xsl:with-param>
3177 </xsl:call-template>
3181 <languageTerm authority="iso639-2b" type="code">
3182 <xsl:value-of select="substring($langString,1,3)"></xsl:value-of>
3185 <xsl:call-template name="getLanguage">
3186 <xsl:with-param name="langString" select="substring($langString,4,$length)"></xsl:with-param>
3187 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"></xsl:with-param>
3188 </xsl:call-template>
3192 <xsl:template name="isoLanguage">
3193 <xsl:param name="currentLanguage"></xsl:param>
3194 <xsl:param name="usedLanguages"></xsl:param>
3195 <xsl:param name="remainingLanguages"></xsl:param>
3197 <xsl:when test="string-length($currentLanguage)=0"></xsl:when>
3198 <xsl:when test="not(contains($usedLanguages, $currentLanguage))">
3200 <xsl:if test="@code!='a'">
3201 <xsl:attribute name="objectPart">
3203 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
3204 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
3205 <xsl:when test="@code='e'">libretto</xsl:when>
3206 <xsl:when test="@code='f'">table of contents</xsl:when>
3207 <xsl:when test="@code='g'">accompanying material</xsl:when>
3208 <xsl:when test="@code='h'">translation</xsl:when>
3212 <languageTerm authority="iso639-2b" type="code">
3213 <xsl:value-of select="$currentLanguage"></xsl:value-of>
3216 <xsl:call-template name="isoLanguage">
3217 <xsl:with-param name="currentLanguage">
3218 <xsl:value-of select="substring($remainingLanguages,1,3)"></xsl:value-of>
3220 <xsl:with-param name="usedLanguages">
3221 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"></xsl:value-of>
3223 <xsl:with-param name="remainingLanguages">
3224 <xsl:value-of select="substring($remainingLanguages,4,string-length($remainingLanguages))"></xsl:value-of>
3226 </xsl:call-template>
3229 <xsl:call-template name="isoLanguage">
3230 <xsl:with-param name="currentLanguage">
3231 <xsl:value-of select="substring($remainingLanguages,1,3)"></xsl:value-of>
3233 <xsl:with-param name="usedLanguages">
3234 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"></xsl:value-of>
3236 <xsl:with-param name="remainingLanguages">
3237 <xsl:value-of select="substring($remainingLanguages,4,string-length($remainingLanguages))"></xsl:value-of>
3239 </xsl:call-template>
3243 <xsl:template name="chopBrackets">
3244 <xsl:param name="chopString"></xsl:param>
3245 <xsl:variable name="string">
3246 <xsl:call-template name="chopPunctuation">
3247 <xsl:with-param name="chopString" select="$chopString"></xsl:with-param>
3248 </xsl:call-template>
3250 <xsl:if test="substring($string, 1,1)='['">
3251 <xsl:value-of select="substring($string,2, string-length($string)-2)"></xsl:value-of>
3253 <xsl:if test="substring($string, 1,1)!='['">
3254 <xsl:value-of select="$string"></xsl:value-of>
3257 <xsl:template name="rfcLanguages">
3258 <xsl:param name="nodeNum"></xsl:param>
3259 <xsl:param name="usedLanguages"></xsl:param>
3260 <xsl:param name="controlField008-35-37"></xsl:param>
3261 <xsl:variable name="currentLanguage" select="."></xsl:variable>
3263 <xsl:when test="not($currentLanguage)"></xsl:when>
3264 <xsl:when test="$currentLanguage!=$controlField008-35-37 and $currentLanguage!='rfc3066'">
3265 <xsl:if test="not(contains($usedLanguages,$currentLanguage))">
3267 <xsl:if test="@code!='a'">
3268 <xsl:attribute name="objectPart">
3270 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
3271 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
3272 <xsl:when test="@code='e'">libretto</xsl:when>
3273 <xsl:when test="@code='f'">table of contents</xsl:when>
3274 <xsl:when test="@code='g'">accompanying material</xsl:when>
3275 <xsl:when test="@code='h'">translation</xsl:when>
3279 <languageTerm authority="rfc3066" type="code">
3280 <xsl:value-of select="$currentLanguage"/>
3289 <xsl:template name="datafield">
3290 <xsl:param name="tag"/>
3291 <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
3292 <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
3293 <xsl:param name="subfields"/>
3294 <xsl:element name="marc:datafield">
3295 <xsl:attribute name="tag">
3296 <xsl:value-of select="$tag"/>
3298 <xsl:attribute name="ind1">
3299 <xsl:value-of select="$ind1"/>
3301 <xsl:attribute name="ind2">
3302 <xsl:value-of select="$ind2"/>
3304 <xsl:copy-of select="$subfields"/>
3308 <xsl:template name="subfieldSelect">
3309 <xsl:param name="codes"/>
3310 <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
3311 <xsl:variable name="str">
3312 <xsl:for-each select="marc:subfield">
3313 <xsl:if test="contains($codes, @code)">
3314 <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
3318 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
3321 <xsl:template name="buildSpaces">
3322 <xsl:param name="spaces"/>
3323 <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
3324 <xsl:if test="$spaces>0">
3325 <xsl:value-of select="$char"/>
3326 <xsl:call-template name="buildSpaces">
3327 <xsl:with-param name="spaces" select="$spaces - 1"/>
3328 <xsl:with-param name="char" select="$char"/>
3329 </xsl:call-template>
3333 <xsl:template name="chopPunctuation">
3334 <xsl:param name="chopString"/>
3335 <xsl:param name="punctuation"><xsl:text>.:,;/ </xsl:text></xsl:param>
3336 <xsl:variable name="length" select="string-length($chopString)"/>
3338 <xsl:when test="$length=0"/>
3339 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
3340 <xsl:call-template name="chopPunctuation">
3341 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
3342 <xsl:with-param name="punctuation" select="$punctuation"/>
3343 </xsl:call-template>
3345 <xsl:when test="not($chopString)"/>
3346 <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
3350 <xsl:template name="chopPunctuationFront">
3351 <xsl:param name="chopString"/>
3352 <xsl:variable name="length" select="string-length($chopString)"/>
3354 <xsl:when test="$length=0"/>
3355 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
3356 <xsl:call-template name="chopPunctuationFront">
3357 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"/>
3358 </xsl:call-template>
3360 <xsl:when test="not($chopString)"/>
3361 <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
3364 </xsl:stylesheet>$XXXX$ where name = $$mods32$$;
3366 update config.xml_transform set xslt = $XXXX$<xsl:stylesheet xmlns="http://www.loc.gov/mods/v3" xmlns:marc="http://www.loc.gov/MARC21/slim"
3367 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3368 exclude-result-prefixes="xlink marc" version="1.0">
3369 <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
3371 <xsl:variable name="ascii">
3372 <xsl:text> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:text>
3375 <xsl:variable name="latin1">
3376 <xsl:text> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:text>
3378 <!-- Characters that usually don't need to be escaped -->
3379 <xsl:variable name="safe">
3380 <xsl:text>!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:text>
3383 <xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
3385 <!-- Evergreen specific: revert Revision 1.23, so we can have those authority xlink attributes back. -->
3387 <!--MARC21slim2MODS3-3.xsl
3388 Revision 1.27 - Mapped 648 to <subject> 2009/03/13 tmee
3389 Revision 1.26 - Added subfield $s mapping for 130/240/730 2008/10/16 tmee
3390 Revision 1.25 - Mapped 040e to <descriptiveStandard> and Leader/18 to <descriptive standard>aacr2 2008/09/18 tmee
3391 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
3392 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
3393 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
3394 Revision 1.21 - Mapped 856 ind2=1 or ind2=2 to <relatedItem><location><url> 2008/07/03 tmee
3395 Revision 1.20 - Added genre w/@auth="contents of 2" and type= "musical composition" 2008/07/01 tmee
3396 Revision 1.19 - Added genre offprint for 008/24+ BK code 2 2008/07/01 tmee
3397 Revision 1.18 - Added xlink/uri for subfield 0 for 130/240/730, 100/700, 110/710, 111/711 2008/06/26 tmee
3398 Revision 1.17 - Added mapping of 662 2008/05/14 tmee
3399 Revision 1.16 - Changed @authority from "marc" to "marcgt" for 007 and 008 codes mapped to a term in <genre> 2007/07/10 tmee
3400 Revision 1.15 - For field 630, moved call to part template outside title element 2007/07/10 tmee
3401 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
3402 Revision 1.13 - Changed order of output under cartographics to reflect schema 2006/11/28 tmee
3403 Revision 1.12 - Updated to reflect MODS 3.2 Mapping 2006/10/11 tmee
3404 Revision 1.11 - The attribute objectPart moved from <languageTerm> to <language> 2006/04/08 jrad
3405 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
3406 Revision 1.9 - Subfield $y was added to field 242 2004/09/02 10:57 jrad
3407 Revision 1.8 - Subject chopPunctuation expanded and attribute fixes 2004/08/12 jrad
3408 Revision 1.7 - 2004/03/25 08:29 jrad
3409 Revision 1.6 - Various validation fixes 2004/02/20 ntra
3410 Revision 1.5 - MODS2 to MODS3 updates, language unstacking and de-duping, chopPunctuation expanded 2003/10/02 16:18:58 ntra
3411 Revision 1.3 - Additional Changes not related to MODS Version 2.0 by ntra
3412 Revision 1.2 - Added Log Comment 2003/03/24 19:37:42 ckeith
3414 <xsl:template match="/">
3416 <xsl:when test="//marc:collection">
3417 <modsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3418 xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
3419 <xsl:for-each select="//marc:collection/marc:record">
3420 <mods version="3.3">
3421 <xsl:call-template name="marcRecord"/>
3427 <mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3"
3428 xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-2.xsd">
3429 <xsl:for-each select="//marc:record">
3430 <xsl:call-template name="marcRecord"/>
3436 <xsl:template name="marcRecord">
3437 <xsl:variable name="leader" select="marc:leader"/>
3438 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
3439 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
3440 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
3441 <xsl:variable name="typeOf008">
3443 <xsl:when test="$leader6='a'">
3446 test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'">BK</xsl:when>
3447 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'">SE</xsl:when>
3450 <xsl:when test="$leader6='t'">BK</xsl:when>
3451 <xsl:when test="$leader6='p'">MM</xsl:when>
3452 <xsl:when test="$leader6='m'">CF</xsl:when>
3453 <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
3454 <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' or $leader6='r'">VM</xsl:when>
3455 <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' or $leader6='j'"
3459 <xsl:for-each select="marc:datafield[@tag='245']">
3461 <xsl:variable name="title">
3463 <xsl:when test="marc:subfield[@code='b']">
3464 <xsl:call-template name="specialSubfieldSelect">
3465 <xsl:with-param name="axis">b</xsl:with-param>
3466 <xsl:with-param name="beforeCodes">afgk</xsl:with-param>
3467 </xsl:call-template>
3470 <xsl:call-template name="subfieldSelect">
3471 <xsl:with-param name="codes">abfgk</xsl:with-param>
3472 </xsl:call-template>
3476 <xsl:variable name="titleChop">
3477 <xsl:call-template name="chopPunctuation">
3478 <xsl:with-param name="chopString">
3479 <xsl:value-of select="$title"/>
3481 <xsl:with-param name="punctuation">
3482 <xsl:text>,;/ </xsl:text>
3484 </xsl:call-template>
3487 <xsl:when test="@ind2>0">
3489 <xsl:value-of select="substring($titleChop,1,@ind2)"/>
3492 <xsl:value-of select="substring($titleChop,@ind2+1)"/>
3497 <xsl:value-of select="$titleChop"/>
3501 <xsl:if test="marc:subfield[@code='b']">
3503 <xsl:call-template name="chopPunctuation">
3504 <xsl:with-param name="chopString">
3505 <xsl:call-template name="specialSubfieldSelect">
3506 <xsl:with-param name="axis">b</xsl:with-param>
3507 <xsl:with-param name="anyCodes">b</xsl:with-param>
3508 <xsl:with-param name="afterCodes">afgk</xsl:with-param>
3509 </xsl:call-template>
3511 </xsl:call-template>
3514 <xsl:call-template name="part"/>
3517 <xsl:for-each select="marc:datafield[@tag='210']">
3518 <titleInfo type="abbreviated">
3520 <xsl:call-template name="chopPunctuation">
3521 <xsl:with-param name="chopString">
3522 <xsl:call-template name="subfieldSelect">
3523 <xsl:with-param name="codes">a</xsl:with-param>
3524 </xsl:call-template>
3526 </xsl:call-template>
3528 <xsl:call-template name="subtitle"/>
3531 <xsl:for-each select="marc:datafield[@tag='242']">
3532 <titleInfo type="translated">
3533 <!--09/01/04 Added subfield $y-->
3534 <xsl:for-each select="marc:subfield[@code='y']">
3535 <xsl:attribute name="lang">
3536 <xsl:value-of select="text()"/>
3539 <xsl:for-each select="marc:subfield[@code='i']">
3540 <xsl:attribute name="displayLabel">
3541 <xsl:value-of select="text()"/>
3545 <xsl:call-template name="chopPunctuation">
3546 <xsl:with-param name="chopString">
3547 <xsl:call-template name="subfieldSelect">
3548 <!-- 1/04 removed $h, b -->
3549 <xsl:with-param name="codes">a</xsl:with-param>
3550 </xsl:call-template>
3552 </xsl:call-template>
3555 <xsl:call-template name="subtitle"/>
3556 <xsl:call-template name="part"/>
3559 <xsl:for-each select="marc:datafield[@tag='246']">
3560 <titleInfo type="alternative">
3561 <xsl:for-each select="marc:subfield[@code='i']">
3562 <xsl:attribute name="displayLabel">
3563 <xsl:value-of select="text()"/>
3567 <xsl:call-template name="chopPunctuation">
3568 <xsl:with-param name="chopString">
3569 <xsl:call-template name="subfieldSelect">
3570 <!-- 1/04 removed $h, $b -->
3571 <xsl:with-param name="codes">af</xsl:with-param>
3572 </xsl:call-template>
3574 </xsl:call-template>
3576 <xsl:call-template name="subtitle"/>
3577 <xsl:call-template name="part"/>
3581 select="marc:datafield[@tag='130']|marc:datafield[@tag='240']|marc:datafield[@tag='730'][@ind2!='2']">
3582 <titleInfo type="uniform">
3584 <xsl:call-template name="uri"/>
3586 <xsl:variable name="str">
3587 <xsl:for-each select="marc:subfield">
3589 test="(contains('adfklmors',@code) and (not(../marc:subfield[@code='n' or @code='p']) or (following-sibling::marc:subfield[@code='n' or @code='p'])))">
3590 <xsl:value-of select="text()"/>
3591 <xsl:text> </xsl:text>
3595 <xsl:call-template name="chopPunctuation">
3596 <xsl:with-param name="chopString">
3597 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
3599 </xsl:call-template>
3601 <xsl:call-template name="part"/>
3604 <xsl:for-each select="marc:datafield[@tag='740'][@ind2!='2']">
3605 <titleInfo type="alternative">
3607 <xsl:call-template name="chopPunctuation">
3608 <xsl:with-param name="chopString">
3609 <xsl:call-template name="subfieldSelect">
3610 <xsl:with-param name="codes">ah</xsl:with-param>
3611 </xsl:call-template>
3613 </xsl:call-template>
3615 <xsl:call-template name="part"/>
3618 <xsl:for-each select="marc:datafield[@tag='100']">
3619 <name type="personal">
3621 <xsl:call-template name="uri"/>
3623 <xsl:call-template name="nameABCDQ"/>
3624 <xsl:call-template name="affiliation"/>
3626 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3628 <xsl:call-template name="role"/>
3631 <xsl:for-each select="marc:datafield[@tag='110']">
3632 <name type="corporate">
3634 <xsl:call-template name="uri"/>
3636 <xsl:call-template name="nameABCDN"/>
3638 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3640 <xsl:call-template name="role"/>
3643 <xsl:for-each select="marc:datafield[@tag='111']">
3644 <name type="conference">
3646 <xsl:call-template name="uri"/>
3648 <xsl:call-template name="nameACDEQ"/>
3650 <roleTerm authority="marcrelator" type="text">creator</roleTerm>
3652 <xsl:call-template name="role"/>
3655 <xsl:for-each select="marc:datafield[@tag='700'][not(marc:subfield[@code='t'])]">
3656 <name type="personal">
3658 <xsl:call-template name="uri"/>
3660 <xsl:call-template name="nameABCDQ"/>
3661 <xsl:call-template name="affiliation"/>
3662 <xsl:call-template name="role"/>
3665 <xsl:for-each select="marc:datafield[@tag='710'][not(marc:subfield[@code='t'])]">
3666 <name type="corporate">
3668 <xsl:call-template name="uri"/>
3670 <xsl:call-template name="nameABCDN"/>
3671 <xsl:call-template name="role"/>
3674 <xsl:for-each select="marc:datafield[@tag='711'][not(marc:subfield[@code='t'])]">
3675 <name type="conference">
3677 <xsl:call-template name="uri"/>
3679 <xsl:call-template name="nameACDEQ"/>
3680 <xsl:call-template name="role"/>
3683 <xsl:for-each select="marc:datafield[@tag='720'][not(marc:subfield[@code='t'])]">
3685 <xsl:if test="@ind1=1">
3686 <xsl:attribute name="type">
3687 <xsl:text>personal</xsl:text>
3691 <xsl:value-of select="marc:subfield[@code='a']"/>
3693 <xsl:call-template name="role"/>
3697 <xsl:if test="$leader7='c'">
3698 <xsl:attribute name="collection">yes</xsl:attribute>
3700 <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
3701 <xsl:attribute name="manuscript">yes</xsl:attribute>
3704 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
3705 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
3706 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
3707 <xsl:when test="$leader6='i'">sound recording-nonmusical</xsl:when>
3708 <xsl:when test="$leader6='j'">sound recording-musical</xsl:when>
3709 <xsl:when test="$leader6='k'">still image</xsl:when>
3710 <xsl:when test="$leader6='g'">moving image</xsl:when>
3711 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
3712 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
3713 <xsl:when test="$leader6='p'">mixed material</xsl:when>
3716 <xsl:if test="substring($controlField008,26,1)='d'">
3717 <genre authority="marcgt">globe</genre>
3720 test="marc:controlfield[@tag='007'][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
3721 <genre authority="marcgt">remote-sensing image</genre>
3723 <xsl:if test="$typeOf008='MP'">
3724 <xsl:variable name="controlField008-25" select="substring($controlField008,26,1)"/>
3727 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']">
3728 <genre authority="marcgt">map</genre>
3731 test="$controlField008-25='e' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
3732 <genre authority="marcgt">atlas</genre>
3736 <xsl:if test="$typeOf008='SE'">
3737 <xsl:variable name="controlField008-21" select="substring($controlField008,22,1)"/>
3739 <xsl:when test="$controlField008-21='d'">
3740 <genre authority="marcgt">database</genre>
3742 <xsl:when test="$controlField008-21='l'">
3743 <genre authority="marcgt">loose-leaf</genre>
3745 <xsl:when test="$controlField008-21='m'">
3746 <genre authority="marcgt">series</genre>
3748 <xsl:when test="$controlField008-21='n'">
3749 <genre authority="marcgt">newspaper</genre>
3751 <xsl:when test="$controlField008-21='p'">
3752 <genre authority="marcgt">periodical</genre>
3754 <xsl:when test="$controlField008-21='w'">
3755 <genre authority="marcgt">web site</genre>
3759 <xsl:if test="$typeOf008='BK' or $typeOf008='SE'">
3760 <xsl:variable name="controlField008-24" select="substring($controlField008,25,4)"/>
3762 <xsl:when test="contains($controlField008-24,'a')">
3763 <genre authority="marcgt">abstract or summary</genre>
3765 <xsl:when test="contains($controlField008-24,'b')">
3766 <genre authority="marcgt">bibliography</genre>
3768 <xsl:when test="contains($controlField008-24,'c')">
3769 <genre authority="marcgt">catalog</genre>
3771 <xsl:when test="contains($controlField008-24,'d')">
3772 <genre authority="marcgt">dictionary</genre>
3774 <xsl:when test="contains($controlField008-24,'e')">
3775 <genre authority="marcgt">encyclopedia</genre>
3777 <xsl:when test="contains($controlField008-24,'f')">
3778 <genre authority="marcgt">handbook</genre>
3780 <xsl:when test="contains($controlField008-24,'g')">
3781 <genre authority="marcgt">legal article</genre>
3783 <xsl:when test="contains($controlField008-24,'i')">
3784 <genre authority="marcgt">index</genre>
3786 <xsl:when test="contains($controlField008-24,'k')">
3787 <genre authority="marcgt">discography</genre>
3789 <xsl:when test="contains($controlField008-24,'l')">
3790 <genre authority="marcgt">legislation</genre>
3792 <xsl:when test="contains($controlField008-24,'m')">
3793 <genre authority="marcgt">theses</genre>
3795 <xsl:when test="contains($controlField008-24,'n')">
3796 <genre authority="marcgt">survey of literature</genre>
3798 <xsl:when test="contains($controlField008-24,'o')">
3799 <genre authority="marcgt">review</genre>
3801 <xsl:when test="contains($controlField008-24,'p')">
3802 <genre authority="marcgt">programmed text</genre>
3804 <xsl:when test="contains($controlField008-24,'q')">
3805 <genre authority="marcgt">filmography</genre>
3807 <xsl:when test="contains($controlField008-24,'r')">
3808 <genre authority="marcgt">directory</genre>
3810 <xsl:when test="contains($controlField008-24,'s')">
3811 <genre authority="marcgt">statistics</genre>
3813 <xsl:when test="contains($controlField008-24,'t')">
3814 <genre authority="marcgt">technical report</genre>
3816 <xsl:when test="contains($controlField008-24,'v')">
3817 <genre authority="marcgt">legal case and case notes</genre>
3819 <xsl:when test="contains($controlField008-24,'w')">
3820 <genre authority="marcgt">law report or digest</genre>
3822 <xsl:when test="contains($controlField008-24,'z')">
3823 <genre authority="marcgt">treaty</genre>
3826 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
3828 <xsl:when test="$controlField008-29='1'">
3829 <genre authority="marcgt">conference publication</genre>
3833 <xsl:if test="$typeOf008='CF'">
3834 <xsl:variable name="controlField008-26" select="substring($controlField008,27,1)"/>
3836 <xsl:when test="$controlField008-26='a'">
3837 <genre authority="marcgt">numeric data</genre>
3839 <xsl:when test="$controlField008-26='e'">
3840 <genre authority="marcgt">database</genre>
3842 <xsl:when test="$controlField008-26='f'">
3843 <genre authority="marcgt">font</genre>
3845 <xsl:when test="$controlField008-26='g'">
3846 <genre authority="marcgt">game</genre>
3850 <xsl:if test="$typeOf008='BK'">
3851 <xsl:if test="substring($controlField008,25,1)='j'">
3852 <genre authority="marcgt">patent</genre>
3854 <xsl:if test="substring($controlField008,25,1)='2'">
3855 <genre authority="marcgt">offprint</genre>
3857 <xsl:if test="substring($controlField008,31,1)='1'">
3858 <genre authority="marcgt">festschrift</genre>
3860 <xsl:variable name="controlField008-34" select="substring($controlField008,35,1)"/>
3862 test="$controlField008-34='a' or $controlField008-34='b' or $controlField008-34='c' or $controlField008-34='d'">
3863 <genre authority="marcgt">biography</genre>
3865 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
3867 <xsl:when test="$controlField008-33='e'">
3868 <genre authority="marcgt">essay</genre>
3870 <xsl:when test="$controlField008-33='d'">
3871 <genre authority="marcgt">drama</genre>
3873 <xsl:when test="$controlField008-33='c'">
3874 <genre authority="marcgt">comic strip</genre>
3876 <xsl:when test="$controlField008-33='l'">
3877 <genre authority="marcgt">fiction</genre>
3879 <xsl:when test="$controlField008-33='h'">
3880 <genre authority="marcgt">humor, satire</genre>
3882 <xsl:when test="$controlField008-33='i'">
3883 <genre authority="marcgt">letter</genre>
3885 <xsl:when test="$controlField008-33='f'">
3886 <genre authority="marcgt">novel</genre>
3888 <xsl:when test="$controlField008-33='j'">
3889 <genre authority="marcgt">short story</genre>
3891 <xsl:when test="$controlField008-33='s'">
3892 <genre authority="marcgt">speech</genre>
3896 <xsl:if test="$typeOf008='MU'">
3897 <xsl:variable name="controlField008-30-31" select="substring($controlField008,31,2)"/>
3898 <xsl:if test="contains($controlField008-30-31,'b')">
3899 <genre authority="marcgt">biography</genre>
3901 <xsl:if test="contains($controlField008-30-31,'c')">
3902 <genre authority="marcgt">conference publication</genre>
3904 <xsl:if test="contains($controlField008-30-31,'d')">
3905 <genre authority="marcgt">drama</genre>
3907 <xsl:if test="contains($controlField008-30-31,'e')">
3908 <genre authority="marcgt">essay</genre>
3910 <xsl:if test="contains($controlField008-30-31,'f')">
3911 <genre authority="marcgt">fiction</genre>
3913 <xsl:if test="contains($controlField008-30-31,'o')">
3914 <genre authority="marcgt">folktale</genre>
3916 <xsl:if test="contains($controlField008-30-31,'h')">
3917 <genre authority="marcgt">history</genre>
3919 <xsl:if test="contains($controlField008-30-31,'k')">
3920 <genre authority="marcgt">humor, satire</genre>
3922 <xsl:if test="contains($controlField008-30-31,'m')">
3923 <genre authority="marcgt">memoir</genre>
3925 <xsl:if test="contains($controlField008-30-31,'p')">
3926 <genre authority="marcgt">poetry</genre>
3928 <xsl:if test="contains($controlField008-30-31,'r')">
3929 <genre authority="marcgt">rehearsal</genre>
3931 <xsl:if test="contains($controlField008-30-31,'g')">
3932 <genre authority="marcgt">reporting</genre>
3934 <xsl:if test="contains($controlField008-30-31,'s')">
3935 <genre authority="marcgt">sound</genre>
3937 <xsl:if test="contains($controlField008-30-31,'l')">
3938 <genre authority="marcgt">speech</genre>
3941 <xsl:if test="$typeOf008='VM'">
3942 <xsl:variable name="controlField008-33" select="substring($controlField008,34,1)"/>
3944 <xsl:when test="$controlField008-33='a'">
3945 <genre authority="marcgt">art original</genre>
3947 <xsl:when test="$controlField008-33='b'">
3948 <genre authority="marcgt">kit</genre>
3950 <xsl:when test="$controlField008-33='c'">
3951 <genre authority="marcgt">art reproduction</genre>
3953 <xsl:when test="$controlField008-33='d'">
3954 <genre authority="marcgt">diorama</genre>
3956 <xsl:when test="$controlField008-33='f'">
3957 <genre authority="marcgt">filmstrip</genre>
3959 <xsl:when test="$controlField008-33='g'">
3960 <genre authority="marcgt">legal article</genre>
3962 <xsl:when test="$controlField008-33='i'">
3963 <genre authority="marcgt">picture</genre>
3965 <xsl:when test="$controlField008-33='k'">
3966 <genre authority="marcgt">graphic</genre>
3968 <xsl:when test="$controlField008-33='l'">
3969 <genre authority="marcgt">technical drawing</genre>
3971 <xsl:when test="$controlField008-33='m'">
3972 <genre authority="marcgt">motion picture</genre>
3974 <xsl:when test="$controlField008-33='n'">
3975 <genre authority="marcgt">chart</genre>
3977 <xsl:when test="$controlField008-33='o'">
3978 <genre authority="marcgt">flash card</genre>
3980 <xsl:when test="$controlField008-33='p'">
3981 <genre authority="marcgt">microscope slide</genre>
3984 test="$controlField008-33='q' or marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
3985 <genre authority="marcgt">model</genre>
3987 <xsl:when test="$controlField008-33='r'">
3988 <genre authority="marcgt">realia</genre>
3990 <xsl:when test="$controlField008-33='s'">
3991 <genre authority="marcgt">slide</genre>
3993 <xsl:when test="$controlField008-33='t'">
3994 <genre authority="marcgt">transparency</genre>
3996 <xsl:when test="$controlField008-33='v'">
3997 <genre authority="marcgt">videorecording</genre>
3999 <xsl:when test="$controlField008-33='w'">
4000 <genre authority="marcgt">toy</genre>
4005 <!-- 1.20 047 genre tmee-->
4007 <xsl:for-each select="marc:datafield[@tag=047]">
4008 <genre authority="marcgt">
4009 <xsl:attribute name="authority">
4010 <xsl:value-of select="marc:subfield[@code='2']"/>
4012 <xsl:call-template name="subfieldSelect">
4013 <xsl:with-param name="codes">abcdef</xsl:with-param>
4014 <xsl:with-param name="delimeter">-</xsl:with-param>
4015 </xsl:call-template>
4018 <xsl:for-each select="marc:datafield[@tag=655]">
4019 <genre authority="marcgt">
4020 <xsl:attribute name="authority">
4021 <xsl:value-of select="marc:subfield[@code='2']"/>
4023 <xsl:call-template name="subfieldSelect">
4024 <xsl:with-param name="codes">abvxyz</xsl:with-param>
4025 <xsl:with-param name="delimeter">-</xsl:with-param>
4026 </xsl:call-template>
4030 <xsl:variable name="MARCpublicationCode"
4031 select="normalize-space(substring($controlField008,16,3))"/>
4032 <xsl:if test="translate($MARCpublicationCode,'|','')">
4035 <xsl:attribute name="type">code</xsl:attribute>
4036 <xsl:attribute name="authority">marccountry</xsl:attribute>
4037 <xsl:value-of select="$MARCpublicationCode"/>
4041 <xsl:for-each select="marc:datafield[@tag=044]/marc:subfield[@code='c']">
4044 <xsl:attribute name="type">code</xsl:attribute>
4045 <xsl:attribute name="authority">iso3166</xsl:attribute>
4046 <xsl:value-of select="."/>
4050 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='a']">
4053 <xsl:attribute name="type">text</xsl:attribute>
4054 <xsl:call-template name="chopPunctuationFront">
4055 <xsl:with-param name="chopString">
4056 <xsl:call-template name="chopPunctuation">
4057 <xsl:with-param name="chopString" select="."/>
4058 </xsl:call-template>
4060 </xsl:call-template>
4064 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='m']">
4065 <dateValid point="start">
4066 <xsl:value-of select="."/>
4069 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='n']">
4070 <dateValid point="end">
4071 <xsl:value-of select="."/>
4074 <xsl:for-each select="marc:datafield[@tag=046]/marc:subfield[@code='j']">
4076 <xsl:value-of select="."/>
4080 select="marc:datafield[@tag=260]/marc:subfield[@code='b' or @code='c' or @code='g']">
4082 <xsl:when test="@code='b'">
4084 <xsl:call-template name="chopPunctuation">
4085 <xsl:with-param name="chopString" select="."/>
4086 <xsl:with-param name="punctuation">
4087 <xsl:text>:,;/ </xsl:text>
4089 </xsl:call-template>
4092 <xsl:when test="@code='c'">
4094 <xsl:call-template name="chopPunctuation">
4095 <xsl:with-param name="chopString" select="."/>
4096 </xsl:call-template>
4099 <xsl:when test="@code='g'">
4101 <xsl:value-of select="."/>
4106 <xsl:variable name="dataField260c">
4107 <xsl:call-template name="chopPunctuation">
4108 <xsl:with-param name="chopString"
4109 select="marc:datafield[@tag=260]/marc:subfield[@code='c']"/>
4110 </xsl:call-template>
4112 <xsl:variable name="controlField008-7-10"
4113 select="normalize-space(substring($controlField008, 8, 4))"/>
4114 <xsl:variable name="controlField008-11-14"
4115 select="normalize-space(substring($controlField008, 12, 4))"/>
4116 <xsl:variable name="controlField008-6"
4117 select="normalize-space(substring($controlField008, 7, 1))"/>
4119 test="$controlField008-6='e' or $controlField008-6='p' or $controlField008-6='r' or $controlField008-6='t' or $controlField008-6='s'">
4120 <xsl:if test="$controlField008-7-10 and ($controlField008-7-10 != $dataField260c)">
4121 <dateIssued encoding="marc">
4122 <xsl:value-of select="$controlField008-7-10"/>
4127 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'">
4128 <xsl:if test="$controlField008-7-10">
4129 <dateIssued encoding="marc" point="start">
4130 <xsl:value-of select="$controlField008-7-10"/>
4135 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'">
4136 <xsl:if test="$controlField008-11-14">
4137 <dateIssued encoding="marc" point="end">
4138 <xsl:value-of select="$controlField008-11-14"/>
4142 <xsl:if test="$controlField008-6='q'">
4143 <xsl:if test="$controlField008-7-10">
4144 <dateIssued encoding="marc" point="start" qualifier="questionable">
4145 <xsl:value-of select="$controlField008-7-10"/>
4149 <xsl:if test="$controlField008-6='q'">
4150 <xsl:if test="$controlField008-11-14">
4151 <dateIssued encoding="marc" point="end" qualifier="questionable">
4152 <xsl:value-of select="$controlField008-11-14"/>
4156 <xsl:if test="$controlField008-6='t'">
4157 <xsl:if test="$controlField008-11-14">
4158 <copyrightDate encoding="marc">
4159 <xsl:value-of select="$controlField008-11-14"/>
4164 select="marc:datafield[@tag=033][@ind1=0 or @ind1=1]/marc:subfield[@code='a']">
4165 <dateCaptured encoding="iso8601">
4166 <xsl:value-of select="."/>
4169 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][1]">
4170 <dateCaptured encoding="iso8601" point="start">
4171 <xsl:value-of select="."/>
4174 <xsl:for-each select="marc:datafield[@tag=033][@ind1=2]/marc:subfield[@code='a'][2]">
4175 <dateCaptured encoding="iso8601" point="end">
4176 <xsl:value-of select="."/>
4179 <xsl:for-each select="marc:datafield[@tag=250]/marc:subfield[@code='a']">
4181 <xsl:value-of select="."/>
4184 <xsl:for-each select="marc:leader">
4188 test="$leader7='a' or $leader7='c' or $leader7='d' or $leader7='m'"
4189 >monographic</xsl:when>
4190 <xsl:when test="$leader7='b' or $leader7='i' or $leader7='s'"
4191 >continuing</xsl:when>
4195 <xsl:for-each select="marc:datafield[@tag=310]|marc:datafield[@tag=321]">
4197 <xsl:call-template name="subfieldSelect">
4198 <xsl:with-param name="codes">ab</xsl:with-param>
4199 </xsl:call-template>
4203 <xsl:variable name="controlField008-35-37"
4204 select="normalize-space(translate(substring($controlField008,36,3),'|#',''))"/>
4205 <xsl:if test="$controlField008-35-37">
4207 <languageTerm authority="iso639-2b" type="code">
4208 <xsl:value-of select="substring($controlField008,36,3)"/>
4212 <xsl:for-each select="marc:datafield[@tag=041]">
4214 select="marc:subfield[@code='a' or @code='b' or @code='d' or @code='e' or @code='f' or @code='g' or @code='h']">
4215 <xsl:variable name="langCodes" select="."/>
4217 <xsl:when test="../marc:subfield[@code='2']='rfc3066'">
4218 <!-- not stacked but could be repeated -->
4219 <xsl:call-template name="rfcLanguages">
4220 <xsl:with-param name="nodeNum">
4221 <xsl:value-of select="1"/>
4223 <xsl:with-param name="usedLanguages">
4226 <xsl:with-param name="controlField008-35-37">
4227 <xsl:value-of select="$controlField008-35-37"/>
4229 </xsl:call-template>
4233 <xsl:variable name="allLanguages">
4234 <xsl:copy-of select="$langCodes"/>
4236 <xsl:variable name="currentLanguage">
4237 <xsl:value-of select="substring($allLanguages,1,3)"/>
4239 <xsl:call-template name="isoLanguage">
4240 <xsl:with-param name="currentLanguage">
4241 <xsl:value-of select="substring($allLanguages,1,3)"/>
4243 <xsl:with-param name="remainingLanguages">
4245 select="substring($allLanguages,4,string-length($allLanguages)-3)"
4248 <xsl:with-param name="usedLanguages">
4249 <xsl:if test="$controlField008-35-37">
4250 <xsl:value-of select="$controlField008-35-37"/>
4253 </xsl:call-template>
4258 <xsl:variable name="physicalDescription">
4259 <!--3.2 change tmee 007/11 -->
4260 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='a']">
4261 <digitalOrigin>reformatted digital</digitalOrigin>
4263 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='b']">
4264 <digitalOrigin>digitized microfilm</digitalOrigin>
4266 <xsl:if test="$typeOf008='CF' and marc:controlfield[@tag=007][substring(.,12,1)='d']">
4267 <digitalOrigin>digitized other analog</digitalOrigin>
4269 <xsl:variable name="controlField008-23" select="substring($controlField008,24,1)"/>
4270 <xsl:variable name="controlField008-29" select="substring($controlField008,30,1)"/>
4271 <xsl:variable name="check008-23">
4273 test="$typeOf008='BK' or $typeOf008='MU' or $typeOf008='SE' or $typeOf008='MM'">
4274 <xsl:value-of select="true()"/>
4277 <xsl:variable name="check008-29">
4278 <xsl:if test="$typeOf008='MP' or $typeOf008='VM'">
4279 <xsl:value-of select="true()"/>
4284 test="($check008-23 and $controlField008-23='f') or ($check008-29 and $controlField008-29='f')">
4285 <form authority="marcform">braille</form>
4288 test="($controlField008-23=' ' and ($leader6='c' or $leader6='d')) or (($typeOf008='BK' or $typeOf008='SE') and ($controlField008-23=' ' or $controlField008='r'))">
4289 <form authority="marcform">print</form>
4292 test="$leader6 = 'm' or ($check008-23 and $controlField008-23='s') or ($check008-29 and $controlField008-29='s')">
4293 <form authority="marcform">electronic</form>
4296 test="($check008-23 and $controlField008-23='b') or ($check008-29 and $controlField008-29='b')">
4297 <form authority="marcform">microfiche</form>
4300 test="($check008-23 and $controlField008-23='a') or ($check008-29 and $controlField008-29='a')">
4301 <form authority="marcform">microfilm</form>
4305 <xsl:if test="marc:datafield[@tag=130]/marc:subfield[@code='h']">
4306 <form authority="gmd">
4307 <xsl:call-template name="chopBrackets">
4308 <xsl:with-param name="chopString">
4309 <xsl:value-of select="marc:datafield[@tag=130]/marc:subfield[@code='h']"
4312 </xsl:call-template>
4315 <xsl:if test="marc:datafield[@tag=240]/marc:subfield[@code='h']">
4316 <form authority="gmd">
4317 <xsl:call-template name="chopBrackets">
4318 <xsl:with-param name="chopString">
4319 <xsl:value-of select="marc:datafield[@tag=240]/marc:subfield[@code='h']"
4322 </xsl:call-template>
4325 <xsl:if test="marc:datafield[@tag=242]/marc:subfield[@code='h']">
4326 <form authority="gmd">
4327 <xsl:call-template name="chopBrackets">
4328 <xsl:with-param name="chopString">
4329 <xsl:value-of select="marc:datafield[@tag=242]/marc:subfield[@code='h']"
4332 </xsl:call-template>
4335 <xsl:if test="marc:datafield[@tag=245]/marc:subfield[@code='h']">
4336 <form authority="gmd">
4337 <xsl:call-template name="chopBrackets">
4338 <xsl:with-param name="chopString">
4339 <xsl:value-of select="marc:datafield[@tag=245]/marc:subfield[@code='h']"
4342 </xsl:call-template>
4345 <xsl:if test="marc:datafield[@tag=246]/marc:subfield[@code='h']">
4346 <form authority="gmd">
4347 <xsl:call-template name="chopBrackets">
4348 <xsl:with-param name="chopString">
4349 <xsl:value-of select="marc:datafield[@tag=246]/marc:subfield[@code='h']"
4352 </xsl:call-template>
4355 <xsl:if test="marc:datafield[@tag=730]/marc:subfield[@code='h']">
4356 <form authority="gmd">
4357 <xsl:call-template name="chopBrackets">
4358 <xsl:with-param name="chopString">
4359 <xsl:value-of select="marc:datafield[@tag=730]/marc:subfield[@code='h']"
4362 </xsl:call-template>
4365 <xsl:for-each select="marc:datafield[@tag=256]/marc:subfield[@code='a']">
4367 <xsl:value-of select="."/>
4370 <xsl:for-each select="marc:controlfield[@tag=007][substring(text(),1,1)='c']">
4372 <xsl:when test="substring(text(),14,1)='a'">
4373 <reformattingQuality>access</reformattingQuality>
4375 <xsl:when test="substring(text(),14,1)='p'">
4376 <reformattingQuality>preservation</reformattingQuality>
4378 <xsl:when test="substring(text(),14,1)='r'">
4379 <reformattingQuality>replacement</reformattingQuality>
4383 <!--3.2 change tmee 007/01 -->
4385 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='b']">
4386 <form authority="smd">chip cartridge</form>
4389 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='c']">
4390 <form authority="smd">computer optical disc cartridge</form>
4393 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='j']">
4394 <form authority="smd">magnetic disc</form>
4397 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='m']">
4398 <form authority="smd">magneto-optical disc</form>
4401 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='o']">
4402 <form authority="smd">optical disc</form>
4405 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='r']">
4406 <form authority="smd">remote</form>
4409 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='a']">
4410 <form authority="smd">tape cartridge</form>
4413 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='f']">
4414 <form authority="smd">tape cassette</form>
4417 test="marc:controlfield[@tag=007][substring(text(),1,1)='c'][substring(text(),2,1)='h']">
4418 <form authority="smd">tape reel</form>
4422 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='a']">
4423 <form authority="smd">celestial globe</form>
4426 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='e']">
4427 <form authority="smd">earth moon globe</form>
4430 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='b']">
4431 <form authority="smd">planetary or lunar globe</form>
4434 test="marc:controlfield[@tag=007][substring(text(),1,1)='d'][substring(text(),2,1)='c']">
4435 <form authority="smd">terrestrial globe</form>
4439 test="marc:controlfield[@tag=007][substring(text(),1,1)='o'][substring(text(),2,1)='o']">
4440 <form authority="smd">kit</form>
4444 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='d']">
4445 <form authority="smd">atlas</form>
4448 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='g']">
4449 <form authority="smd">diagram</form>
4452 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='j']">
4453 <form authority="smd">map</form>
4456 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='q']">
4457 <form authority="smd">model</form>
4460 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='k']">
4461 <form authority="smd">profile</form>
4464 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='r']">
4465 <form authority="smd">remote-sensing image</form>
4468 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='s']">
4469 <form authority="smd">section</form>
4472 test="marc:controlfield[@tag=007][substring(text(),1,1)='a'][substring(text(),2,1)='y']">
4473 <form authority="smd">view</form>
4477 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='a']">
4478 <form authority="smd">aperture card</form>
4481 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='e']">
4482 <form authority="smd">microfiche</form>
4485 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='f']">
4486 <form authority="smd">microfiche cassette</form>
4489 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='b']">
4490 <form authority="smd">microfilm cartridge</form>
4493 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='c']">
4494 <form authority="smd">microfilm cassette</form>
4497 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='d']">
4498 <form authority="smd">microfilm reel</form>
4501 test="marc:controlfield[@tag=007][substring(text(),1,1)='h'][substring(text(),2,1)='g']">
4502 <form authority="smd">microopaque</form>
4506 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='c']">
4507 <form authority="smd">film cartridge</form>
4510 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='f']">
4511 <form authority="smd">film cassette</form>
4514 test="marc:controlfield[@tag=007][substring(text(),1,1)='m'][substring(text(),2,1)='r']">
4515 <form authority="smd">film reel</form>
4519 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='n']">
4520 <form authority="smd">chart</form>
4523 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='c']">
4524 <form authority="smd">collage</form>
4527 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='d']">
4528 <form authority="smd">drawing</form>
4531 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='o']">
4532 <form authority="smd">flash card</form>
4535 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='e']">
4536 <form authority="smd">painting</form>
4539 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='f']">
4540 <form authority="smd">photomechanical print</form>
4543 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='g']">
4544 <form authority="smd">photonegative</form>
4547 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='h']">
4548 <form authority="smd">photoprint</form>
4551 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='i']">
4552 <form authority="smd">picture</form>
4555 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='j']">
4556 <form authority="smd">print</form>
4559 test="marc:controlfield[@tag=007][substring(text(),1,1)='k'][substring(text(),2,1)='l']">
4560 <form authority="smd">technical drawing</form>
4564 test="marc:controlfield[@tag=007][substring(text(),1,1)='q'][substring(text(),2,1)='q']">
4565 <form authority="smd">notated music</form>
4569 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='d']">
4570 <form authority="smd">filmslip</form>
4573 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='c']">
4574 <form authority="smd">filmstrip cartridge</form>
4577 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='o']">
4578 <form authority="smd">filmstrip roll</form>
4581 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='f']">
4582 <form authority="smd">other filmstrip type</form>
4585 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='s']">
4586 <form authority="smd">slide</form>
4589 test="marc:controlfield[@tag=007][substring(text(),1,1)='g'][substring(text(),2,1)='t']">
4590 <form authority="smd">transparency</form>
4593 test="marc:controlfield[@tag=007][substring(text(),1,1)='r'][substring(text(),2,1)='r']">
4594 <form authority="smd">remote-sensing image</form>
4597 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='e']">
4598 <form authority="smd">cylinder</form>
4601 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='q']">
4602 <form authority="smd">roll</form>
4605 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='g']">
4606 <form authority="smd">sound cartridge</form>
4609 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='s']">
4610 <form authority="smd">sound cassette</form>
4613 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='d']">
4614 <form authority="smd">sound disc</form>
4617 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='t']">
4618 <form authority="smd">sound-tape reel</form>
4621 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='i']">
4622 <form authority="smd">sound-track film</form>
4625 test="marc:controlfield[@tag=007][substring(text(),1,1)='s'][substring(text(),2,1)='w']">
4626 <form authority="smd">wire recording</form>
4630 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='c']">
4631 <form authority="smd">braille</form>
4634 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='b']">
4635 <form authority="smd">combination</form>
4638 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='a']">
4639 <form authority="smd">moon</form>
4642 test="marc:controlfield[@tag=007][substring(text(),1,1)='f'][substring(text(),2,1)='d']">
4643 <form authority="smd">tactile, with no writing system</form>
4647 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='c']">
4648 <form authority="smd">braille</form>
4651 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='b']">
4652 <form authority="smd">large print</form>
4655 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='a']">
4656 <form authority="smd">regular print</form>
4659 test="marc:controlfield[@tag=007][substring(text(),1,1)='t'][substring(text(),2,1)='d']">
4660 <form authority="smd">text in looseleaf binder</form>
4664 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='c']">
4665 <form authority="smd">videocartridge</form>
4668 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='f']">
4669 <form authority="smd">videocassette</form>
4672 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='d']">
4673 <form authority="smd">videodisc</form>
4676 test="marc:controlfield[@tag=007][substring(text(),1,1)='v'][substring(text(),2,1)='r']">
4677 <form authority="smd">videoreel</form>
4681 select="marc:datafield[@tag=856]/marc:subfield[@code='q'][string-length(.)>1]">
4683 <xsl:value-of select="."/>
4684 </internetMediaType>
4686 <xsl:for-each select="marc:datafield[@tag=300]">
4688 <xsl:call-template name="subfieldSelect">
4689 <xsl:with-param name="codes">abce</xsl:with-param>
4690 </xsl:call-template>
4694 <xsl:if test="string-length(normalize-space($physicalDescription))">
4695 <physicalDescription>
4696 <xsl:copy-of select="$physicalDescription"/>
4697 </physicalDescription>
4699 <xsl:for-each select="marc:datafield[@tag=520]">
4701 <xsl:call-template name="uri"/>
4702 <xsl:call-template name="subfieldSelect">
4703 <xsl:with-param name="codes">ab</xsl:with-param>
4704 </xsl:call-template>
4707 <xsl:for-each select="marc:datafield[@tag=505]">
4709 <xsl:call-template name="uri"/>
4710 <xsl:call-template name="subfieldSelect">
4711 <xsl:with-param name="codes">agrt</xsl:with-param>
4712 </xsl:call-template>
4715 <xsl:for-each select="marc:datafield[@tag=521]">
4717 <xsl:call-template name="subfieldSelect">
4718 <xsl:with-param name="codes">ab</xsl:with-param>
4719 </xsl:call-template>
4722 <xsl:if test="$typeOf008='BK' or $typeOf008='CF' or $typeOf008='MU' or $typeOf008='VM'">
4723 <xsl:variable name="controlField008-22" select="substring($controlField008,23,1)"/>
4726 <xsl:when test="$controlField008-22='d'">
4727 <targetAudience authority="marctarget">adolescent</targetAudience>
4729 <xsl:when test="$controlField008-22='e'">
4730 <targetAudience authority="marctarget">adult</targetAudience>
4732 <xsl:when test="$controlField008-22='g'">
4733 <targetAudience authority="marctarget">general</targetAudience>
4736 test="$controlField008-22='b' or $controlField008-22='c' or $controlField008-22='j'">
4737 <targetAudience authority="marctarget">juvenile</targetAudience>
4739 <xsl:when test="$controlField008-22='a'">
4740 <targetAudience authority="marctarget">preschool</targetAudience>
4742 <xsl:when test="$controlField008-22='f'">
4743 <targetAudience authority="marctarget">specialized</targetAudience>
4747 <xsl:for-each select="marc:datafield[@tag=245]/marc:subfield[@code='c']">
4748 <note type="statement of responsibility">
4749 <xsl:value-of select="."/>
4752 <xsl:for-each select="marc:datafield[@tag=500]">
4754 <xsl:value-of select="marc:subfield[@code='a']"/>
4755 <xsl:call-template name="uri"/>
4759 <!--3.2 change tmee additional note fields-->
4761 <xsl:for-each select="marc:datafield[@tag=502]">
4762 <note type="thesis">
4763 <xsl:call-template name="uri"/>
4764 <xsl:variable name="str">
4765 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4766 <xsl:value-of select="."/>
4767 <xsl:text> </xsl:text>
4770 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4774 <xsl:for-each select="marc:datafield[@tag=504]">
4775 <note type="bibliography">
4776 <xsl:call-template name="uri"/>
4777 <xsl:variable name="str">
4778 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4779 <xsl:value-of select="."/>
4780 <xsl:text> </xsl:text>
4783 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4787 <xsl:for-each select="marc:datafield[@tag=508]">
4788 <note type="creation/production credits">
4789 <xsl:call-template name="uri"/>
4790 <xsl:variable name="str">
4791 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4792 <xsl:value-of select="."/>
4793 <xsl:text> </xsl:text>
4796 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4800 <xsl:for-each select="marc:datafield[@tag=506]">
4801 <note type="restrictions">
4802 <xsl:call-template name="uri"/>
4803 <xsl:variable name="str">
4804 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4805 <xsl:value-of select="."/>
4806 <xsl:text> </xsl:text>
4809 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4813 <xsl:for-each select="marc:datafield[@tag=510]">
4814 <note type="citation/reference">
4815 <xsl:call-template name="uri"/>
4816 <xsl:variable name="str">
4817 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4818 <xsl:value-of select="."/>
4819 <xsl:text> </xsl:text>
4822 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4827 <xsl:for-each select="marc:datafield[@tag=511]">
4828 <note type="performers">
4829 <xsl:call-template name="uri"/>
4830 <xsl:value-of select="marc:subfield[@code='a']"/>
4833 <xsl:for-each select="marc:datafield[@tag=518]">
4835 <xsl:call-template name="uri"/>
4836 <xsl:value-of select="marc:subfield[@code='a']"/>
4840 <xsl:for-each select="marc:datafield[@tag=530]">
4841 <note type="additional physical form">
4842 <xsl:call-template name="uri"/>
4843 <xsl:variable name="str">
4844 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4845 <xsl:value-of select="."/>
4846 <xsl:text> </xsl:text>
4849 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4853 <xsl:for-each select="marc:datafield[@tag=533]">
4854 <note type="reproduction">
4855 <xsl:call-template name="uri"/>
4856 <xsl:variable name="str">
4857 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4858 <xsl:value-of select="."/>
4859 <xsl:text> </xsl:text>
4862 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4866 <xsl:for-each select="marc:datafield[@tag=534]">
4867 <note type="original version">
4868 <xsl:call-template name="uri"/>
4869 <xsl:variable name="str">
4870 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4871 <xsl:value-of select="."/>
4872 <xsl:text> </xsl:text>
4875 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4879 <xsl:for-each select="marc:datafield[@tag=538]">
4880 <note type="system details">
4881 <xsl:call-template name="uri"/>
4882 <xsl:variable name="str">
4883 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4884 <xsl:value-of select="."/>
4885 <xsl:text> </xsl:text>
4888 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4892 <xsl:for-each select="marc:datafield[@tag=583]">
4893 <note type="action">
4894 <xsl:call-template name="uri"/>
4895 <xsl:variable name="str">
4896 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4897 <xsl:value-of select="."/>
4898 <xsl:text> </xsl:text>
4901 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4906 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]">
4908 <xsl:call-template name="uri"/>
4909 <xsl:variable name="str">
4910 <xsl:for-each select="marc:subfield[@code!='6' or @code!='8']">
4911 <xsl:value-of select="."/>
4912 <xsl:text> </xsl:text>
4915 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
4919 select="marc:datafield[@tag=034][marc:subfield[@code='d' or @code='e' or @code='f' or @code='g']]">
4923 <xsl:call-template name="subfieldSelect">
4924 <xsl:with-param name="codes">defg</xsl:with-param>
4925 </xsl:call-template>
4930 <xsl:for-each select="marc:datafield[@tag=043]">
4932 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
4934 <xsl:attribute name="authority">
4935 <xsl:if test="@code='a'">
4936 <xsl:text>marcgac</xsl:text>
4938 <xsl:if test="@code='b'">
4939 <xsl:value-of select="following-sibling::marc:subfield[@code=2]"/>
4941 <xsl:if test="@code='c'">
4942 <xsl:text>iso3166</xsl:text>
4945 <xsl:value-of select="self::marc:subfield"/>
4950 <!-- tmee 2006/11/27 -->
4951 <xsl:for-each select="marc:datafield[@tag=255]">
4953 <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='c']">
4955 <xsl:if test="@code='a'">
4957 <xsl:value-of select="."/>
4960 <xsl:if test="@code='b'">
4962 <xsl:value-of select="."/>
4965 <xsl:if test="@code='c'">
4967 <xsl:value-of select="."/>
4975 <xsl:apply-templates select="marc:datafield[653 >= @tag and @tag >= 600]"/>
4976 <xsl:apply-templates select="marc:datafield[@tag=656]"/>
4977 <xsl:for-each select="marc:datafield[@tag=752 or @tag=662]">
4979 <hierarchicalGeographic>
4980 <xsl:for-each select="marc:subfield[@code='a']">
4982 <xsl:call-template name="chopPunctuation">
4983 <xsl:with-param name="chopString" select="."/>
4984 </xsl:call-template>
4987 <xsl:for-each select="marc:subfield[@code='b']">
4989 <xsl:call-template name="chopPunctuation">
4990 <xsl:with-param name="chopString" select="."/>
4991 </xsl:call-template>
4994 <xsl:for-each select="marc:subfield[@code='c']">
4996 <xsl:call-template name="chopPunctuation">
4997 <xsl:with-param name="chopString" select="."/>
4998 </xsl:call-template>
5001 <xsl:for-each select="marc:subfield[@code='d']">
5003 <xsl:call-template name="chopPunctuation">
5004 <xsl:with-param name="chopString" select="."/>
5005 </xsl:call-template>
5008 <xsl:for-each select="marc:subfield[@code='e']">
5010 <xsl:call-template name="chopPunctuation">
5011 <xsl:with-param name="chopString" select="."/>
5012 </xsl:call-template>
5015 <xsl:for-each select="marc:subfield[@code='g']">
5017 <xsl:call-template name="chopPunctuation">
5018 <xsl:with-param name="chopString" select="."/>
5019 </xsl:call-template>
5022 <xsl:for-each select="marc:subfield[@code='h']">
5023 <extraterrestrialArea>
5024 <xsl:call-template name="chopPunctuation">
5025 <xsl:with-param name="chopString" select="."/>
5026 </xsl:call-template>
5027 </extraterrestrialArea>
5029 </hierarchicalGeographic>
5032 <xsl:for-each select="marc:datafield[@tag=045][marc:subfield[@code='b']]">
5035 <xsl:when test="@ind1=2">
5036 <temporal encoding="iso8601" point="start">
5037 <xsl:call-template name="chopPunctuation">
5038 <xsl:with-param name="chopString">
5039 <xsl:value-of select="marc:subfield[@code='b'][1]"/>
5041 </xsl:call-template>
5043 <temporal encoding="iso8601" point="end">
5044 <xsl:call-template name="chopPunctuation">
5045 <xsl:with-param name="chopString">
5046 <xsl:value-of select="marc:subfield[@code='b'][2]"/>
5048 </xsl:call-template>
5052 <xsl:for-each select="marc:subfield[@code='b']">
5053 <temporal encoding="iso8601">
5054 <xsl:call-template name="chopPunctuation">
5055 <xsl:with-param name="chopString" select="."/>
5056 </xsl:call-template>
5063 <xsl:for-each select="marc:datafield[@tag=050]">
5064 <xsl:for-each select="marc:subfield[@code='b']">
5065 <classification authority="lcc">
5066 <xsl:if test="../marc:subfield[@code='3']">
5067 <xsl:attribute name="displayLabel">
5068 <xsl:value-of select="../marc:subfield[@code='3']"/>
5071 <xsl:value-of select="preceding-sibling::marc:subfield[@code='a'][1]"/>
5072 <xsl:text> </xsl:text>
5073 <xsl:value-of select="text()"/>
5077 select="marc:subfield[@code='a'][not(following-sibling::marc:subfield[@code='b'])]">
5078 <classification authority="lcc">
5079 <xsl:if test="../marc:subfield[@code='3']">
5080 <xsl:attribute name="displayLabel">
5081 <xsl:value-of select="../marc:subfield[@code='3']"/>
5084 <xsl:value-of select="text()"/>
5088 <xsl:for-each select="marc:datafield[@tag=082]">
5089 <classification authority="ddc">
5090 <xsl:if test="marc:subfield[@code='2']">
5091 <xsl:attribute name="edition">
5092 <xsl:value-of select="marc:subfield[@code='2']"/>
5095 <xsl:call-template name="subfieldSelect">
5096 <xsl:with-param name="codes">ab</xsl:with-param>
5097 </xsl:call-template>
5100 <xsl:for-each select="marc:datafield[@tag=080]">
5101 <classification authority="udc">
5102 <xsl:call-template name="subfieldSelect">
5103 <xsl:with-param name="codes">abx</xsl:with-param>
5104 </xsl:call-template>
5107 <xsl:for-each select="marc:datafield[@tag=060]">
5108 <classification authority="nlm">
5109 <xsl:call-template name="subfieldSelect">
5110 <xsl:with-param name="codes">ab</xsl:with-param>
5111 </xsl:call-template>
5114 <xsl:for-each select="marc:datafield[@tag=086][@ind1=0]">
5115 <classification authority="sudocs">
5116 <xsl:value-of select="marc:subfield[@code='a']"/>
5119 <xsl:for-each select="marc:datafield[@tag=086][@ind1=1]">
5120 <classification authority="candoc">
5121 <xsl:value-of select="marc:subfield[@code='a']"/>
5124 <xsl:for-each select="marc:datafield[@tag=086]">
5126 <xsl:attribute name="authority">
5127 <xsl:value-of select="marc:subfield[@code='2']"/>
5129 <xsl:value-of select="marc:subfield[@code='a']"/>
5132 <xsl:for-each select="marc:datafield[@tag=084]">
5134 <xsl:attribute name="authority">
5135 <xsl:value-of select="marc:subfield[@code='2']"/>
5137 <xsl:call-template name="subfieldSelect">
5138 <xsl:with-param name="codes">ab</xsl:with-param>
5139 </xsl:call-template>
5142 <xsl:for-each select="marc:datafield[@tag=440]">
5143 <relatedItem type="series">
5146 <xsl:call-template name="chopPunctuation">
5147 <xsl:with-param name="chopString">
5148 <xsl:call-template name="subfieldSelect">
5149 <xsl:with-param name="codes">av</xsl:with-param>
5150 </xsl:call-template>
5152 </xsl:call-template>
5154 <xsl:call-template name="part"/>
5158 <xsl:for-each select="marc:datafield[@tag=490][@ind1=0]">
5159 <relatedItem type="series">
5162 <xsl:call-template name="chopPunctuation">
5163 <xsl:with-param name="chopString">
5164 <xsl:call-template name="subfieldSelect">
5165 <xsl:with-param name="codes">av</xsl:with-param>
5166 </xsl:call-template>
5168 </xsl:call-template>
5170 <xsl:call-template name="part"/>
5174 <xsl:for-each select="marc:datafield[@tag=510]">
5175 <relatedItem type="isReferencedBy">
5177 <xsl:call-template name="subfieldSelect">
5178 <xsl:with-param name="codes">abcx3</xsl:with-param>
5179 </xsl:call-template>
5183 <xsl:for-each select="marc:datafield[@tag=534]">
5184 <relatedItem type="original">
5185 <xsl:call-template name="relatedTitle"/>
5186 <xsl:call-template name="relatedName"/>
5187 <xsl:if test="marc:subfield[@code='b' or @code='c']">
5189 <xsl:for-each select="marc:subfield[@code='c']">
5191 <xsl:value-of select="."/>
5194 <xsl:for-each select="marc:subfield[@code='b']">
5196 <xsl:value-of select="."/>
5201 <xsl:call-template name="relatedIdentifierISSN"/>
5202 <xsl:for-each select="marc:subfield[@code='z']">
5203 <identifier type="isbn">
5204 <xsl:value-of select="."/>
5207 <xsl:call-template name="relatedNote"/>
5210 <xsl:for-each select="marc:datafield[@tag=700][marc:subfield[@code='t']]">
5212 <xsl:call-template name="constituentOrRelatedType"/>
5215 <xsl:call-template name="chopPunctuation">
5216 <xsl:with-param name="chopString">
5217 <xsl:call-template name="specialSubfieldSelect">
5218 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5219 <xsl:with-param name="axis">t</xsl:with-param>
5220 <xsl:with-param name="afterCodes">g</xsl:with-param>
5221 </xsl:call-template>
5223 </xsl:call-template>
5225 <xsl:call-template name="part"/>
5227 <name type="personal">
5229 <xsl:call-template name="specialSubfieldSelect">
5230 <xsl:with-param name="anyCodes">aq</xsl:with-param>
5231 <xsl:with-param name="axis">t</xsl:with-param>
5232 <xsl:with-param name="beforeCodes">g</xsl:with-param>
5233 </xsl:call-template>
5235 <xsl:call-template name="termsOfAddress"/>
5236 <xsl:call-template name="nameDate"/>
5237 <xsl:call-template name="role"/>
5239 <xsl:call-template name="relatedForm"/>
5240 <xsl:call-template name="relatedIdentifierISSN"/>
5243 <xsl:for-each select="marc:datafield[@tag=710][marc:subfield[@code='t']]">
5245 <xsl:call-template name="constituentOrRelatedType"/>
5248 <xsl:call-template name="chopPunctuation">
5249 <xsl:with-param name="chopString">
5250 <xsl:call-template name="specialSubfieldSelect">
5251 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5252 <xsl:with-param name="axis">t</xsl:with-param>
5253 <xsl:with-param name="afterCodes">dg</xsl:with-param>
5254 </xsl:call-template>
5256 </xsl:call-template>
5258 <xsl:call-template name="relatedPartNumName"/>
5260 <name type="corporate">
5261 <xsl:for-each select="marc:subfield[@code='a']">
5263 <xsl:value-of select="."/>
5266 <xsl:for-each select="marc:subfield[@code='b']">
5268 <xsl:value-of select="."/>
5271 <xsl:variable name="tempNamePart">
5272 <xsl:call-template name="specialSubfieldSelect">
5273 <xsl:with-param name="anyCodes">c</xsl:with-param>
5274 <xsl:with-param name="axis">t</xsl:with-param>
5275 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
5276 </xsl:call-template>
5278 <xsl:if test="normalize-space($tempNamePart)">
5280 <xsl:value-of select="$tempNamePart"/>
5283 <xsl:call-template name="role"/>
5285 <xsl:call-template name="relatedForm"/>
5286 <xsl:call-template name="relatedIdentifierISSN"/>
5289 <xsl:for-each select="marc:datafield[@tag=711][marc:subfield[@code='t']]">
5291 <xsl:call-template name="constituentOrRelatedType"/>
5294 <xsl:call-template name="chopPunctuation">
5295 <xsl:with-param name="chopString">
5296 <xsl:call-template name="specialSubfieldSelect">
5297 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
5298 <xsl:with-param name="axis">t</xsl:with-param>
5299 <xsl:with-param name="afterCodes">g</xsl:with-param>
5300 </xsl:call-template>
5302 </xsl:call-template>
5304 <xsl:call-template name="relatedPartNumName"/>
5306 <name type="conference">
5308 <xsl:call-template name="specialSubfieldSelect">
5309 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
5310 <xsl:with-param name="axis">t</xsl:with-param>
5311 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
5312 </xsl:call-template>
5315 <xsl:call-template name="relatedForm"/>
5316 <xsl:call-template name="relatedIdentifierISSN"/>
5319 <xsl:for-each select="marc:datafield[@tag=730][@ind2=2]">
5321 <xsl:call-template name="constituentOrRelatedType"/>
5324 <xsl:call-template name="chopPunctuation">
5325 <xsl:with-param name="chopString">
5326 <xsl:call-template name="subfieldSelect">
5327 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
5328 </xsl:call-template>
5330 </xsl:call-template>
5332 <xsl:call-template name="part"/>
5334 <xsl:call-template name="relatedForm"/>
5335 <xsl:call-template name="relatedIdentifierISSN"/>
5338 <xsl:for-each select="marc:datafield[@tag=740][@ind2=2]">
5340 <xsl:call-template name="constituentOrRelatedType"/>
5343 <xsl:call-template name="chopPunctuation">
5344 <xsl:with-param name="chopString">
5345 <xsl:value-of select="marc:subfield[@code='a']"/>
5347 </xsl:call-template>
5349 <xsl:call-template name="part"/>
5351 <xsl:call-template name="relatedForm"/>
5354 <xsl:for-each select="marc:datafield[@tag=760]|marc:datafield[@tag=762]">
5355 <relatedItem type="series">
5356 <xsl:call-template name="relatedItem76X-78X"/>
5360 select="marc:datafield[@tag=765]|marc:datafield[@tag=767]|marc:datafield[@tag=777]|marc:datafield[@tag=787]">
5362 <xsl:call-template name="relatedItem76X-78X"/>
5365 <xsl:for-each select="marc:datafield[@tag=775]">
5366 <relatedItem type="otherVersion">
5367 <xsl:call-template name="relatedItem76X-78X"/>
5370 <xsl:for-each select="marc:datafield[@tag=770]|marc:datafield[@tag=774]">
5371 <relatedItem type="constituent">
5372 <xsl:call-template name="relatedItem76X-78X"/>
5375 <xsl:for-each select="marc:datafield[@tag=772]|marc:datafield[@tag=773]">
5376 <relatedItem type="host">
5377 <xsl:call-template name="relatedItem76X-78X"/>
5380 <xsl:for-each select="marc:datafield[@tag=776]">
5381 <relatedItem type="otherFormat">
5382 <xsl:call-template name="relatedItem76X-78X"/>
5385 <xsl:for-each select="marc:datafield[@tag=780]">
5386 <relatedItem type="preceding">
5387 <xsl:call-template name="relatedItem76X-78X"/>
5390 <xsl:for-each select="marc:datafield[@tag=785]">
5391 <relatedItem type="succeeding">
5392 <xsl:call-template name="relatedItem76X-78X"/>
5395 <xsl:for-each select="marc:datafield[@tag=786]">
5396 <relatedItem type="original">
5397 <xsl:call-template name="relatedItem76X-78X"/>
5400 <xsl:for-each select="marc:datafield[@tag=800]">
5401 <relatedItem type="series">
5404 <xsl:call-template name="chopPunctuation">
5405 <xsl:with-param name="chopString">
5406 <xsl:call-template name="specialSubfieldSelect">
5407 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5408 <xsl:with-param name="axis">t</xsl:with-param>
5409 <xsl:with-param name="afterCodes">g</xsl:with-param>
5410 </xsl:call-template>
5412 </xsl:call-template>
5414 <xsl:call-template name="part"/>
5416 <name type="personal">
5418 <xsl:call-template name="chopPunctuation">
5419 <xsl:with-param name="chopString">
5420 <xsl:call-template name="specialSubfieldSelect">
5421 <xsl:with-param name="anyCodes">aq</xsl:with-param>
5422 <xsl:with-param name="axis">t</xsl:with-param>
5423 <xsl:with-param name="beforeCodes">g</xsl:with-param>
5424 </xsl:call-template>
5426 </xsl:call-template>
5428 <xsl:call-template name="termsOfAddress"/>
5429 <xsl:call-template name="nameDate"/>
5430 <xsl:call-template name="role"/>
5432 <xsl:call-template name="relatedForm"/>
5435 <xsl:for-each select="marc:datafield[@tag=810]">
5436 <relatedItem type="series">
5439 <xsl:call-template name="chopPunctuation">
5440 <xsl:with-param name="chopString">
5441 <xsl:call-template name="specialSubfieldSelect">
5442 <xsl:with-param name="anyCodes">tfklmorsv</xsl:with-param>
5443 <xsl:with-param name="axis">t</xsl:with-param>
5444 <xsl:with-param name="afterCodes">dg</xsl:with-param>
5445 </xsl:call-template>
5447 </xsl:call-template>
5449 <xsl:call-template name="relatedPartNumName"/>
5451 <name type="corporate">
5452 <xsl:for-each select="marc:subfield[@code='a']">
5454 <xsl:value-of select="."/>
5457 <xsl:for-each select="marc:subfield[@code='b']">
5459 <xsl:value-of select="."/>
5463 <xsl:call-template name="specialSubfieldSelect">
5464 <xsl:with-param name="anyCodes">c</xsl:with-param>
5465 <xsl:with-param name="axis">t</xsl:with-param>
5466 <xsl:with-param name="beforeCodes">dgn</xsl:with-param>
5467 </xsl:call-template>
5469 <xsl:call-template name="role"/>
5471 <xsl:call-template name="relatedForm"/>
5474 <xsl:for-each select="marc:datafield[@tag=811]">
5475 <relatedItem type="series">
5478 <xsl:call-template name="chopPunctuation">
5479 <xsl:with-param name="chopString">
5480 <xsl:call-template name="specialSubfieldSelect">
5481 <xsl:with-param name="anyCodes">tfklsv</xsl:with-param>
5482 <xsl:with-param name="axis">t</xsl:with-param>
5483 <xsl:with-param name="afterCodes">g</xsl:with-param>
5484 </xsl:call-template>
5486 </xsl:call-template>
5488 <xsl:call-template name="relatedPartNumName"/>
5490 <name type="conference">
5492 <xsl:call-template name="specialSubfieldSelect">
5493 <xsl:with-param name="anyCodes">aqdc</xsl:with-param>
5494 <xsl:with-param name="axis">t</xsl:with-param>
5495 <xsl:with-param name="beforeCodes">gn</xsl:with-param>
5496 </xsl:call-template>
5498 <xsl:call-template name="role"/>
5500 <xsl:call-template name="relatedForm"/>
5503 <xsl:for-each select="marc:datafield[@tag='830']">
5504 <relatedItem type="series">
5507 <xsl:call-template name="chopPunctuation">
5508 <xsl:with-param name="chopString">
5509 <xsl:call-template name="subfieldSelect">
5510 <xsl:with-param name="codes">adfgklmorsv</xsl:with-param>
5511 </xsl:call-template>
5513 </xsl:call-template>
5515 <xsl:call-template name="part"/>
5517 <xsl:call-template name="relatedForm"/>
5520 <xsl:for-each select="marc:datafield[@tag='856'][@ind2='2']/marc:subfield[@code='q']">
5523 <xsl:value-of select="."/>
5524 </internetMediaType>
5527 <xsl:for-each select="marc:datafield[@tag='020']">
5528 <xsl:call-template name="isInvalid">
5529 <xsl:with-param name="type">isbn</xsl:with-param>
5530 </xsl:call-template>
5531 <xsl:if test="marc:subfield[@code='a']">
5532 <identifier type="isbn">
5533 <xsl:value-of select="marc:subfield[@code='a']"/>
5537 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='0']">
5538 <xsl:call-template name="isInvalid">
5539 <xsl:with-param name="type">isrc</xsl:with-param>
5540 </xsl:call-template>
5541 <xsl:if test="marc:subfield[@code='a']">
5542 <identifier type="isrc">
5543 <xsl:value-of select="marc:subfield[@code='a']"/>
5547 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='2']">
5548 <xsl:call-template name="isInvalid">
5549 <xsl:with-param name="type">ismn</xsl:with-param>
5550 </xsl:call-template>
5551 <xsl:if test="marc:subfield[@code='a']">
5552 <identifier type="ismn">
5553 <xsl:value-of select="marc:subfield[@code='a']"/>
5557 <xsl:for-each select="marc:datafield[@tag='024'][@ind1='4']">
5558 <xsl:call-template name="isInvalid">
5559 <xsl:with-param name="type">sici</xsl:with-param>
5560 </xsl:call-template>
5561 <identifier type="sici">
5562 <xsl:call-template name="subfieldSelect">
5563 <xsl:with-param name="codes">ab</xsl:with-param>
5564 </xsl:call-template>
5567 <xsl:for-each select="marc:datafield[@tag='022']">
5568 <xsl:if test="marc:subfield[@code='a']">
5569 <xsl:call-template name="isInvalid">
5570 <xsl:with-param name="type">issn</xsl:with-param>
5571 </xsl:call-template>
5572 <identifier type="issn">
5573 <xsl:value-of select="marc:subfield[@code='a']"/>
5576 <xsl:if test="marc:subfield[@code='l']">
5577 <xsl:call-template name="isInvalid">
5578 <xsl:with-param name="type">issn-l</xsl:with-param>
5579 </xsl:call-template>
5580 <identifier type="issn-l">
5581 <xsl:value-of select="marc:subfield[@code='l']"/>
5588 <xsl:for-each select="marc:datafield[@tag='010']">
5589 <xsl:call-template name="isInvalid">
5590 <xsl:with-param name="type">lccn</xsl:with-param>
5591 </xsl:call-template>
5592 <identifier type="lccn">
5593 <xsl:value-of select="normalize-space(marc:subfield[@code='a'])"/>
5596 <xsl:for-each select="marc:datafield[@tag='028']">
5598 <xsl:attribute name="type">
5600 <xsl:when test="@ind1='0'">issue number</xsl:when>
5601 <xsl:when test="@ind1='1'">matrix number</xsl:when>
5602 <xsl:when test="@ind1='2'">music plate</xsl:when>
5603 <xsl:when test="@ind1='3'">music publisher</xsl:when>
5604 <xsl:when test="@ind1='4'">videorecording identifier</xsl:when>
5607 <!--<xsl:call-template name="isInvalid"/>-->
5608 <!-- no $z in 028 -->
5609 <xsl:call-template name="subfieldSelect">
5610 <xsl:with-param name="codes">
5612 <xsl:when test="@ind1='0'">ba</xsl:when>
5613 <xsl:otherwise>ab</xsl:otherwise>
5616 </xsl:call-template>
5619 <xsl:for-each select="marc:datafield[@tag='037']">
5620 <identifier type="stock number">
5621 <!--<xsl:call-template name="isInvalid"/>-->
5622 <!-- no $z in 037 -->
5623 <xsl:call-template name="subfieldSelect">
5624 <xsl:with-param name="codes">ab</xsl:with-param>
5625 </xsl:call-template>
5628 <xsl:for-each select="marc:datafield[@tag='856'][marc:subfield[@code='u']]">
5630 <xsl:attribute name="type">
5633 test="starts-with(marc:subfield[@code='u'],'urn:doi') or starts-with(marc:subfield[@code='u'],'doi')"
5636 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')"
5638 <xsl:otherwise>uri</xsl:otherwise>
5643 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') ">
5645 select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"
5649 <xsl:value-of select="marc:subfield[@code='u']"/>
5654 test="starts-with(marc:subfield[@code='u'],'urn:hdl') or starts-with(marc:subfield[@code='u'],'hdl')">
5655 <identifier type="hdl">
5656 <xsl:if test="marc:subfield[@code='y' or @code='3' or @code='z']">
5657 <xsl:attribute name="displayLabel">
5658 <xsl:call-template name="subfieldSelect">
5659 <xsl:with-param name="codes">y3z</xsl:with-param>
5660 </xsl:call-template>
5664 select="concat('hdl:',substring-after(marc:subfield[@code='u'],'http://hdl.loc.gov/'))"
5669 <xsl:for-each select="marc:datafield[@tag=024][@ind1=1]">
5670 <identifier type="upc">
5671 <xsl:call-template name="isInvalid"/>
5672 <xsl:value-of select="marc:subfield[@code='a']"/>
5676 <!-- 1/04 fix added $y -->
5679 <xsl:for-each select="marc:datafield[@tag=856][@ind2=1][marc:subfield[@code='u']]">
5680 <relatedItem type="otherVersion">
5683 <xsl:if test="marc:subfield[@code='y' or @code='3']">
5684 <xsl:attribute name="displayLabel">
5685 <xsl:call-template name="subfieldSelect">
5686 <xsl:with-param name="codes">y3</xsl:with-param>
5687 </xsl:call-template>
5690 <xsl:if test="marc:subfield[@code='z' ]">
5691 <xsl:attribute name="note">
5692 <xsl:call-template name="subfieldSelect">
5693 <xsl:with-param name="codes">z</xsl:with-param>
5694 </xsl:call-template>
5697 <xsl:value-of select="marc:subfield[@code='u']"/>
5702 <xsl:for-each select="marc:datafield[@tag=856][@ind2=2][marc:subfield[@code='u']]">
5706 <xsl:if test="marc:subfield[@code='y' or @code='3']">
5707 <xsl:attribute name="displayLabel">
5708 <xsl:call-template name="subfieldSelect">
5709 <xsl:with-param name="codes">y3</xsl:with-param>
5710 </xsl:call-template>
5713 <xsl:if test="marc:subfield[@code='z' ]">
5714 <xsl:attribute name="note">
5715 <xsl:call-template name="subfieldSelect">
5716 <xsl:with-param name="codes">z</xsl:with-param>
5717 </xsl:call-template>
5720 <xsl:value-of select="marc:subfield[@code='u']"/>
5726 <!-- 3.2 change tmee 856z -->
5729 <xsl:for-each select="marc:datafield[@tag=852]">
5731 <xsl:if test="marc:subfield[@code='a' or @code='b' or @code='e']">
5733 <xsl:call-template name="subfieldSelect">
5734 <xsl:with-param name="codes">abe</xsl:with-param>
5735 </xsl:call-template>
5739 <xsl:if test="marc:subfield[@code='u']">
5741 <xsl:call-template name="uri"/>
5742 <xsl:call-template name="subfieldSelect">
5743 <xsl:with-param name="codes">u</xsl:with-param>
5744 </xsl:call-template>
5749 test="marc:subfield[@code='h' or @code='i' or @code='j' or @code='k' or @code='l' or @code='m' or @code='t']">
5751 <xsl:call-template name="subfieldSelect">
5752 <xsl:with-param name="codes">hijklmt</xsl:with-param>
5753 </xsl:call-template>
5759 <xsl:for-each select="marc:datafield[@tag=506]">
5760 <accessCondition type="restrictionOnAccess">
5761 <xsl:call-template name="subfieldSelect">
5762 <xsl:with-param name="codes">abcd35</xsl:with-param>
5763 </xsl:call-template>
5766 <xsl:for-each select="marc:datafield[@tag=540]">
5767 <accessCondition type="useAndReproduction">
5768 <xsl:call-template name="subfieldSelect">
5769 <xsl:with-param name="codes">abcde35</xsl:with-param>
5770 </xsl:call-template>
5778 <xsl:for-each select="marc:leader[substring($leader,19,1)='a']">
5779 <descriptionStandard>aacr2</descriptionStandard>
5782 <xsl:for-each select="marc:datafield[@tag=040]">
5783 <xsl:if test="marc:subfield[@code='e']">
5784 <descriptionStandard>
5785 <xsl:value-of select="marc:subfield[@code='e']"/>
5786 </descriptionStandard>
5788 <recordContentSource authority="marcorg">
5789 <xsl:value-of select="marc:subfield[@code='a']"/>
5790 </recordContentSource>
5792 <xsl:for-each select="marc:controlfield[@tag=008]">
5793 <recordCreationDate encoding="marc">
5794 <xsl:value-of select="substring(.,1,6)"/>
5795 </recordCreationDate>
5798 <xsl:for-each select="marc:controlfield[@tag=005]">
5799 <recordChangeDate encoding="iso8601">
5800 <xsl:value-of select="."/>
5803 <xsl:for-each select="marc:controlfield[@tag=001]">
5805 <xsl:if test="../marc:controlfield[@tag=003]">
5806 <xsl:attribute name="source">
5807 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
5810 <xsl:value-of select="."/>
5813 <xsl:for-each select="marc:datafield[@tag=040]/marc:subfield[@code='b']">
5814 <languageOfCataloging>
5815 <languageTerm authority="iso639-2b" type="code">
5816 <xsl:value-of select="."/>
5818 </languageOfCataloging>
5822 <xsl:template name="displayForm">
5823 <xsl:for-each select="marc:subfield[@code='c']">
5825 <xsl:value-of select="."/>
5829 <xsl:template name="affiliation">
5830 <xsl:for-each select="marc:subfield[@code='u']">
5832 <xsl:value-of select="."/>
5836 <xsl:template name="uri">
5837 <xsl:for-each select="marc:subfield[@code='u']">
5838 <xsl:attribute name="xlink:href">
5839 <xsl:value-of select="."/>
5842 <xsl:for-each select="marc:subfield[@code='0']">
5844 <xsl:when test="contains(text(), ')')">
5845 <xsl:attribute name="xlink:href">
5846 <xsl:value-of select="substring-after(text(), ')')"></xsl:value-of>
5850 <xsl:attribute name="xlink:href">
5851 <xsl:value-of select="."></xsl:value-of>
5857 <xsl:template name="role">
5858 <xsl:for-each select="marc:subfield[@code='e']">
5860 <roleTerm type="text">
5861 <xsl:value-of select="."/>
5865 <xsl:for-each select="marc:subfield[@code='4']">
5867 <roleTerm authority="marcrelator" type="code">
5868 <xsl:value-of select="."/>
5873 <xsl:template name="part">
5874 <xsl:variable name="partNumber">
5875 <xsl:call-template name="specialSubfieldSelect">
5876 <xsl:with-param name="axis">n</xsl:with-param>
5877 <xsl:with-param name="anyCodes">n</xsl:with-param>
5878 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5879 </xsl:call-template>
5881 <xsl:variable name="partName">
5882 <xsl:call-template name="specialSubfieldSelect">
5883 <xsl:with-param name="axis">p</xsl:with-param>
5884 <xsl:with-param name="anyCodes">p</xsl:with-param>
5885 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5886 </xsl:call-template>
5888 <xsl:if test="string-length(normalize-space($partNumber))">
5890 <xsl:call-template name="chopPunctuation">
5891 <xsl:with-param name="chopString" select="$partNumber"/>
5892 </xsl:call-template>
5895 <xsl:if test="string-length(normalize-space($partName))">
5897 <xsl:call-template name="chopPunctuation">
5898 <xsl:with-param name="chopString" select="$partName"/>
5899 </xsl:call-template>
5903 <xsl:template name="relatedPart">
5904 <xsl:if test="@tag=773">
5905 <xsl:for-each select="marc:subfield[@code='g']">
5908 <xsl:value-of select="."/>
5912 <xsl:for-each select="marc:subfield[@code='q']">
5914 <xsl:call-template name="parsePart"/>
5919 <xsl:template name="relatedPartNumName">
5920 <xsl:variable name="partNumber">
5921 <xsl:call-template name="specialSubfieldSelect">
5922 <xsl:with-param name="axis">g</xsl:with-param>
5923 <xsl:with-param name="anyCodes">g</xsl:with-param>
5924 <xsl:with-param name="afterCodes">pst</xsl:with-param>
5925 </xsl:call-template>
5927 <xsl:variable name="partName">
5928 <xsl:call-template name="specialSubfieldSelect">
5929 <xsl:with-param name="axis">p</xsl:with-param>
5930 <xsl:with-param name="anyCodes">p</xsl:with-param>
5931 <xsl:with-param name="afterCodes">fgkdlmor</xsl:with-param>
5932 </xsl:call-template>
5934 <xsl:if test="string-length(normalize-space($partNumber))">
5936 <xsl:value-of select="$partNumber"/>
5939 <xsl:if test="string-length(normalize-space($partName))">
5941 <xsl:value-of select="$partName"/>
5945 <xsl:template name="relatedName">
5946 <xsl:for-each select="marc:subfield[@code='a']">
5949 <xsl:value-of select="."/>
5954 <xsl:template name="relatedForm">
5955 <xsl:for-each select="marc:subfield[@code='h']">
5956 <physicalDescription>
5958 <xsl:value-of select="."/>
5960 </physicalDescription>
5963 <xsl:template name="relatedExtent">
5964 <xsl:for-each select="marc:subfield[@code='h']">
5965 <physicalDescription>
5967 <xsl:value-of select="."/>
5969 </physicalDescription>
5972 <xsl:template name="relatedNote">
5973 <xsl:for-each select="marc:subfield[@code='n']">
5975 <xsl:value-of select="."/>
5979 <xsl:template name="relatedSubject">
5980 <xsl:for-each select="marc:subfield[@code='j']">
5982 <temporal encoding="iso8601">
5983 <xsl:call-template name="chopPunctuation">
5984 <xsl:with-param name="chopString" select="."/>
5985 </xsl:call-template>
5990 <xsl:template name="relatedIdentifierISSN">
5991 <xsl:for-each select="marc:subfield[@code='x']">
5992 <identifier type="issn">
5993 <xsl:value-of select="."/>
5997 <xsl:template name="relatedIdentifierLocal">
5998 <xsl:for-each select="marc:subfield[@code='w']">
5999 <identifier type="local">
6000 <xsl:value-of select="."/>
6004 <xsl:template name="relatedIdentifier">
6005 <xsl:for-each select="marc:subfield[@code='o']">
6007 <xsl:value-of select="."/>
6011 <xsl:template name="relatedItem76X-78X">
6012 <xsl:call-template name="displayLabel"/>
6013 <xsl:call-template name="relatedTitle76X-78X"/>
6014 <xsl:call-template name="relatedName"/>
6015 <xsl:call-template name="relatedOriginInfo"/>
6016 <xsl:call-template name="relatedLanguage"/>
6017 <xsl:call-template name="relatedExtent"/>
6018 <xsl:call-template name="relatedNote"/>
6019 <xsl:call-template name="relatedSubject"/>
6020 <xsl:call-template name="relatedIdentifier"/>
6021 <xsl:call-template name="relatedIdentifierISSN"/>
6022 <xsl:call-template name="relatedIdentifierLocal"/>
6023 <xsl:call-template name="relatedPart"/>
6025 <xsl:template name="subjectGeographicZ">
6027 <xsl:call-template name="chopPunctuation">
6028 <xsl:with-param name="chopString" select="."/>
6029 </xsl:call-template>
6032 <xsl:template name="subjectTemporalY">
6034 <xsl:call-template name="chopPunctuation">
6035 <xsl:with-param name="chopString" select="."/>
6036 </xsl:call-template>
6039 <xsl:template name="subjectTopic">
6041 <xsl:call-template name="chopPunctuation">
6042 <xsl:with-param name="chopString" select="."/>
6043 </xsl:call-template>
6046 <!-- 3.2 change tmee 6xx $v genre -->
6047 <xsl:template name="subjectGenre">
6049 <xsl:call-template name="chopPunctuation">
6050 <xsl:with-param name="chopString" select="."/>
6051 </xsl:call-template>
6055 <xsl:template name="nameABCDN">
6056 <xsl:for-each select="marc:subfield[@code='a']">
6058 <xsl:call-template name="chopPunctuation">
6059 <xsl:with-param name="chopString" select="."/>
6060 </xsl:call-template>
6063 <xsl:for-each select="marc:subfield[@code='b']">
6065 <xsl:value-of select="."/>
6069 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
6071 <xsl:call-template name="subfieldSelect">
6072 <xsl:with-param name="codes">cdn</xsl:with-param>
6073 </xsl:call-template>
6077 <xsl:template name="nameABCDQ">
6079 <xsl:call-template name="chopPunctuation">
6080 <xsl:with-param name="chopString">
6081 <xsl:call-template name="subfieldSelect">
6082 <xsl:with-param name="codes">aq</xsl:with-param>
6083 </xsl:call-template>
6085 <xsl:with-param name="punctuation">
6086 <xsl:text>:,;/ </xsl:text>
6088 </xsl:call-template>
6090 <xsl:call-template name="termsOfAddress"/>
6091 <xsl:call-template name="nameDate"/>
6093 <xsl:template name="nameACDEQ">
6095 <xsl:call-template name="subfieldSelect">
6096 <xsl:with-param name="codes">acdeq</xsl:with-param>
6097 </xsl:call-template>
6100 <xsl:template name="constituentOrRelatedType">
6101 <xsl:if test="@ind2=2">
6102 <xsl:attribute name="type">constituent</xsl:attribute>
6105 <xsl:template name="relatedTitle">
6106 <xsl:for-each select="marc:subfield[@code='t']">
6109 <xsl:call-template name="chopPunctuation">
6110 <xsl:with-param name="chopString">
6111 <xsl:value-of select="."/>
6113 </xsl:call-template>
6118 <xsl:template name="relatedTitle76X-78X">
6119 <xsl:for-each select="marc:subfield[@code='t']">
6122 <xsl:call-template name="chopPunctuation">
6123 <xsl:with-param name="chopString">
6124 <xsl:value-of select="."/>
6126 </xsl:call-template>
6128 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6129 <xsl:call-template name="relatedPartNumName"/>
6133 <xsl:for-each select="marc:subfield[@code='p']">
6134 <titleInfo type="abbreviated">
6136 <xsl:call-template name="chopPunctuation">
6137 <xsl:with-param name="chopString">
6138 <xsl:value-of select="."/>
6140 </xsl:call-template>
6142 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6143 <xsl:call-template name="relatedPartNumName"/>
6147 <xsl:for-each select="marc:subfield[@code='s']">
6148 <titleInfo type="uniform">
6150 <xsl:call-template name="chopPunctuation">
6151 <xsl:with-param name="chopString">
6152 <xsl:value-of select="."/>
6154 </xsl:call-template>
6156 <xsl:if test="marc:datafield[@tag!=773]and marc:subfield[@code='g']">
6157 <xsl:call-template name="relatedPartNumName"/>
6162 <xsl:template name="relatedOriginInfo">
6163 <xsl:if test="marc:subfield[@code='b' or @code='d'] or marc:subfield[@code='f']">
6165 <xsl:if test="@tag=775">
6166 <xsl:for-each select="marc:subfield[@code='f']">
6169 <xsl:attribute name="type">code</xsl:attribute>
6170 <xsl:attribute name="authority">marcgac</xsl:attribute>
6171 <xsl:value-of select="."/>
6176 <xsl:for-each select="marc:subfield[@code='d']">
6178 <xsl:value-of select="."/>
6181 <xsl:for-each select="marc:subfield[@code='b']">
6183 <xsl:value-of select="."/>
6189 <xsl:template name="relatedLanguage">
6190 <xsl:for-each select="marc:subfield[@code='e']">
6191 <xsl:call-template name="getLanguage">
6192 <xsl:with-param name="langString">
6193 <xsl:value-of select="."/>
6195 </xsl:call-template>
6198 <xsl:template name="nameDate">
6199 <xsl:for-each select="marc:subfield[@code='d']">
6200 <namePart type="date">
6201 <xsl:call-template name="chopPunctuation">
6202 <xsl:with-param name="chopString" select="."/>
6203 </xsl:call-template>
6207 <xsl:template name="subjectAuthority">
6208 <xsl:if test="@ind2!=4">
6209 <xsl:if test="@ind2!=' '">
6210 <xsl:if test="@ind2!=8">
6211 <xsl:if test="@ind2!=9">
6212 <xsl:attribute name="authority">
6214 <xsl:when test="@ind2=0">lcsh</xsl:when>
6215 <xsl:when test="@ind2=1">lcshac</xsl:when>
6216 <xsl:when test="@ind2=2">mesh</xsl:when>
6218 <xsl:when test="@ind2=3">nal</xsl:when>
6219 <xsl:when test="@ind2=5">csh</xsl:when>
6220 <xsl:when test="@ind2=6">rvm</xsl:when>
6221 <xsl:when test="@ind2=7">
6222 <xsl:value-of select="marc:subfield[@code='2']"/>
6231 <xsl:template name="subjectAnyOrder">
6232 <xsl:for-each select="marc:subfield[@code='v' or @code='x' or @code='y' or @code='z']">
6234 <xsl:when test="@code='v'">
6235 <xsl:call-template name="subjectGenre"/>
6237 <xsl:when test="@code='x'">
6238 <xsl:call-template name="subjectTopic"/>
6240 <xsl:when test="@code='y'">
6241 <xsl:call-template name="subjectTemporalY"/>
6243 <xsl:when test="@code='z'">
6244 <xsl:call-template name="subjectGeographicZ"/>
6249 <xsl:template name="specialSubfieldSelect">
6250 <xsl:param name="anyCodes"/>
6251 <xsl:param name="axis"/>
6252 <xsl:param name="beforeCodes"/>
6253 <xsl:param name="afterCodes"/>
6254 <xsl:variable name="str">
6255 <xsl:for-each select="marc:subfield">
6257 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])">
6258 <xsl:value-of select="text()"/>
6259 <xsl:text> </xsl:text>
6263 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
6266 <!-- 3.2 change tmee 6xx $v genre -->
6267 <xsl:template match="marc:datafield[@tag=600]">
6269 <xsl:call-template name="subjectAuthority"/>
6270 <name type="personal">
6271 <xsl:call-template name="termsOfAddress"/>
6273 <xsl:call-template name="chopPunctuation">
6274 <xsl:with-param name="chopString">
6275 <xsl:call-template name="subfieldSelect">
6276 <xsl:with-param name="codes">aq</xsl:with-param>
6277 </xsl:call-template>
6279 </xsl:call-template>
6281 <xsl:call-template name="nameDate"/>
6282 <xsl:call-template name="affiliation"/>
6283 <xsl:call-template name="role"/>
6285 <xsl:call-template name="subjectAnyOrder"/>
6288 <xsl:template match="marc:datafield[@tag=610]">
6290 <xsl:call-template name="subjectAuthority"/>
6291 <name type="corporate">
6292 <xsl:for-each select="marc:subfield[@code='a']">
6294 <xsl:value-of select="."/>
6297 <xsl:for-each select="marc:subfield[@code='b']">
6299 <xsl:value-of select="."/>
6302 <xsl:if test="marc:subfield[@code='c' or @code='d' or @code='n' or @code='p']">
6304 <xsl:call-template name="subfieldSelect">
6305 <xsl:with-param name="codes">cdnp</xsl:with-param>
6306 </xsl:call-template>
6309 <xsl:call-template name="role"/>
6311 <xsl:call-template name="subjectAnyOrder"/>
6314 <xsl:template match="marc:datafield[@tag=611]">
6316 <xsl:call-template name="subjectAuthority"/>
6317 <name type="conference">
6319 <xsl:call-template name="subfieldSelect">
6320 <xsl:with-param name="codes">abcdeqnp</xsl:with-param>
6321 </xsl:call-template>
6323 <xsl:for-each select="marc:subfield[@code='4']">
6325 <roleTerm authority="marcrelator" type="code">
6326 <xsl:value-of select="."/>
6331 <xsl:call-template name="subjectAnyOrder"/>
6334 <xsl:template match="marc:datafield[@tag=630]">
6336 <xsl:call-template name="subjectAuthority"/>
6339 <xsl:call-template name="chopPunctuation">
6340 <xsl:with-param name="chopString">
6341 <xsl:call-template name="subfieldSelect">
6342 <xsl:with-param name="codes">adfhklor</xsl:with-param>
6343 </xsl:call-template>
6345 </xsl:call-template>
6347 <xsl:call-template name="part"/>
6349 <xsl:call-template name="subjectAnyOrder"/>
6352 <!-- 1.27 648 tmee-->
6353 <xsl:template match="marc:datafield[@tag=648]">
6355 <xsl:if test="marc:subfield[@code=2]">
6356 <xsl:attribute name="authority">
6357 <xsl:value-of select="marc:subfield[@code=2]"/>
6360 <xsl:call-template name="uri"/>
6362 <xsl:call-template name="subjectAuthority"/>
6364 <xsl:call-template name="chopPunctuation">
6365 <xsl:with-param name="chopString">
6366 <xsl:call-template name="subfieldSelect">
6367 <xsl:with-param name="codes">abcd</xsl:with-param>
6368 </xsl:call-template>
6370 </xsl:call-template>
6372 <xsl:call-template name="subjectAnyOrder"/>
6376 <xsl:template match="marc:datafield[@tag=650]">
6378 <xsl:call-template name="subjectAuthority"/>
6380 <xsl:call-template name="chopPunctuation">
6381 <xsl:with-param name="chopString">
6382 <xsl:call-template name="subfieldSelect">
6383 <xsl:with-param name="codes">abcd</xsl:with-param>
6384 </xsl:call-template>
6386 </xsl:call-template>
6388 <xsl:call-template name="subjectAnyOrder"/>
6391 <xsl:template match="marc:datafield[@tag=651]">
6393 <xsl:call-template name="subjectAuthority"/>
6394 <xsl:for-each select="marc:subfield[@code='a']">
6396 <xsl:call-template name="chopPunctuation">
6397 <xsl:with-param name="chopString" select="."/>
6398 </xsl:call-template>
6401 <xsl:call-template name="subjectAnyOrder"/>
6404 <xsl:template match="marc:datafield[@tag=653]">
6406 <xsl:for-each select="marc:subfield[@code='a']">
6408 <xsl:value-of select="."/>
6413 <xsl:template match="marc:datafield[@tag=656]">
6415 <xsl:if test="marc:subfield[@code=2]">
6416 <xsl:attribute name="authority">
6417 <xsl:value-of select="marc:subfield[@code=2]"/>
6421 <xsl:call-template name="chopPunctuation">
6422 <xsl:with-param name="chopString">
6423 <xsl:value-of select="marc:subfield[@code='a']"/>
6425 </xsl:call-template>
6429 <xsl:template name="termsOfAddress">
6430 <xsl:if test="marc:subfield[@code='b' or @code='c']">
6431 <namePart type="termsOfAddress">
6432 <xsl:call-template name="chopPunctuation">
6433 <xsl:with-param name="chopString">
6434 <xsl:call-template name="subfieldSelect">
6435 <xsl:with-param name="codes">bc</xsl:with-param>
6436 </xsl:call-template>
6438 </xsl:call-template>
6442 <xsl:template name="displayLabel">
6443 <xsl:if test="marc:subfield[@code='i']">
6444 <xsl:attribute name="displayLabel">
6445 <xsl:value-of select="marc:subfield[@code='i']"/>
6448 <xsl:if test="marc:subfield[@code='3']">
6449 <xsl:attribute name="displayLabel">
6450 <xsl:value-of select="marc:subfield[@code='3']"/>
6454 <xsl:template name="isInvalid">
6455 <xsl:param name="type"/>
6457 test="marc:subfield[@code='z'] or marc:subfield[@code='y'] or marc:subfield[@code='m']">
6459 <xsl:attribute name="type">
6460 <xsl:value-of select="$type"/>
6462 <xsl:attribute name="invalid">
6463 <xsl:text>yes</xsl:text>
6465 <xsl:if test="marc:subfield[@code='z']">
6466 <xsl:value-of select="marc:subfield[@code='z']"/>
6468 <xsl:if test="marc:subfield[@code='y']">
6469 <xsl:value-of select="marc:subfield[@code='y']"/>
6471 <xsl:if test="marc:subfield[@code='m']">
6472 <xsl:value-of select="marc:subfield[@code='m']"/>
6477 <xsl:template name="subtitle">
6478 <xsl:if test="marc:subfield[@code='b']">
6480 <xsl:call-template name="chopPunctuation">
6481 <xsl:with-param name="chopString">
6482 <xsl:value-of select="marc:subfield[@code='b']"/>
6483 <!--<xsl:call-template name="subfieldSelect">
6484 <xsl:with-param name="codes">b</xsl:with-param>
6485 </xsl:call-template>-->
6487 </xsl:call-template>
6491 <xsl:template name="script">
6492 <xsl:param name="scriptCode"/>
6493 <xsl:attribute name="script">
6495 <xsl:when test="$scriptCode='(3'">Arabic</xsl:when>
6496 <xsl:when test="$scriptCode='(B'">Latin</xsl:when>
6497 <xsl:when test="$scriptCode='$1'">Chinese, Japanese, Korean</xsl:when>
6498 <xsl:when test="$scriptCode='(N'">Cyrillic</xsl:when>
6499 <xsl:when test="$scriptCode='(2'">Hebrew</xsl:when>
6500 <xsl:when test="$scriptCode='(S'">Greek</xsl:when>
6504 <xsl:template name="parsePart">
6505 <!-- assumes 773$q= 1:2:3<4
6506 with up to 3 levels and one optional start page
6508 <xsl:variable name="level1">
6510 <xsl:when test="contains(text(),':')">
6512 <xsl:value-of select="substring-before(text(),':')"/>
6514 <xsl:when test="not(contains(text(),':'))">
6516 <xsl:if test="contains(text(),'<')">
6518 <xsl:value-of select="substring-before(text(),'<')"/>
6520 <xsl:if test="not(contains(text(),'<'))">
6522 <xsl:value-of select="text()"/>
6527 <xsl:variable name="sici2">
6529 <xsl:when test="starts-with(substring-after(text(),$level1),':')">
6530 <xsl:value-of select="substring(substring-after(text(),$level1),2)"/>
6533 <xsl:value-of select="substring-after(text(),$level1)"/>
6537 <xsl:variable name="level2">
6539 <xsl:when test="contains($sici2,':')">
6541 <xsl:value-of select="substring-before($sici2,':')"/>
6543 <xsl:when test="contains($sici2,'<')">
6545 <xsl:value-of select="substring-before($sici2,'<')"/>
6548 <xsl:value-of select="$sici2"/>
6553 <xsl:variable name="sici3">
6555 <xsl:when test="starts-with(substring-after($sici2,$level2),':')">
6556 <xsl:value-of select="substring(substring-after($sici2,$level2),2)"/>
6559 <xsl:value-of select="substring-after($sici2,$level2)"/>
6563 <xsl:variable name="level3">
6565 <xsl:when test="contains($sici3,'<')">
6567 <xsl:value-of select="substring-before($sici3,'<')"/>
6570 <xsl:value-of select="$sici3"/>
6575 <xsl:variable name="page">
6576 <xsl:if test="contains(text(),'<')">
6577 <xsl:value-of select="substring-after(text(),'<')"/>
6580 <xsl:if test="$level1">
6583 <xsl:value-of select="$level1"/>
6587 <xsl:if test="$level2">
6590 <xsl:value-of select="$level2"/>
6594 <xsl:if test="$level3">
6597 <xsl:value-of select="$level3"/>
6601 <xsl:if test="$page">
6602 <extent unit="page">
6604 <xsl:value-of select="$page"/>
6609 <xsl:template name="getLanguage">
6610 <xsl:param name="langString"/>
6611 <xsl:param name="controlField008-35-37"/>
6612 <xsl:variable name="length" select="string-length($langString)"/>
6614 <xsl:when test="$length=0"/>
6615 <xsl:when test="$controlField008-35-37=substring($langString,1,3)">
6616 <xsl:call-template name="getLanguage">
6617 <xsl:with-param name="langString" select="substring($langString,4,$length)"/>
6618 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"/>
6619 </xsl:call-template>
6623 <languageTerm authority="iso639-2b" type="code">
6624 <xsl:value-of select="substring($langString,1,3)"/>
6627 <xsl:call-template name="getLanguage">
6628 <xsl:with-param name="langString" select="substring($langString,4,$length)"/>
6629 <xsl:with-param name="controlField008-35-37" select="$controlField008-35-37"/>
6630 </xsl:call-template>
6634 <xsl:template name="isoLanguage">
6635 <xsl:param name="currentLanguage"/>
6636 <xsl:param name="usedLanguages"/>
6637 <xsl:param name="remainingLanguages"/>
6639 <xsl:when test="string-length($currentLanguage)=0"/>
6640 <xsl:when test="not(contains($usedLanguages, $currentLanguage))">
6642 <xsl:if test="@code!='a'">
6643 <xsl:attribute name="objectPart">
6645 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
6646 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
6647 <xsl:when test="@code='e'">libretto</xsl:when>
6648 <xsl:when test="@code='f'">table of contents</xsl:when>
6649 <xsl:when test="@code='g'">accompanying material</xsl:when>
6650 <xsl:when test="@code='h'">translation</xsl:when>
6654 <languageTerm authority="iso639-2b" type="code">
6655 <xsl:value-of select="$currentLanguage"/>
6658 <xsl:call-template name="isoLanguage">
6659 <xsl:with-param name="currentLanguage">
6660 <xsl:value-of select="substring($remainingLanguages,1,3)"/>
6662 <xsl:with-param name="usedLanguages">
6663 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"/>
6665 <xsl:with-param name="remainingLanguages">
6667 select="substring($remainingLanguages,4,string-length($remainingLanguages))"
6670 </xsl:call-template>
6673 <xsl:call-template name="isoLanguage">
6674 <xsl:with-param name="currentLanguage">
6675 <xsl:value-of select="substring($remainingLanguages,1,3)"/>
6677 <xsl:with-param name="usedLanguages">
6678 <xsl:value-of select="concat($usedLanguages,$currentLanguage)"/>
6680 <xsl:with-param name="remainingLanguages">
6682 select="substring($remainingLanguages,4,string-length($remainingLanguages))"
6685 </xsl:call-template>
6689 <xsl:template name="chopBrackets">
6690 <xsl:param name="chopString"/>
6691 <xsl:variable name="string">
6692 <xsl:call-template name="chopPunctuation">
6693 <xsl:with-param name="chopString" select="$chopString"/>
6694 </xsl:call-template>
6696 <xsl:if test="substring($string, 1,1)='['">
6697 <xsl:value-of select="substring($string,2, string-length($string)-2)"/>
6699 <xsl:if test="substring($string, 1,1)!='['">
6700 <xsl:value-of select="$string"/>
6703 <xsl:template name="rfcLanguages">
6704 <xsl:param name="nodeNum"/>
6705 <xsl:param name="usedLanguages"/>
6706 <xsl:param name="controlField008-35-37"/>
6707 <xsl:variable name="currentLanguage" select="."/>
6709 <xsl:when test="not($currentLanguage)"/>
6711 test="$currentLanguage!=$controlField008-35-37 and $currentLanguage!='rfc3066'">
6712 <xsl:if test="not(contains($usedLanguages,$currentLanguage))">
6714 <xsl:if test="@code!='a'">
6715 <xsl:attribute name="objectPart">
6717 <xsl:when test="@code='b'">summary or subtitle</xsl:when>
6718 <xsl:when test="@code='d'">sung or spoken text</xsl:when>
6719 <xsl:when test="@code='e'">libretto</xsl:when>
6720 <xsl:when test="@code='f'">table of contents</xsl:when>
6721 <xsl:when test="@code='g'">accompanying material</xsl:when>
6722 <xsl:when test="@code='h'">translation</xsl:when>
6726 <languageTerm authority="rfc3066" type="code">
6727 <xsl:value-of select="$currentLanguage"/>
6732 <xsl:otherwise> </xsl:otherwise>
6736 <xsl:template name="datafield">
6737 <xsl:param name="tag"/>
6738 <xsl:param name="ind1">
6739 <xsl:text> </xsl:text>
6741 <xsl:param name="ind2">
6742 <xsl:text> </xsl:text>
6744 <xsl:param name="subfields"/>
6745 <xsl:element name="marc:datafield">
6746 <xsl:attribute name="tag">
6747 <xsl:value-of select="$tag"/>
6749 <xsl:attribute name="ind1">
6750 <xsl:value-of select="$ind1"/>
6752 <xsl:attribute name="ind2">
6753 <xsl:value-of select="$ind2"/>
6755 <xsl:copy-of select="$subfields"/>
6759 <xsl:template name="subfieldSelect">
6760 <xsl:param name="codes">abcdefghijklmnopqrstuvwxyz</xsl:param>
6761 <xsl:param name="delimeter">
6762 <xsl:text> </xsl:text>
6764 <xsl:variable name="str">
6765 <xsl:for-each select="marc:subfield">
6766 <xsl:if test="contains($codes, @code)">
6767 <xsl:value-of select="text()"/>
6768 <xsl:value-of select="$delimeter"/>
6772 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
6775 <xsl:template name="buildSpaces">
6776 <xsl:param name="spaces"/>
6777 <xsl:param name="char">
6778 <xsl:text> </xsl:text>
6780 <xsl:if test="$spaces>0">
6781 <xsl:value-of select="$char"/>
6782 <xsl:call-template name="buildSpaces">
6783 <xsl:with-param name="spaces" select="$spaces - 1"/>
6784 <xsl:with-param name="char" select="$char"/>
6785 </xsl:call-template>
6789 <xsl:template name="chopPunctuation">
6790 <xsl:param name="chopString"/>
6791 <xsl:param name="punctuation">
6792 <xsl:text>.:,;/ </xsl:text>
6794 <xsl:variable name="length" select="string-length($chopString)"/>
6796 <xsl:when test="$length=0"/>
6797 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
6798 <xsl:call-template name="chopPunctuation">
6799 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
6800 <xsl:with-param name="punctuation" select="$punctuation"/>
6801 </xsl:call-template>
6803 <xsl:when test="not($chopString)"/>
6805 <xsl:value-of select="$chopString"/>
6810 <xsl:template name="chopPunctuationFront">
6811 <xsl:param name="chopString"/>
6812 <xsl:variable name="length" select="string-length($chopString)"/>
6814 <xsl:when test="$length=0"/>
6815 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
6816 <xsl:call-template name="chopPunctuationFront">
6817 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"
6819 </xsl:call-template>
6821 <xsl:when test="not($chopString)"/>
6823 <xsl:value-of select="$chopString"/>
6828 <xsl:template name="chopPunctuationBack">
6829 <xsl:param name="chopString"/>
6830 <xsl:param name="punctuation">
6831 <xsl:text>.:,;/] </xsl:text>
6833 <xsl:variable name="length" select="string-length($chopString)"/>
6835 <xsl:when test="$length=0"/>
6836 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
6837 <xsl:call-template name="chopPunctuation">
6838 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
6839 <xsl:with-param name="punctuation" select="$punctuation"/>
6840 </xsl:call-template>
6842 <xsl:when test="not($chopString)"/>
6844 <xsl:value-of select="$chopString"/>
6849 <!-- nate added 12/14/2007 for lccn.loc.gov: url encode ampersand, etc. -->
6850 <xsl:template name="url-encode">
6852 <xsl:param name="str"/>
6854 <xsl:if test="$str">
6855 <xsl:variable name="first-char" select="substring($str,1,1)"/>
6857 <xsl:when test="contains($safe,$first-char)">
6858 <xsl:value-of select="$first-char"/>
6861 <xsl:variable name="codepoint">
6863 <xsl:when test="contains($ascii,$first-char)">
6865 select="string-length(substring-before($ascii,$first-char)) + 32"
6868 <xsl:when test="contains($latin1,$first-char)">
6870 select="string-length(substring-before($latin1,$first-char)) + 160"/>
6874 <xsl:message terminate="no">Warning: string contains a character
6875 that is out of range! Substituting "?".</xsl:message>
6876 <xsl:text>63</xsl:text>
6880 <xsl:variable name="hex-digit1"
6881 select="substring($hex,floor($codepoint div 16) + 1,1)"/>
6882 <xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
6883 <!-- <xsl:value-of select="concat('%',$hex-digit2)"/> -->
6884 <xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
6887 <xsl:if test="string-length($str) > 1">
6888 <xsl:call-template name="url-encode">
6889 <xsl:with-param name="str" select="substring($str,2)"/>
6890 </xsl:call-template>
6894 </xsl:stylesheet>$XXXX$ where name = $$mods33$$;