3 SELECT evergreen.upgrade_deps_block_check('1325', :eg_version);
5 UPDATE config.xml_transform SET xslt=$XSLT$<?xml version="1.0" encoding="UTF-8"?>
6 <xsl:stylesheet version="1.0" xmlns:mads="http://www.loc.gov/mads/v2"
7 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:marc="http://www.loc.gov/MARC21/slim"
8 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
9 <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
10 <xsl:strip-space elements="*"/>
12 <xsl:variable name="ascii">
13 <xsl:text> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:text>
16 <xsl:variable name="latin1">
17 <xsl:text> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:text>
19 <!-- Characters that usually don't need to be escaped -->
20 <xsl:variable name="safe">
21 <xsl:text>!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:text>
24 <xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
27 <xsl:template name="datafield">
28 <xsl:param name="tag"/>
29 <xsl:param name="ind1">
30 <xsl:text> </xsl:text>
32 <xsl:param name="ind2">
33 <xsl:text> </xsl:text>
35 <xsl:param name="subfields"/>
36 <xsl:element name="marc:datafield">
37 <xsl:attribute name="tag">
38 <xsl:value-of select="$tag"/>
40 <xsl:attribute name="ind1">
41 <xsl:value-of select="$ind1"/>
43 <xsl:attribute name="ind2">
44 <xsl:value-of select="$ind2"/>
46 <xsl:copy-of select="$subfields"/>
50 <xsl:template name="subfieldSelect">
51 <xsl:param name="codes">abcdefghijklmnopqrstuvwxyz</xsl:param>
52 <xsl:param name="delimeter">
53 <xsl:text> </xsl:text>
55 <xsl:variable name="str">
56 <xsl:for-each select="marc:subfield">
57 <xsl:if test="contains($codes, @code)">
58 <xsl:value-of select="text()"/>
59 <xsl:value-of select="$delimeter"/>
63 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
66 <xsl:template name="buildSpaces">
67 <xsl:param name="spaces"/>
68 <xsl:param name="char">
69 <xsl:text> </xsl:text>
71 <xsl:if test="$spaces>0">
72 <xsl:value-of select="$char"/>
73 <xsl:call-template name="buildSpaces">
74 <xsl:with-param name="spaces" select="$spaces - 1"/>
75 <xsl:with-param name="char" select="$char"/>
80 <xsl:template name="chopPunctuation">
81 <xsl:param name="chopString"/>
82 <xsl:param name="punctuation">
83 <xsl:text>.:,;/ </xsl:text>
85 <xsl:variable name="length" select="string-length($chopString)"/>
87 <xsl:when test="$length=0"/>
88 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
89 <xsl:call-template name="chopPunctuation">
90 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
91 <xsl:with-param name="punctuation" select="$punctuation"/>
94 <xsl:when test="not($chopString)"/>
96 <xsl:value-of select="$chopString"/>
101 <xsl:template name="chopPunctuationFront">
102 <xsl:param name="chopString"/>
103 <xsl:variable name="length" select="string-length($chopString)"/>
105 <xsl:when test="$length=0"/>
106 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
107 <xsl:call-template name="chopPunctuationFront">
108 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"
112 <xsl:when test="not($chopString)"/>
114 <xsl:value-of select="$chopString"/>
119 <xsl:template name="chopPunctuationBack">
120 <xsl:param name="chopString"/>
121 <xsl:param name="punctuation">
122 <xsl:text>.:,;/] </xsl:text>
124 <xsl:variable name="length" select="string-length($chopString)"/>
126 <xsl:when test="$length=0"/>
127 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
128 <xsl:call-template name="chopPunctuation">
129 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
130 <xsl:with-param name="punctuation" select="$punctuation"/>
133 <xsl:when test="not($chopString)"/>
135 <xsl:value-of select="$chopString"/>
140 <!-- nate added 12/14/2007 for lccn.loc.gov: url encode ampersand, etc. -->
141 <xsl:template name="url-encode">
143 <xsl:param name="str"/>
146 <xsl:variable name="first-char" select="substring($str,1,1)"/>
148 <xsl:when test="contains($safe,$first-char)">
149 <xsl:value-of select="$first-char"/>
152 <xsl:variable name="codepoint">
154 <xsl:when test="contains($ascii,$first-char)">
156 select="string-length(substring-before($ascii,$first-char)) + 32"
159 <xsl:when test="contains($latin1,$first-char)">
161 select="string-length(substring-before($latin1,$first-char)) + 160"/>
165 <xsl:message terminate="no">Warning: string contains a character
166 that is out of range! Substituting "?".</xsl:message>
167 <xsl:text>63</xsl:text>
171 <xsl:variable name="hex-digit1"
172 select="substring($hex,floor($codepoint div 16) + 1,1)"/>
173 <xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
174 <!-- <xsl:value-of select="concat('%',$hex-digit2)"/> -->
175 <xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
178 <xsl:if test="string-length($str) > 1">
179 <xsl:call-template name="url-encode">
180 <xsl:with-param name="str" select="substring($str,2)"/>
188 2.15 reversed genre and setAuthority template order under relatedTypeAttribute tmee 11/13/2018
189 2.14 Fixed bug in mads:geographic attributes syntax ws 05/04/2016
190 2.13 fixed repeating <geographic> tmee 01/31/2014
191 2.12 added $2 authority for <classification> tmee 09/18/2012
192 2.11 added delimiters between <classification> subfields tmee 09/18/2012
193 2.10 fixed type="other" and type="otherType" for mads:related tmee 09/16/2011
194 2.09 fixed professionTerm and genreTerm empty tag error tmee 09/16/2011
195 2.08 fixed marc:subfield @code='i' matching error tmee 09/16/2011
196 2.07 fixed 555 duplication error tmee 08/10/2011
197 2.06 fixed topic subfield error tmee 08/10/2011
198 2.05 fixed title subfield error tmee 06/20/2011
199 2.04 fixed geographicSubdivision mapping for authority element tmee 06/16/2011
200 2.03 added classification for 053, 055, 060, 065, 070, 080, 082, 083, 086, 087 tmee 06/03/2011
201 2.02 added descriptionStandard for 008/10 tmee 04/27/2011
202 2.01 added extensions for 046, 336, 370, 374, 375, 376 tmee 04/08/2011
203 2.00 redefined imported MODS elements in version 1.0 to MADS elements in version 2.0 tmee 02/08/2011
204 1.08 added 372 subfields $a $s $t for <fieldOfActivity> tmee 06/24/2010
205 1.07 removed role/roleTerm 100, 110, 111, 400, 410, 411, 500, 510, 511, 700, 710, 711 tmee 06/24/2010
206 1.06 added strip-space tmee 06/24/2010
207 1.05 added subfield $a for 130, 430, 530 tmee 06/21/2010
208 1.04 fixed 550 z omission ntra 08/11/2008
209 1.03 removed duplication of 550 $a text tmee 11/01/2006
210 1.02 fixed namespace references between mads and mods ntra 10/06/2006
211 1.01 revised rgue/jrad 11/29/05
212 1.00 adapted from MARC21Slim2MODS3.xsl ntra 07/06/05
215 <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->
216 <xsl:param name="authority"/>
217 <xsl:variable name="auth">
219 <xsl:when test="$authority">
220 <xsl:value-of select="$authority"/>
222 <xsl:otherwise>naf</xsl:otherwise>
225 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
226 <xsl:variable name="controlField008-06"
227 select="substring(descendant-or-self::marc:controlfield[@tag=008],7,1)"/>
228 <xsl:variable name="controlField008-11"
229 select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>
230 <xsl:variable name="controlField008-14"
231 select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>
232 <xsl:template match="/">
234 <xsl:when test="descendant-or-self::marc:collection">
235 <mads:madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
236 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/v2/mads-2-0.xsd">
237 <xsl:for-each select="descendant-or-self::marc:collection/marc:record">
238 <mads:mads version="2.0">
239 <xsl:call-template name="marcRecord"/>
242 </mads:madsCollection>
245 <mads:mads version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
246 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/mads-2-0.xsd">
247 <xsl:for-each select="descendant-or-self::marc:record">
248 <xsl:call-template name="marcRecord"/>
255 <xsl:template name="marcRecord">
259 <xsl:when test="$controlField008-06='d'">
260 <xsl:attribute name="geographicSubdivision">
261 <xsl:text>direct</xsl:text>
264 <xsl:when test="$controlField008-06='i'">
265 <xsl:attribute name="geographicSubdivision">
266 <xsl:text>indirect</xsl:text>
269 <xsl:when test="$controlField008-06='n'">
270 <xsl:attribute name="geographicSubdivision">
271 <xsl:text>not applicable</xsl:text>
276 <xsl:apply-templates select="marc:datafield[100 <= @tag and @tag < 200]"/>
281 select="marc:datafield[500 <= @tag and @tag <= 585]|marc:datafield[700 <= @tag and @tag <= 785]"/>
284 <xsl:apply-templates select="marc:datafield[400 <= @tag and @tag <= 485]"/>
287 <xsl:apply-templates select="marc:datafield[667 <= @tag and @tag <= 688]"/>
290 <xsl:apply-templates select="marc:datafield[@tag=856]"/>
291 <xsl:apply-templates select="marc:datafield[@tag=010]"/>
292 <xsl:apply-templates select="marc:datafield[@tag=024]"/>
293 <xsl:apply-templates select="marc:datafield[@tag=372]"/>
295 <!-- classification -->
296 <xsl:apply-templates select="marc:datafield[@tag=053]"/>
297 <xsl:apply-templates select="marc:datafield[@tag=055]"/>
298 <xsl:apply-templates select="marc:datafield[@tag=060]"/>
299 <xsl:apply-templates select="marc:datafield[@tag=065]"/>
300 <xsl:apply-templates select="marc:datafield[@tag=070]"/>
301 <xsl:apply-templates select="marc:datafield[@tag=080]"/>
302 <xsl:apply-templates select="marc:datafield[@tag=082]"/>
303 <xsl:apply-templates select="marc:datafield[@tag=083]"/>
304 <xsl:apply-templates select="marc:datafield[@tag=086]"/>
305 <xsl:apply-templates select="marc:datafield[@tag=087]"/>
308 <xsl:for-each select="marc:datafield[@tag=373]">
311 <xsl:value-of select="marc:subfield[@code='a']"/>
313 <mads:dateValid point="start">
314 <xsl:value-of select="marc:subfield[@code='s']"/>
316 <mads:dateValid point="end">
317 <xsl:value-of select="marc:subfield[@code='t']"/>
321 <xsl:for-each select="marc:datafield[@tag=371]">
325 <xsl:value-of select="marc:subfield[@code='a']"/>
328 <xsl:value-of select="marc:subfield[@code='b']"/>
331 <xsl:value-of select="marc:subfield[@code='c']"/>
334 <xsl:value-of select="marc:subfield[@code='d']"/>
337 <xsl:value-of select="marc:subfield[@code='e']"/>
341 <xsl:value-of select="marc:subfield[@code='m']"/>
347 <xsl:for-each select="marc:datafield[@tag=336]">
350 <mads:contentType type="text">
351 <xsl:value-of select="marc:subfield[@code='a']"/>
353 <mads:contentType type="code">
354 <xsl:value-of select="marc:subfield[@code='b']"/>
360 <xsl:for-each select="marc:datafield[@tag=374]">
364 <xsl:when test="marc:subfield[@code='a']">
365 <mads:professionTerm>
366 <xsl:value-of select="marc:subfield[@code='a']"/>
367 </mads:professionTerm>
369 <xsl:when test="marc:subfield[@code='s']">
370 <mads:dateValid point="start">
371 <xsl:value-of select="marc:subfield[@code='s']"/>
374 <xsl:when test="marc:subfield[@code='t']">
375 <mads:dateValid point="end">
376 <xsl:value-of select="marc:subfield[@code='t']"/>
384 <xsl:for-each select="marc:datafield[@tag=375]">
388 <xsl:when test="marc:subfield[@code='a']">
390 <xsl:value-of select="marc:subfield[@code='a']"/>
393 <xsl:when test="marc:subfield[@code='s']">
394 <mads:dateValid point="start">
395 <xsl:value-of select="marc:subfield[@code='s']"/>
398 <xsl:when test="marc:subfield[@code='t']">
399 <mads:dateValid point="end">
400 <xsl:value-of select="marc:subfield[@code='t']"/>
408 <xsl:for-each select="marc:datafield[@tag=376]">
410 <mads:familyInformation>
412 <xsl:value-of select="marc:subfield[@code='a']"/>
414 <mads:nameOfProminentMember>
415 <xsl:value-of select="marc:subfield[@code='b']"/>
416 </mads:nameOfProminentMember>
417 <mads:hereditaryTitle>
418 <xsl:value-of select="marc:subfield[@code='c']"/>
419 </mads:hereditaryTitle>
420 <mads:dateValid point="start">
421 <xsl:value-of select="marc:subfield[@code='s']"/>
423 <mads:dateValid point="end">
424 <xsl:value-of select="marc:subfield[@code='t']"/>
426 </mads:familyInformation>
431 <mads:recordOrigin>Converted from MARCXML to MADS version 2.0 (Revision 2.13)</mads:recordOrigin>
432 <!-- <xsl:apply-templates select="marc:datafield[@tag=024]"/> -->
434 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>
435 <xsl:apply-templates select="marc:controlfield[@tag=005]"/>
436 <xsl:apply-templates select="marc:controlfield[@tag=001]"/>
437 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>
438 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='e']"/>
439 <xsl:for-each select="marc:controlfield[@tag=008]">
440 <xsl:if test="substring(.,11,1)='a'">
441 <mads:descriptionStandard>
442 <xsl:text>earlier rules</xsl:text>
443 </mads:descriptionStandard>
445 <xsl:if test="substring(.,11,1)='b'">
446 <mads:descriptionStandard>
447 <xsl:text>aacr1</xsl:text>
448 </mads:descriptionStandard>
450 <xsl:if test="substring(.,11,1)='c'">
451 <mads:descriptionStandard>
452 <xsl:text>aacr2</xsl:text>
453 </mads:descriptionStandard>
455 <xsl:if test="substring(.,11,1)='d'">
456 <mads:descriptionStandard>
457 <xsl:text>aacr2 compatible</xsl:text>
458 </mads:descriptionStandard>
460 <xsl:if test="substring(.,11,1)='z'">
461 <mads:descriptionStandard>
462 <xsl:text>other rules</xsl:text>
463 </mads:descriptionStandard>
469 <!-- start of secondary templates -->
471 <!-- ======== xlink ======== -->
473 <!-- <xsl:template name="uri">
474 <xsl:for-each select="marc:subfield[@code='0']">
475 <xsl:attribute name="xlink:href">
476 <xsl:value-of select="."/>
481 <xsl:template match="marc:subfield[@code='i']">
482 <xsl:attribute name="otherType">
483 <xsl:value-of select="."/>
487 <!-- No role/roleTerm mapped in MADS 06/24/2010
488 <xsl:template name="role">
489 <xsl:for-each select="marc:subfield[@code='e']">
491 <mads:roleTerm type="text">
492 <xsl:value-of select="."/>
499 <xsl:template name="part">
500 <xsl:variable name="partNumber">
501 <xsl:call-template name="specialSubfieldSelect">
502 <xsl:with-param name="axis">n</xsl:with-param>
503 <xsl:with-param name="anyCodes">n</xsl:with-param>
504 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
507 <xsl:variable name="partName">
508 <xsl:call-template name="specialSubfieldSelect">
509 <xsl:with-param name="axis">p</xsl:with-param>
510 <xsl:with-param name="anyCodes">p</xsl:with-param>
511 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
514 <xsl:if test="string-length(normalize-space($partNumber))">
516 <xsl:call-template name="chopPunctuation">
517 <xsl:with-param name="chopString" select="$partNumber"/>
521 <xsl:if test="string-length(normalize-space($partName))">
523 <xsl:call-template name="chopPunctuation">
524 <xsl:with-param name="chopString" select="$partName"/>
530 <xsl:template name="nameABCDN">
531 <xsl:for-each select="marc:subfield[@code='a']">
533 <xsl:call-template name="chopPunctuation">
534 <xsl:with-param name="chopString" select="."/>
538 <xsl:for-each select="marc:subfield[@code='b']">
540 <xsl:value-of select="."/>
544 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
546 <xsl:call-template name="subfieldSelect">
547 <xsl:with-param name="codes">cdn</xsl:with-param>
553 <xsl:template name="nameABCDQ">
555 <xsl:call-template name="chopPunctuation">
556 <xsl:with-param name="chopString">
557 <xsl:call-template name="subfieldSelect">
558 <xsl:with-param name="codes">aq</xsl:with-param>
563 <xsl:call-template name="termsOfAddress"/>
564 <xsl:call-template name="nameDate"/>
567 <xsl:template name="nameACDENQ">
569 <xsl:call-template name="subfieldSelect">
570 <xsl:with-param name="codes">acdenq</xsl:with-param>
575 <xsl:template name="nameDate">
576 <xsl:for-each select="marc:subfield[@code='d']">
577 <mads:namePart type="date">
578 <xsl:call-template name="chopPunctuation">
579 <xsl:with-param name="chopString" select="."/>
585 <xsl:template name="specialSubfieldSelect">
586 <xsl:param name="anyCodes"/>
587 <xsl:param name="axis"/>
588 <xsl:param name="beforeCodes"/>
589 <xsl:param name="afterCodes"/>
590 <xsl:variable name="str">
591 <xsl:for-each select="marc:subfield">
593 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])">
594 <xsl:value-of select="text()"/>
595 <xsl:text> </xsl:text>
599 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
602 <xsl:template name="termsOfAddress">
603 <xsl:if test="marc:subfield[@code='b' or @code='c']">
604 <mads:namePart type="termsOfAddress">
605 <xsl:call-template name="chopPunctuation">
606 <xsl:with-param name="chopString">
607 <xsl:call-template name="subfieldSelect">
608 <xsl:with-param name="codes">bc</xsl:with-param>
616 <xsl:template name="displayLabel">
617 <xsl:if test="marc:subfield[@code='z']">
618 <xsl:attribute name="displayLabel">
619 <xsl:value-of select="marc:subfield[@code='z']"/>
622 <xsl:if test="marc:subfield[@code='3']">
623 <xsl:attribute name="displayLabel">
624 <xsl:value-of select="marc:subfield[@code='3']"/>
629 <xsl:template name="isInvalid">
630 <xsl:if test="@code='z'">
631 <xsl:attribute name="invalid">yes</xsl:attribute>
635 <xsl:template name="sub2Attribute">
637 <xsl:if test="../marc:subfield[@code='2']">
638 <xsl:attribute name="type">
639 <xsl:value-of select="../marc:subfield[@code='2']"/>
644 <xsl:template match="marc:controlfield[@tag=001]">
645 <mads:recordIdentifier>
646 <xsl:if test="../marc:controlfield[@tag=003]">
647 <xsl:attribute name="source">
648 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
651 <xsl:value-of select="."/>
652 </mads:recordIdentifier>
655 <xsl:template match="marc:controlfield[@tag=005]">
656 <mads:recordChangeDate encoding="iso8601">
657 <xsl:value-of select="."/>
658 </mads:recordChangeDate>
661 <xsl:template match="marc:controlfield[@tag=008]">
662 <mads:recordCreationDate encoding="marc">
663 <xsl:value-of select="substring(.,1,6)"/>
664 </mads:recordCreationDate>
667 <xsl:template match="marc:datafield[@tag=010]">
668 <xsl:for-each select="marc:subfield">
669 <mads:identifier type="lccn">
670 <xsl:call-template name="isInvalid"/>
671 <xsl:value-of select="."/>
676 <xsl:template match="marc:datafield[@tag=024]">
677 <xsl:for-each select="marc:subfield[not(@code=2)]">
679 <xsl:call-template name="isInvalid"/>
680 <xsl:call-template name="sub2Attribute"/>
681 <xsl:value-of select="."/>
686 <!-- ========== 372 ========== -->
687 <xsl:template match="marc:datafield[@tag=372]">
688 <mads:fieldOfActivity>
689 <xsl:call-template name="subfieldSelect">
690 <xsl:with-param name="codes">a</xsl:with-param>
692 <xsl:text>-</xsl:text>
693 <xsl:call-template name="subfieldSelect">
694 <xsl:with-param name="codes">st</xsl:with-param>
696 </mads:fieldOfActivity>
700 <!-- ========== 040 ========== -->
701 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">
702 <mads:recordContentSource authority="marcorg">
703 <xsl:value-of select="."/>
704 </mads:recordContentSource>
707 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">
708 <mads:languageOfCataloging>
709 <mads:languageTerm authority="iso639-2b" type="code">
710 <xsl:value-of select="."/>
712 </mads:languageOfCataloging>
715 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='e']">
716 <mads:descriptionStandard>
717 <xsl:value-of select="."/>
718 </mads:descriptionStandard>
721 <!-- ========== classification 2.03 ========== -->
723 <xsl:template match="marc:datafield[@tag=053]">
724 <mads:classification>
725 <xsl:call-template name="subfieldSelect">
726 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
727 <xsl:with-param name="delimeter">-</xsl:with-param>
729 </mads:classification>
732 <xsl:template match="marc:datafield[@tag=055]">
733 <mads:classification>
734 <xsl:call-template name="subfieldSelect">
735 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
736 <xsl:with-param name="delimeter">-</xsl:with-param>
738 </mads:classification>
741 <xsl:template match="marc:datafield[@tag=060]">
742 <mads:classification>
743 <xsl:call-template name="subfieldSelect">
744 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
745 <xsl:with-param name="delimeter">-</xsl:with-param>
747 </mads:classification>
749 <xsl:template match="marc:datafield[@tag=065]">
750 <mads:classification>
751 <xsl:attribute name="authority">
752 <xsl:value-of select="marc:subfield[@code='2']"/>
754 <xsl:call-template name="subfieldSelect">
755 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
756 <xsl:with-param name="delimeter">-</xsl:with-param>
758 </mads:classification>
760 <xsl:template match="marc:datafield[@tag=070]">
761 <mads:classification>
762 <xsl:call-template name="subfieldSelect">
763 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
764 <xsl:with-param name="delimeter">-</xsl:with-param>
766 </mads:classification>
768 <xsl:template match="marc:datafield[@tag=080]">
769 <mads:classification>
770 <xsl:attribute name="authority">
771 <xsl:value-of select="marc:subfield[@code='2']"/>
773 <xsl:call-template name="subfieldSelect">
774 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
775 <xsl:with-param name="delimeter">-</xsl:with-param>
777 </mads:classification>
779 <xsl:template match="marc:datafield[@tag=082]">
780 <mads:classification>
781 <xsl:attribute name="authority">
782 <xsl:value-of select="marc:subfield[@code='2']"/>
784 <xsl:call-template name="subfieldSelect">
785 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
786 <xsl:with-param name="delimeter">-</xsl:with-param>
788 </mads:classification>
790 <xsl:template match="marc:datafield[@tag=083]">
791 <mads:classification>
792 <xsl:attribute name="authority">
793 <xsl:value-of select="marc:subfield[@code='2']"/>
795 <xsl:call-template name="subfieldSelect">
796 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
797 <xsl:with-param name="delimeter">-</xsl:with-param>
799 </mads:classification>
801 <xsl:template match="marc:datafield[@tag=086]">
802 <mads:classification>
803 <xsl:attribute name="authority">
804 <xsl:value-of select="marc:subfield[@code='2']"/>
806 <xsl:call-template name="subfieldSelect">
807 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
808 <xsl:with-param name="delimeter">-</xsl:with-param>
810 </mads:classification>
812 <xsl:template match="marc:datafield[@tag=087]">
813 <mads:classification>
814 <xsl:attribute name="authority">
815 <xsl:value-of select="marc:subfield[@code='2']"/>
817 <xsl:call-template name="subfieldSelect">
818 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
819 <xsl:with-param name="delimeter">-</xsl:with-param>
821 </mads:classification>
825 <!-- ========== names ========== -->
826 <xsl:template match="marc:datafield[@tag=100]">
827 <mads:name type="personal">
828 <xsl:call-template name="setAuthority"/>
829 <xsl:call-template name="nameABCDQ"/>
831 <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>
832 <xsl:call-template name="title"/>
833 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
836 <xsl:template match="marc:datafield[@tag=110]">
837 <mads:name type="corporate">
838 <xsl:call-template name="setAuthority"/>
839 <xsl:call-template name="nameABCDN"/>
841 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
844 <xsl:template match="marc:datafield[@tag=111]">
845 <mads:name type="conference">
846 <xsl:call-template name="setAuthority"/>
847 <xsl:call-template name="nameACDENQ"/>
849 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
852 <xsl:template match="marc:datafield[@tag=400]">
854 <xsl:call-template name="variantTypeAttribute"/>
855 <mads:name type="personal">
856 <xsl:call-template name="nameABCDQ"/>
858 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
859 <xsl:call-template name="title"/>
863 <xsl:template match="marc:datafield[@tag=410]">
865 <xsl:call-template name="variantTypeAttribute"/>
866 <mads:name type="corporate">
867 <xsl:call-template name="nameABCDN"/>
869 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
873 <xsl:template match="marc:datafield[@tag=411]">
875 <xsl:call-template name="variantTypeAttribute"/>
876 <mads:name type="conference">
877 <xsl:call-template name="nameACDENQ"/>
879 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
883 <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">
885 <xsl:call-template name="relatedTypeAttribute"/>
886 <!-- <xsl:call-template name="uri"/> -->
887 <mads:name type="personal">
888 <xsl:call-template name="setAuthority"/>
889 <xsl:call-template name="nameABCDQ"/>
891 <xsl:call-template name="title"/>
892 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
896 <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">
898 <xsl:call-template name="relatedTypeAttribute"/>
899 <!-- <xsl:call-template name="uri"/> -->
900 <mads:name type="corporate">
901 <xsl:call-template name="setAuthority"/>
902 <xsl:call-template name="nameABCDN"/>
904 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
908 <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">
910 <xsl:call-template name="relatedTypeAttribute"/>
911 <!-- <xsl:call-template name="uri"/> -->
912 <mads:name type="conference">
913 <xsl:call-template name="setAuthority"/>
914 <xsl:call-template name="nameACDENQ"/>
916 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
920 <!-- ========== titles ========== -->
921 <xsl:template match="marc:datafield[@tag=130]">
922 <xsl:call-template name="uniform-title"/>
923 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
926 <xsl:template match="marc:datafield[@tag=430]">
928 <xsl:call-template name="variantTypeAttribute"/>
929 <xsl:call-template name="uniform-title"/>
930 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
934 <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">
936 <xsl:call-template name="relatedTypeAttribute"/>
937 <xsl:call-template name="uniform-title"/>
938 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
942 <xsl:template name="title">
943 <xsl:variable name="hasTitle">
944 <xsl:for-each select="marc:subfield">
945 <xsl:if test="(contains('tfghklmors',@code) )">
946 <xsl:value-of select="@code"/>
950 <xsl:if test="string-length($hasTitle) > 0 ">
952 <xsl:call-template name="setAuthority"/>
954 <xsl:variable name="str">
955 <xsl:for-each select="marc:subfield">
956 <xsl:if test="(contains('atfghklmors',@code) )">
957 <xsl:value-of select="text()"/>
958 <xsl:text> </xsl:text>
962 <xsl:call-template name="chopPunctuation">
963 <xsl:with-param name="chopString">
964 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
968 <xsl:call-template name="part"/>
969 <!-- <xsl:call-template name="uri"/> -->
974 <xsl:template name="uniform-title">
975 <xsl:variable name="hasTitle">
976 <xsl:for-each select="marc:subfield">
977 <xsl:if test="(contains('atfghklmors',@code) )">
978 <xsl:value-of select="@code"/>
982 <xsl:if test="string-length($hasTitle) > 0 ">
984 <xsl:call-template name="setAuthority"/>
986 <xsl:variable name="str">
987 <xsl:for-each select="marc:subfield">
988 <xsl:if test="(contains('adfghklmors',@code) )">
989 <xsl:value-of select="text()"/>
990 <xsl:text> </xsl:text>
994 <xsl:call-template name="chopPunctuation">
995 <xsl:with-param name="chopString">
996 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
1000 <xsl:call-template name="part"/>
1001 <!-- <xsl:call-template name="uri"/> -->
1007 <!-- ========== topics ========== -->
1008 <xsl:template match="marc:subfield[@code='x']">
1010 <xsl:call-template name="chopPunctuation">
1011 <xsl:with-param name="chopString">
1012 <xsl:value-of select="."/>
1014 </xsl:call-template>
1020 match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">
1021 <xsl:call-template name="topic"/>
1022 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1025 match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">
1027 <xsl:call-template name="variantTypeAttribute"/>
1028 <xsl:call-template name="topic"/>
1032 match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">
1034 <xsl:call-template name="relatedTypeAttribute"/>
1035 <!-- <xsl:call-template name="uri"/> -->
1036 <xsl:call-template name="topic"/>
1037 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1040 <xsl:template name="topic">
1042 <xsl:call-template name="setAuthority"/>
1043 <!-- tmee2006 dedupe 550a
1044 <xsl:if test="@tag=550 or @tag=750">
1045 <xsl:call-template name="subfieldSelect">
1046 <xsl:with-param name="codes">ab</xsl:with-param>
1047 </xsl:call-template>
1051 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1052 <xsl:call-template name="chopPunctuation">
1053 <xsl:with-param name="chopString">
1054 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1056 </xsl:call-template>
1059 <xsl:call-template name="chopPunctuation">
1060 <xsl:with-param name="chopString">
1062 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1063 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1066 <xsl:call-template name="subfieldSelect">
1067 <xsl:with-param name="codes">ab</xsl:with-param>
1068 </xsl:call-template>
1072 </xsl:call-template>
1076 <!-- ========= temporals ========== -->
1077 <xsl:template match="marc:subfield[@code='y']">
1079 <xsl:call-template name="chopPunctuation">
1080 <xsl:with-param name="chopString">
1081 <xsl:value-of select="."/>
1083 </xsl:call-template>
1087 match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">
1088 <xsl:call-template name="temporal"/>
1091 match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">
1093 <xsl:call-template name="variantTypeAttribute"/>
1094 <xsl:call-template name="temporal"/>
1098 match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">
1100 <xsl:call-template name="relatedTypeAttribute"/>
1101 <!-- <xsl:call-template name="uri"/> -->
1102 <xsl:call-template name="temporal"/>
1105 <xsl:template name="temporal">
1107 <xsl:call-template name="setAuthority"/>
1108 <xsl:if test="@tag=548 or @tag=748">
1109 <xsl:value-of select="marc:subfield[@code='a']"/>
1111 <xsl:call-template name="chopPunctuation">
1112 <xsl:with-param name="chopString">
1114 <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">
1115 <xsl:apply-templates select="marc:subfield[@code='y']"/>
1118 <xsl:value-of select="marc:subfield[@code='a']"/>
1122 </xsl:call-template>
1124 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1127 <!-- ========== genre ========== -->
1128 <xsl:template match="marc:subfield[@code='v']">
1130 <xsl:call-template name="chopPunctuation">
1131 <xsl:with-param name="chopString">
1132 <xsl:value-of select="."/>
1134 </xsl:call-template>
1138 match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">
1139 <xsl:call-template name="genre"/>
1142 match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">
1144 <xsl:call-template name="variantTypeAttribute"/>
1145 <xsl:call-template name="genre"/>
1149 <xsl:template match="marc:datafield[@tag=555]">
1151 <xsl:call-template name="relatedTypeAttribute"/>
1152 <xsl:call-template name="uri"/>
1153 <xsl:call-template name="genre"/>
1158 match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">
1160 <xsl:call-template name="relatedTypeAttribute"/>
1161 <xsl:call-template name="genre"/>
1164 <xsl:template name="genre">
1166 <xsl:if test="@tag=555">
1167 <xsl:value-of select="marc:subfield[@code='a']"/>
1169 <xsl:call-template name="setAuthority"/>
1170 <xsl:call-template name="chopPunctuation">
1171 <xsl:with-param name="chopString">
1174 <xsl:when test="@tag='555'"/>
1175 <xsl:when test="@tag=185 or @tag=485 or @tag=585">
1176 <xsl:apply-templates select="marc:subfield[@code='v']"/>
1179 <xsl:value-of select="marc:subfield[@code='a']"/>
1183 </xsl:call-template>
1185 <xsl:apply-templates/>
1188 <!-- ========= geographic ========== -->
1189 <xsl:template match="marc:subfield[@code='z']">
1191 <xsl:call-template name="chopPunctuation">
1192 <xsl:with-param name="chopString">
1193 <xsl:value-of select="."/>
1195 </xsl:call-template>
1198 <xsl:template name="geographic">
1201 <xsl:call-template name="setAuthority"/>
1203 <xsl:if test="@tag=151 or @tag=551">
1204 <xsl:value-of select="marc:subfield[@code='a']"/>
1206 <xsl:call-template name="chopPunctuation">
1207 <xsl:with-param name="chopString">
1208 <xsl:if test="@tag=181 or @tag=481 or @tag=581">
1209 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1213 <xsl:when test="@tag=181 or @tag=481 or @tag=581">
1214 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1218 <xsl:value-of select="marc:subfield[@code='a']"/>
1223 </xsl:call-template>
1225 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1228 match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">
1229 <xsl:call-template name="geographic"/>
1232 match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">
1234 <xsl:call-template name="variantTypeAttribute"/>
1235 <xsl:call-template name="geographic"/>
1239 match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">
1241 <xsl:call-template name="relatedTypeAttribute"/>
1242 <!-- <xsl:call-template name="uri"/> -->
1243 <xsl:call-template name="geographic"/>
1246 <xsl:template match="marc:datafield[@tag=580]">
1248 <xsl:call-template name="relatedTypeAttribute"/>
1249 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1253 match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">
1255 <xsl:call-template name="relatedTypeAttribute"/>
1256 <xsl:call-template name="geographic"/>
1259 <xsl:template match="marc:datafield[@tag=755]">
1261 <xsl:call-template name="relatedTypeAttribute"/>
1262 <xsl:call-template name="setAuthority"/>
1263 <xsl:call-template name="genre"/>
1264 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1267 <xsl:template match="marc:datafield[@tag=780]">
1269 <xsl:call-template name="relatedTypeAttribute"/>
1270 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1273 <xsl:template match="marc:datafield[@tag=785]">
1275 <xsl:call-template name="relatedTypeAttribute"/>
1276 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1280 <!-- ========== notes ========== -->
1281 <xsl:template match="marc:datafield[667 <= @tag and @tag <= 688]">
1284 <xsl:when test="@tag=667">
1285 <xsl:attribute name="type">nonpublic</xsl:attribute>
1287 <xsl:when test="@tag=670">
1288 <xsl:attribute name="type">source</xsl:attribute>
1290 <xsl:when test="@tag=675">
1291 <xsl:attribute name="type">notFound</xsl:attribute>
1293 <xsl:when test="@tag=678">
1294 <xsl:attribute name="type">history</xsl:attribute>
1296 <xsl:when test="@tag=681">
1297 <xsl:attribute name="type">subject example</xsl:attribute>
1299 <xsl:when test="@tag=682">
1300 <xsl:attribute name="type">deleted heading information</xsl:attribute>
1302 <xsl:when test="@tag=688">
1303 <xsl:attribute name="type">application history</xsl:attribute>
1306 <xsl:call-template name="chopPunctuation">
1307 <xsl:with-param name="chopString">
1309 <xsl:when test="@tag=667 or @tag=675">
1310 <xsl:value-of select="marc:subfield[@code='a']"/>
1312 <xsl:when test="@tag=670 or @tag=678">
1313 <xsl:call-template name="subfieldSelect">
1314 <xsl:with-param name="codes">ab</xsl:with-param>
1315 </xsl:call-template>
1317 <xsl:when test="680 <= @tag and @tag <=688">
1318 <xsl:call-template name="subfieldSelect">
1319 <xsl:with-param name="codes">ai</xsl:with-param>
1320 </xsl:call-template>
1324 </xsl:call-template>
1328 <!-- ========== url ========== -->
1329 <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">
1331 <xsl:if test="marc:subfield[@code='z' or @code='3']">
1332 <xsl:attribute name="displayLabel">
1333 <xsl:call-template name="subfieldSelect">
1334 <xsl:with-param name="codes">z3</xsl:with-param>
1335 </xsl:call-template>
1338 <xsl:value-of select="marc:subfield[@code='u']"/>
1342 <xsl:template name="relatedTypeAttribute">
1345 test="@tag=500 or @tag=510 or @tag=511 or @tag=548 or @tag=550 or @tag=551 or @tag=555 or @tag=580 or @tag=581 or @tag=582 or @tag=585">
1346 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">
1347 <xsl:attribute name="type">earlier</xsl:attribute>
1349 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">
1350 <xsl:attribute name="type">later</xsl:attribute>
1352 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">
1353 <xsl:attribute name="type">parentOrg</xsl:attribute>
1355 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">
1356 <xsl:attribute name="type">broader</xsl:attribute>
1358 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">
1359 <xsl:attribute name="type">narrower</xsl:attribute>
1361 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='r'">
1362 <xsl:attribute name="type">other</xsl:attribute>
1364 <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">
1365 <xsl:attribute name="type">other</xsl:attribute>
1368 <xsl:when test="@tag=530 or @tag=730">
1369 <xsl:attribute name="type">other</xsl:attribute>
1373 <xsl:attribute name="type">equivalent</xsl:attribute>
1376 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1381 <xsl:template name="variantTypeAttribute">
1384 test="@tag=400 or @tag=410 or @tag=411 or @tag=451 or @tag=455 or @tag=480 or @tag=481 or @tag=482 or @tag=485">
1385 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">
1386 <xsl:attribute name="type">acronym</xsl:attribute>
1388 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='n'">
1389 <xsl:attribute name="type">other</xsl:attribute>
1391 <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">
1392 <xsl:attribute name="type">other</xsl:attribute>
1397 <xsl:attribute name="type">other</xsl:attribute>
1400 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1403 <xsl:template name="setAuthority">
1405 <!-- can be called from the datafield or subfield level, so "..//@tag" means
1406 the tag can be at the subfield's parent level or at the datafields own level -->
1409 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">
1410 <xsl:attribute name="authority">
1411 <xsl:text>naf</xsl:text>
1415 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">
1416 <xsl:attribute name="authority">
1417 <xsl:text>lcsh</xsl:text>
1421 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">
1422 <xsl:attribute name="authority">
1423 <xsl:text>lacnaf</xsl:text>
1427 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">
1428 <xsl:attribute name="authority">
1429 <xsl:text>lcsh</xsl:text>
1433 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">
1434 <xsl:attribute name="authority">cash</xsl:attribute>
1437 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">
1438 <xsl:attribute name="authority">naf</xsl:attribute>
1441 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">
1442 <xsl:attribute name="authority">lcsh</xsl:attribute>
1445 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">
1446 <xsl:attribute name="authority">
1447 <xsl:text>lacnaf</xsl:text>
1451 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">
1452 <xsl:attribute name="authority">
1453 <xsl:text>cash</xsl:text>
1457 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='b'">
1458 <xsl:attribute name="authority">
1459 <xsl:text>lcshcl</xsl:text>
1463 test="(ancestor-or-self::marc:datafield/@tag=100 or ancestor-or-self::marc:datafield/@tag=110 or ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130 or ancestor-or-self::marc:datafield/@tag=151) and $controlField008-11='c'">
1464 <xsl:attribute name="authority">
1465 <xsl:text>nlmnaf</xsl:text>
1469 test="(ancestor-or-self::marc:datafield/@tag=100 or ancestor-or-self::marc:datafield/@tag=110 or ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130 or ancestor-or-self::marc:datafield/@tag=151) and $controlField008-11='d'">
1470 <xsl:attribute name="authority">
1471 <xsl:text>nalnaf</xsl:text>
1475 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='r'">
1476 <xsl:attribute name="authority">
1477 <xsl:text>aat</xsl:text>
1481 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='s'">
1482 <xsl:attribute name="authority">sears</xsl:attribute>
1485 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='v'">
1486 <xsl:attribute name="authority">rvm</xsl:attribute>
1489 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='z'">
1490 <xsl:attribute name="authority">
1492 select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"
1497 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='a'">
1498 <xsl:attribute name="authority">
1499 <xsl:text>naf</xsl:text>
1503 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='b'">
1504 <xsl:attribute name="authority">
1505 <xsl:text>lcsh</xsl:text>
1509 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">
1510 <xsl:attribute name="authority">
1511 <xsl:text>lacnaf</xsl:text>
1515 test="(ancestor-or-self::marc:datafield/@tag=148 or ancestor-or-self::marc:datafield/@tag=150 or ancestor-or-self::marc:datafield/@tag=155) and $controlField008-11='a' ">
1516 <xsl:attribute name="authority">
1517 <xsl:text>lcsh</xsl:text>
1521 test="(ancestor-or-self::marc:datafield/@tag=148 or ancestor-or-self::marc:datafield/@tag=150 or ancestor-or-self::marc:datafield/@tag=155) and $controlField008-11='a' ">
1522 <xsl:attribute name="authority">
1523 <xsl:text>lcsh</xsl:text>
1527 test="(ancestor-or-self::marc:datafield/@tag=148 or ancestor-or-self::marc:datafield/@tag=150 or ancestor-or-self::marc:datafield/@tag=155) and $controlField008-11='c' ">
1528 <xsl:attribute name="authority">
1529 <xsl:text>mesh</xsl:text>
1533 test="(ancestor-or-self::marc:datafield/@tag=148 or ancestor-or-self::marc:datafield/@tag=150 or ancestor-or-self::marc:datafield/@tag=155) and $controlField008-11='d' ">
1534 <xsl:attribute name="authority">
1535 <xsl:text>nal</xsl:text>
1539 test="(ancestor-or-self::marc:datafield/@tag=148 or ancestor-or-self::marc:datafield/@tag=150 or ancestor-or-self::marc:datafield/@tag=155) and $controlField008-11='k' ">
1540 <xsl:attribute name="authority">
1541 <xsl:text>cash</xsl:text>
1545 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">
1546 <xsl:attribute name="authority">
1547 <xsl:text>naf</xsl:text>
1551 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">
1552 <xsl:attribute name="authority">lcsh</xsl:attribute>
1555 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">
1556 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1559 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">
1560 <xsl:attribute name="authority">cash</xsl:attribute>
1563 test="(..//ancestor-or-self::marc:datafield/@tag=180 or ..//ancestor-or-self::marc:datafield/@tag=181 or ..//ancestor-or-self::marc:datafield/@tag=182 or ..//ancestor-or-self::marc:datafield/@tag=185) and $controlField008-11='a'">
1564 <xsl:attribute name="authority">lcsh</xsl:attribute>
1567 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">
1568 <xsl:attribute name="authority">naf</xsl:attribute>
1571 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">
1572 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1574 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">
1575 <xsl:attribute name="authority">lcsh</xsl:attribute>
1577 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">
1578 <xsl:attribute name="authority">cash</xsl:attribute>
1581 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='1'">
1582 <xsl:attribute name="authority">lcshcl</xsl:attribute>
1585 test="(ancestor-or-self::marc:datafield/@tag=700 or ancestor-or-self::marc:datafield/@tag=710 or ancestor-or-self::marc:datafield/@tag=711 or ancestor-or-self::marc:datafield/@tag=730 or ancestor-or-self::marc:datafield/@tag=751) and @ind2='2'">
1586 <xsl:attribute name="authority">nlmnaf</xsl:attribute>
1589 test="(ancestor-or-self::marc:datafield/@tag=700 or ancestor-or-self::marc:datafield/@tag=710 or ancestor-or-self::marc:datafield/@tag=711 or ancestor-or-self::marc:datafield/@tag=730 or ancestor-or-self::marc:datafield/@tag=751) and @ind2='3'">
1590 <xsl:attribute name="authority">nalnaf</xsl:attribute>
1593 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='6'">
1594 <xsl:attribute name="authority">rvm</xsl:attribute>
1597 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='7'">
1598 <xsl:attribute name="authority">
1599 <xsl:value-of select="marc:subfield[@code='2']"/>
1603 test="(ancestor-or-self::marc:datafield/@tag=710 or ancestor-or-self::marc:datafield/@tag=711 or ancestor-or-self::marc:datafield/@tag=730 or ancestor-or-self::marc:datafield/@tag=751) and @ind2='5'">
1604 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1607 test="(ancestor-or-self::marc:datafield/@tag=710 or ancestor-or-self::marc:datafield/@tag=711 or ancestor-or-self::marc:datafield/@tag=730 or ancestor-or-self::marc:datafield/@tag=751) and @ind2='0'">
1608 <xsl:attribute name="authority">naf</xsl:attribute>
1611 test="(ancestor-or-self::marc:datafield/@tag=748 or ancestor-or-self::marc:datafield/@tag=750 or ancestor-or-self::marc:datafield/@tag=755) and @ind2='0'">
1612 <xsl:attribute name="authority">lcsh</xsl:attribute>
1615 test="(ancestor-or-self::marc:datafield/@tag=748 or ancestor-or-self::marc:datafield/@tag=750 or ancestor-or-self::marc:datafield/@tag=755) and @ind2='2'">
1616 <xsl:attribute name="authority">mesh</xsl:attribute>
1619 test="(ancestor-or-self::marc:datafield/@tag=748 or ancestor-or-self::marc:datafield/@tag=750 or ancestor-or-self::marc:datafield/@tag=755) and @ind2='3'">
1620 <xsl:attribute name="authority">nal</xsl:attribute>
1623 test="(ancestor-or-self::marc:datafield/@tag=748 or ancestor-or-self::marc:datafield/@tag=750 or ancestor-or-self::marc:datafield/@tag=755) and @ind2='5'">
1624 <xsl:attribute name="authority">cash</xsl:attribute>
1628 <xsl:template match="*"/>
1629 </xsl:stylesheet>$XSLT$ WHERE name = 'mads21';