3 SELECT evergreen.upgrade_deps_block_check('1068', :eg_version); --miker/gmcharlt/kmlussier
5 INSERT INTO config.xml_transform (name,namespace_uri,prefix,xslt) VALUES ('mads21','http://www.loc.gov/mads/v2','mads21',$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.14 Fixed bug in mads:geographic attributes syntax ws 05/04/2016
189 2.13 fixed repeating <geographic> tmee 01/31/2014
190 2.12 added $2 authority for <classification> tmee 09/18/2012
191 2.11 added delimiters between <classification> subfields tmee 09/18/2012
192 2.10 fixed type="other" and type="otherType" for mads:related tmee 09/16/2011
193 2.09 fixed professionTerm and genreTerm empty tag error tmee 09/16/2011
194 2.08 fixed marc:subfield @code='i' matching error tmee 09/16/2011
195 2.07 fixed 555 duplication error tmee 08/10/2011
196 2.06 fixed topic subfield error tmee 08/10/2011
197 2.05 fixed title subfield error tmee 06/20/2011
198 2.04 fixed geographicSubdivision mapping for authority element tmee 06/16/2011
199 2.03 added classification for 053, 055, 060, 065, 070, 080, 082, 083, 086, 087 tmee 06/03/2011
200 2.02 added descriptionStandard for 008/10 tmee 04/27/2011
201 2.01 added extensions for 046, 336, 370, 374, 375, 376 tmee 04/08/2011
202 2.00 redefined imported MODS elements in version 1.0 to MADS elements in version 2.0 tmee 02/08/2011
203 1.08 added 372 subfields $a $s $t for <fieldOfActivity> tmee 06/24/2010
204 1.07 removed role/roleTerm 100, 110, 111, 400, 410, 411, 500, 510, 511, 700, 710, 711 tmee 06/24/2010
205 1.06 added strip-space tmee 06/24/2010
206 1.05 added subfield $a for 130, 430, 530 tmee 06/21/2010
207 1.04 fixed 550 z omission ntra 08/11/2008
208 1.03 removed duplication of 550 $a text tmee 11/01/2006
209 1.02 fixed namespace references between mads and mods ntra 10/06/2006
210 1.01 revised rgue/jrad 11/29/05
211 1.00 adapted from MARC21Slim2MODS3.xsl ntra 07/06/05
214 <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->
215 <xsl:param name="authority"/>
216 <xsl:variable name="auth">
218 <xsl:when test="$authority">
219 <xsl:value-of select="$authority"/>
221 <xsl:otherwise>naf</xsl:otherwise>
224 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
225 <xsl:variable name="controlField008-06"
226 select="substring(descendant-or-self::marc:controlfield[@tag=008],7,1)"/>
227 <xsl:variable name="controlField008-11"
228 select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>
229 <xsl:variable name="controlField008-14"
230 select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>
231 <xsl:template match="/">
233 <xsl:when test="descendant-or-self::marc:collection">
234 <mads:madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
235 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/v2/mads-2-0.xsd">
236 <xsl:for-each select="descendant-or-self::marc:collection/marc:record">
237 <mads:mads version="2.0">
238 <xsl:call-template name="marcRecord"/>
241 </mads:madsCollection>
244 <mads:mads version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
245 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/mads-2-0.xsd">
246 <xsl:for-each select="descendant-or-self::marc:record">
247 <xsl:call-template name="marcRecord"/>
254 <xsl:template name="marcRecord">
258 <xsl:when test="$controlField008-06='d'">
259 <xsl:attribute name="geographicSubdivision">
260 <xsl:text>direct</xsl:text>
263 <xsl:when test="$controlField008-06='i'">
264 <xsl:attribute name="geographicSubdivision">
265 <xsl:text>indirect</xsl:text>
268 <xsl:when test="$controlField008-06='n'">
269 <xsl:attribute name="geographicSubdivision">
270 <xsl:text>not applicable</xsl:text>
275 <xsl:apply-templates select="marc:datafield[100 <= @tag and @tag < 200]"/>
280 select="marc:datafield[500 <= @tag and @tag <= 585]|marc:datafield[700 <= @tag and @tag <= 785]"/>
283 <xsl:apply-templates select="marc:datafield[400 <= @tag and @tag <= 485]"/>
286 <xsl:apply-templates select="marc:datafield[667 <= @tag and @tag <= 688]"/>
289 <xsl:apply-templates select="marc:datafield[@tag=856]"/>
290 <xsl:apply-templates select="marc:datafield[@tag=010]"/>
291 <xsl:apply-templates select="marc:datafield[@tag=024]"/>
292 <xsl:apply-templates select="marc:datafield[@tag=372]"/>
294 <!-- classification -->
295 <xsl:apply-templates select="marc:datafield[@tag=053]"/>
296 <xsl:apply-templates select="marc:datafield[@tag=055]"/>
297 <xsl:apply-templates select="marc:datafield[@tag=060]"/>
298 <xsl:apply-templates select="marc:datafield[@tag=065]"/>
299 <xsl:apply-templates select="marc:datafield[@tag=070]"/>
300 <xsl:apply-templates select="marc:datafield[@tag=080]"/>
301 <xsl:apply-templates select="marc:datafield[@tag=082]"/>
302 <xsl:apply-templates select="marc:datafield[@tag=083]"/>
303 <xsl:apply-templates select="marc:datafield[@tag=086]"/>
304 <xsl:apply-templates select="marc:datafield[@tag=087]"/>
307 <xsl:for-each select="marc:datafield[@tag=373]">
310 <xsl:value-of select="marc:subfield[@code='a']"/>
312 <mads:dateValid point="start">
313 <xsl:value-of select="marc:subfield[@code='s']"/>
315 <mads:dateValid point="end">
316 <xsl:value-of select="marc:subfield[@code='t']"/>
320 <xsl:for-each select="marc:datafield[@tag=371]">
324 <xsl:value-of select="marc:subfield[@code='a']"/>
327 <xsl:value-of select="marc:subfield[@code='b']"/>
330 <xsl:value-of select="marc:subfield[@code='c']"/>
333 <xsl:value-of select="marc:subfield[@code='d']"/>
336 <xsl:value-of select="marc:subfield[@code='e']"/>
340 <xsl:value-of select="marc:subfield[@code='m']"/>
346 <xsl:for-each select="marc:datafield[@tag=336]">
349 <mads:contentType type="text">
350 <xsl:value-of select="marc:subfield[@code='a']"/>
352 <mads:contentType type="code">
353 <xsl:value-of select="marc:subfield[@code='b']"/>
359 <xsl:for-each select="marc:datafield[@tag=374]">
363 <xsl:when test="marc:subfield[@code='a']">
364 <mads:professionTerm>
365 <xsl:value-of select="marc:subfield[@code='a']"/>
366 </mads:professionTerm>
368 <xsl:when test="marc:subfield[@code='s']">
369 <mads:dateValid point="start">
370 <xsl:value-of select="marc:subfield[@code='s']"/>
373 <xsl:when test="marc:subfield[@code='t']">
374 <mads:dateValid point="end">
375 <xsl:value-of select="marc:subfield[@code='t']"/>
383 <xsl:for-each select="marc:datafield[@tag=375]">
387 <xsl:when test="marc:subfield[@code='a']">
389 <xsl:value-of select="marc:subfield[@code='a']"/>
392 <xsl:when test="marc:subfield[@code='s']">
393 <mads:dateValid point="start">
394 <xsl:value-of select="marc:subfield[@code='s']"/>
397 <xsl:when test="marc:subfield[@code='t']">
398 <mads:dateValid point="end">
399 <xsl:value-of select="marc:subfield[@code='t']"/>
407 <xsl:for-each select="marc:datafield[@tag=376]">
409 <mads:familyInformation>
411 <xsl:value-of select="marc:subfield[@code='a']"/>
413 <mads:nameOfProminentMember>
414 <xsl:value-of select="marc:subfield[@code='b']"/>
415 </mads:nameOfProminentMember>
416 <mads:hereditaryTitle>
417 <xsl:value-of select="marc:subfield[@code='c']"/>
418 </mads:hereditaryTitle>
419 <mads:dateValid point="start">
420 <xsl:value-of select="marc:subfield[@code='s']"/>
422 <mads:dateValid point="end">
423 <xsl:value-of select="marc:subfield[@code='t']"/>
425 </mads:familyInformation>
430 <mads:recordOrigin>Converted from MARCXML to MADS version 2.0 (Revision 2.13)</mads:recordOrigin>
431 <!-- <xsl:apply-templates select="marc:datafield[@tag=024]"/> -->
433 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>
434 <xsl:apply-templates select="marc:controlfield[@tag=005]"/>
435 <xsl:apply-templates select="marc:controlfield[@tag=001]"/>
436 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>
437 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='e']"/>
438 <xsl:for-each select="marc:controlfield[@tag=008]">
439 <xsl:if test="substring(.,11,1)='a'">
440 <mads:descriptionStandard>
441 <xsl:text>earlier rules</xsl:text>
442 </mads:descriptionStandard>
444 <xsl:if test="substring(.,11,1)='b'">
445 <mads:descriptionStandard>
446 <xsl:text>aacr1</xsl:text>
447 </mads:descriptionStandard>
449 <xsl:if test="substring(.,11,1)='c'">
450 <mads:descriptionStandard>
451 <xsl:text>aacr2</xsl:text>
452 </mads:descriptionStandard>
454 <xsl:if test="substring(.,11,1)='d'">
455 <mads:descriptionStandard>
456 <xsl:text>aacr2 compatible</xsl:text>
457 </mads:descriptionStandard>
459 <xsl:if test="substring(.,11,1)='z'">
460 <mads:descriptionStandard>
461 <xsl:text>other rules</xsl:text>
462 </mads:descriptionStandard>
468 <!-- start of secondary templates -->
470 <!-- ======== xlink ======== -->
472 <!-- <xsl:template name="uri">
473 <xsl:for-each select="marc:subfield[@code='0']">
474 <xsl:attribute name="xlink:href">
475 <xsl:value-of select="."/>
480 <xsl:template match="marc:subfield[@code='i']">
481 <xsl:attribute name="otherType">
482 <xsl:value-of select="."/>
486 <!-- No role/roleTerm mapped in MADS 06/24/2010
487 <xsl:template name="role">
488 <xsl:for-each select="marc:subfield[@code='e']">
490 <mads:roleTerm type="text">
491 <xsl:value-of select="."/>
498 <xsl:template name="part">
499 <xsl:variable name="partNumber">
500 <xsl:call-template name="specialSubfieldSelect">
501 <xsl:with-param name="axis">n</xsl:with-param>
502 <xsl:with-param name="anyCodes">n</xsl:with-param>
503 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
506 <xsl:variable name="partName">
507 <xsl:call-template name="specialSubfieldSelect">
508 <xsl:with-param name="axis">p</xsl:with-param>
509 <xsl:with-param name="anyCodes">p</xsl:with-param>
510 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
513 <xsl:if test="string-length(normalize-space($partNumber))">
515 <xsl:call-template name="chopPunctuation">
516 <xsl:with-param name="chopString" select="$partNumber"/>
520 <xsl:if test="string-length(normalize-space($partName))">
522 <xsl:call-template name="chopPunctuation">
523 <xsl:with-param name="chopString" select="$partName"/>
529 <xsl:template name="nameABCDN">
530 <xsl:for-each select="marc:subfield[@code='a']">
532 <xsl:call-template name="chopPunctuation">
533 <xsl:with-param name="chopString" select="."/>
537 <xsl:for-each select="marc:subfield[@code='b']">
539 <xsl:value-of select="."/>
543 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
545 <xsl:call-template name="subfieldSelect">
546 <xsl:with-param name="codes">cdn</xsl:with-param>
552 <xsl:template name="nameABCDQ">
554 <xsl:call-template name="chopPunctuation">
555 <xsl:with-param name="chopString">
556 <xsl:call-template name="subfieldSelect">
557 <xsl:with-param name="codes">aq</xsl:with-param>
562 <xsl:call-template name="termsOfAddress"/>
563 <xsl:call-template name="nameDate"/>
566 <xsl:template name="nameACDENQ">
568 <xsl:call-template name="subfieldSelect">
569 <xsl:with-param name="codes">acdenq</xsl:with-param>
574 <xsl:template name="nameDate">
575 <xsl:for-each select="marc:subfield[@code='d']">
576 <mads:namePart type="date">
577 <xsl:call-template name="chopPunctuation">
578 <xsl:with-param name="chopString" select="."/>
584 <xsl:template name="specialSubfieldSelect">
585 <xsl:param name="anyCodes"/>
586 <xsl:param name="axis"/>
587 <xsl:param name="beforeCodes"/>
588 <xsl:param name="afterCodes"/>
589 <xsl:variable name="str">
590 <xsl:for-each select="marc:subfield">
592 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])">
593 <xsl:value-of select="text()"/>
594 <xsl:text> </xsl:text>
598 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
601 <xsl:template name="termsOfAddress">
602 <xsl:if test="marc:subfield[@code='b' or @code='c']">
603 <mads:namePart type="termsOfAddress">
604 <xsl:call-template name="chopPunctuation">
605 <xsl:with-param name="chopString">
606 <xsl:call-template name="subfieldSelect">
607 <xsl:with-param name="codes">bc</xsl:with-param>
615 <xsl:template name="displayLabel">
616 <xsl:if test="marc:subfield[@code='z']">
617 <xsl:attribute name="displayLabel">
618 <xsl:value-of select="marc:subfield[@code='z']"/>
621 <xsl:if test="marc:subfield[@code='3']">
622 <xsl:attribute name="displayLabel">
623 <xsl:value-of select="marc:subfield[@code='3']"/>
628 <xsl:template name="isInvalid">
629 <xsl:if test="@code='z'">
630 <xsl:attribute name="invalid">yes</xsl:attribute>
634 <xsl:template name="sub2Attribute">
636 <xsl:if test="../marc:subfield[@code='2']">
637 <xsl:attribute name="type">
638 <xsl:value-of select="../marc:subfield[@code='2']"/>
643 <xsl:template match="marc:controlfield[@tag=001]">
644 <mads:recordIdentifier>
645 <xsl:if test="../marc:controlfield[@tag=003]">
646 <xsl:attribute name="source">
647 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
650 <xsl:value-of select="."/>
651 </mads:recordIdentifier>
654 <xsl:template match="marc:controlfield[@tag=005]">
655 <mads:recordChangeDate encoding="iso8601">
656 <xsl:value-of select="."/>
657 </mads:recordChangeDate>
660 <xsl:template match="marc:controlfield[@tag=008]">
661 <mads:recordCreationDate encoding="marc">
662 <xsl:value-of select="substring(.,1,6)"/>
663 </mads:recordCreationDate>
666 <xsl:template match="marc:datafield[@tag=010]">
667 <xsl:for-each select="marc:subfield">
668 <mads:identifier type="lccn">
669 <xsl:call-template name="isInvalid"/>
670 <xsl:value-of select="."/>
675 <xsl:template match="marc:datafield[@tag=024]">
676 <xsl:for-each select="marc:subfield[not(@code=2)]">
678 <xsl:call-template name="isInvalid"/>
679 <xsl:call-template name="sub2Attribute"/>
680 <xsl:value-of select="."/>
685 <!-- ========== 372 ========== -->
686 <xsl:template match="marc:datafield[@tag=372]">
687 <mads:fieldOfActivity>
688 <xsl:call-template name="subfieldSelect">
689 <xsl:with-param name="codes">a</xsl:with-param>
691 <xsl:text>-</xsl:text>
692 <xsl:call-template name="subfieldSelect">
693 <xsl:with-param name="codes">st</xsl:with-param>
695 </mads:fieldOfActivity>
699 <!-- ========== 040 ========== -->
700 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">
701 <mads:recordContentSource authority="marcorg">
702 <xsl:value-of select="."/>
703 </mads:recordContentSource>
706 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">
707 <mads:languageOfCataloging>
708 <mads:languageTerm authority="iso639-2b" type="code">
709 <xsl:value-of select="."/>
711 </mads:languageOfCataloging>
714 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='e']">
715 <mads:descriptionStandard>
716 <xsl:value-of select="."/>
717 </mads:descriptionStandard>
720 <!-- ========== classification 2.03 ========== -->
722 <xsl:template match="marc:datafield[@tag=053]">
723 <mads:classification>
724 <xsl:call-template name="subfieldSelect">
725 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
726 <xsl:with-param name="delimeter">-</xsl:with-param>
728 </mads:classification>
731 <xsl:template match="marc:datafield[@tag=055]">
732 <mads:classification>
733 <xsl:call-template name="subfieldSelect">
734 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
735 <xsl:with-param name="delimeter">-</xsl:with-param>
737 </mads:classification>
740 <xsl:template match="marc:datafield[@tag=060]">
741 <mads:classification>
742 <xsl:call-template name="subfieldSelect">
743 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
744 <xsl:with-param name="delimeter">-</xsl:with-param>
746 </mads:classification>
748 <xsl:template match="marc:datafield[@tag=065]">
749 <mads:classification>
750 <xsl:attribute name="authority">
751 <xsl:value-of select="marc:subfield[@code='2']"/>
753 <xsl:call-template name="subfieldSelect">
754 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
755 <xsl:with-param name="delimeter">-</xsl:with-param>
757 </mads:classification>
759 <xsl:template match="marc:datafield[@tag=070]">
760 <mads:classification>
761 <xsl:call-template name="subfieldSelect">
762 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
763 <xsl:with-param name="delimeter">-</xsl:with-param>
765 </mads:classification>
767 <xsl:template match="marc:datafield[@tag=080]">
768 <mads:classification>
769 <xsl:attribute name="authority">
770 <xsl:value-of select="marc:subfield[@code='2']"/>
772 <xsl:call-template name="subfieldSelect">
773 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
774 <xsl:with-param name="delimeter">-</xsl:with-param>
776 </mads:classification>
778 <xsl:template match="marc:datafield[@tag=082]">
779 <mads:classification>
780 <xsl:attribute name="authority">
781 <xsl:value-of select="marc:subfield[@code='2']"/>
783 <xsl:call-template name="subfieldSelect">
784 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
785 <xsl:with-param name="delimeter">-</xsl:with-param>
787 </mads:classification>
789 <xsl:template match="marc:datafield[@tag=083]">
790 <mads:classification>
791 <xsl:attribute name="authority">
792 <xsl:value-of select="marc:subfield[@code='2']"/>
794 <xsl:call-template name="subfieldSelect">
795 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
796 <xsl:with-param name="delimeter">-</xsl:with-param>
798 </mads:classification>
800 <xsl:template match="marc:datafield[@tag=086]">
801 <mads:classification>
802 <xsl:attribute name="authority">
803 <xsl:value-of select="marc:subfield[@code='2']"/>
805 <xsl:call-template name="subfieldSelect">
806 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
807 <xsl:with-param name="delimeter">-</xsl:with-param>
809 </mads:classification>
811 <xsl:template match="marc:datafield[@tag=087]">
812 <mads:classification>
813 <xsl:attribute name="authority">
814 <xsl:value-of select="marc:subfield[@code='2']"/>
816 <xsl:call-template name="subfieldSelect">
817 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
818 <xsl:with-param name="delimeter">-</xsl:with-param>
820 </mads:classification>
824 <!-- ========== names ========== -->
825 <xsl:template match="marc:datafield[@tag=100]">
826 <mads:name type="personal">
827 <xsl:call-template name="setAuthority"/>
828 <xsl:call-template name="nameABCDQ"/>
830 <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>
831 <xsl:call-template name="title"/>
832 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
835 <xsl:template match="marc:datafield[@tag=110]">
836 <mads:name type="corporate">
837 <xsl:call-template name="setAuthority"/>
838 <xsl:call-template name="nameABCDN"/>
840 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
843 <xsl:template match="marc:datafield[@tag=111]">
844 <mads:name type="conference">
845 <xsl:call-template name="setAuthority"/>
846 <xsl:call-template name="nameACDENQ"/>
848 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
851 <xsl:template match="marc:datafield[@tag=400]">
853 <xsl:call-template name="variantTypeAttribute"/>
854 <mads:name type="personal">
855 <xsl:call-template name="nameABCDQ"/>
857 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
858 <xsl:call-template name="title"/>
862 <xsl:template match="marc:datafield[@tag=410]">
864 <xsl:call-template name="variantTypeAttribute"/>
865 <mads:name type="corporate">
866 <xsl:call-template name="nameABCDN"/>
868 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
872 <xsl:template match="marc:datafield[@tag=411]">
874 <xsl:call-template name="variantTypeAttribute"/>
875 <mads:name type="conference">
876 <xsl:call-template name="nameACDENQ"/>
878 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
882 <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">
884 <xsl:call-template name="relatedTypeAttribute"/>
885 <!-- <xsl:call-template name="uri"/> -->
886 <mads:name type="personal">
887 <xsl:call-template name="setAuthority"/>
888 <xsl:call-template name="nameABCDQ"/>
890 <xsl:call-template name="title"/>
891 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
895 <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">
897 <xsl:call-template name="relatedTypeAttribute"/>
898 <!-- <xsl:call-template name="uri"/> -->
899 <mads:name type="corporate">
900 <xsl:call-template name="setAuthority"/>
901 <xsl:call-template name="nameABCDN"/>
903 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
907 <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">
909 <xsl:call-template name="relatedTypeAttribute"/>
910 <!-- <xsl:call-template name="uri"/> -->
911 <mads:name type="conference">
912 <xsl:call-template name="setAuthority"/>
913 <xsl:call-template name="nameACDENQ"/>
915 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
919 <!-- ========== titles ========== -->
920 <xsl:template match="marc:datafield[@tag=130]">
921 <xsl:call-template name="uniform-title"/>
922 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
925 <xsl:template match="marc:datafield[@tag=430]">
927 <xsl:call-template name="variantTypeAttribute"/>
928 <xsl:call-template name="uniform-title"/>
929 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
933 <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">
935 <xsl:call-template name="relatedTypeAttribute"/>
936 <xsl:call-template name="uniform-title"/>
937 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
941 <xsl:template name="title">
942 <xsl:variable name="hasTitle">
943 <xsl:for-each select="marc:subfield">
944 <xsl:if test="(contains('tfghklmors',@code) )">
945 <xsl:value-of select="@code"/>
949 <xsl:if test="string-length($hasTitle) > 0 ">
951 <xsl:call-template name="setAuthority"/>
953 <xsl:variable name="str">
954 <xsl:for-each select="marc:subfield">
955 <xsl:if test="(contains('atfghklmors',@code) )">
956 <xsl:value-of select="text()"/>
957 <xsl:text> </xsl:text>
961 <xsl:call-template name="chopPunctuation">
962 <xsl:with-param name="chopString">
963 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
967 <xsl:call-template name="part"/>
968 <!-- <xsl:call-template name="uri"/> -->
973 <xsl:template name="uniform-title">
974 <xsl:variable name="hasTitle">
975 <xsl:for-each select="marc:subfield">
976 <xsl:if test="(contains('atfghklmors',@code) )">
977 <xsl:value-of select="@code"/>
981 <xsl:if test="string-length($hasTitle) > 0 ">
983 <xsl:call-template name="setAuthority"/>
985 <xsl:variable name="str">
986 <xsl:for-each select="marc:subfield">
987 <xsl:if test="(contains('adfghklmors',@code) )">
988 <xsl:value-of select="text()"/>
989 <xsl:text> </xsl:text>
993 <xsl:call-template name="chopPunctuation">
994 <xsl:with-param name="chopString">
995 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
999 <xsl:call-template name="part"/>
1000 <!-- <xsl:call-template name="uri"/> -->
1006 <!-- ========== topics ========== -->
1007 <xsl:template match="marc:subfield[@code='x']">
1009 <xsl:call-template name="chopPunctuation">
1010 <xsl:with-param name="chopString">
1011 <xsl:value-of select="."/>
1013 </xsl:call-template>
1019 match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">
1020 <xsl:call-template name="topic"/>
1021 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1024 match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">
1026 <xsl:call-template name="variantTypeAttribute"/>
1027 <xsl:call-template name="topic"/>
1031 match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">
1033 <xsl:call-template name="relatedTypeAttribute"/>
1034 <!-- <xsl:call-template name="uri"/> -->
1035 <xsl:call-template name="topic"/>
1036 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1039 <xsl:template name="topic">
1041 <xsl:call-template name="setAuthority"/>
1042 <!-- tmee2006 dedupe 550a
1043 <xsl:if test="@tag=550 or @tag=750">
1044 <xsl:call-template name="subfieldSelect">
1045 <xsl:with-param name="codes">ab</xsl:with-param>
1046 </xsl:call-template>
1050 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1051 <xsl:call-template name="chopPunctuation">
1052 <xsl:with-param name="chopString">
1053 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1055 </xsl:call-template>
1058 <xsl:call-template name="chopPunctuation">
1059 <xsl:with-param name="chopString">
1061 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1062 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1065 <xsl:call-template name="subfieldSelect">
1066 <xsl:with-param name="codes">ab</xsl:with-param>
1067 </xsl:call-template>
1071 </xsl:call-template>
1075 <!-- ========= temporals ========== -->
1076 <xsl:template match="marc:subfield[@code='y']">
1078 <xsl:call-template name="chopPunctuation">
1079 <xsl:with-param name="chopString">
1080 <xsl:value-of select="."/>
1082 </xsl:call-template>
1086 match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">
1087 <xsl:call-template name="temporal"/>
1090 match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">
1092 <xsl:call-template name="variantTypeAttribute"/>
1093 <xsl:call-template name="temporal"/>
1097 match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">
1099 <xsl:call-template name="relatedTypeAttribute"/>
1100 <!-- <xsl:call-template name="uri"/> -->
1101 <xsl:call-template name="temporal"/>
1104 <xsl:template name="temporal">
1106 <xsl:call-template name="setAuthority"/>
1107 <xsl:if test="@tag=548 or @tag=748">
1108 <xsl:value-of select="marc:subfield[@code='a']"/>
1110 <xsl:call-template name="chopPunctuation">
1111 <xsl:with-param name="chopString">
1113 <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">
1114 <xsl:apply-templates select="marc:subfield[@code='y']"/>
1117 <xsl:value-of select="marc:subfield[@code='a']"/>
1121 </xsl:call-template>
1123 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1126 <!-- ========== genre ========== -->
1127 <xsl:template match="marc:subfield[@code='v']">
1129 <xsl:call-template name="chopPunctuation">
1130 <xsl:with-param name="chopString">
1131 <xsl:value-of select="."/>
1133 </xsl:call-template>
1137 match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">
1138 <xsl:call-template name="genre"/>
1141 match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">
1143 <xsl:call-template name="variantTypeAttribute"/>
1144 <xsl:call-template name="genre"/>
1148 <xsl:template match="marc:datafield[@tag=555]">
1150 <xsl:call-template name="relatedTypeAttribute"/>
1151 <xsl:call-template name="uri"/>
1152 <xsl:call-template name="genre"/>
1157 match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">
1159 <xsl:call-template name="relatedTypeAttribute"/>
1160 <xsl:call-template name="genre"/>
1163 <xsl:template name="genre">
1165 <xsl:if test="@tag=555">
1166 <xsl:value-of select="marc:subfield[@code='a']"/>
1168 <xsl:call-template name="setAuthority"/>
1169 <xsl:call-template name="chopPunctuation">
1170 <xsl:with-param name="chopString">
1173 <xsl:when test="@tag='555'"/>
1174 <xsl:when test="@tag=185 or @tag=485 or @tag=585">
1175 <xsl:apply-templates select="marc:subfield[@code='v']"/>
1178 <xsl:value-of select="marc:subfield[@code='a']"/>
1182 </xsl:call-template>
1184 <xsl:apply-templates/>
1187 <!-- ========= geographic ========== -->
1188 <xsl:template match="marc:subfield[@code='z']">
1190 <xsl:call-template name="chopPunctuation">
1191 <xsl:with-param name="chopString">
1192 <xsl:value-of select="."/>
1194 </xsl:call-template>
1197 <xsl:template name="geographic">
1200 <xsl:call-template name="setAuthority"/>
1202 <xsl:if test="@tag=151 or @tag=551">
1203 <xsl:value-of select="marc:subfield[@code='a']"/>
1205 <xsl:call-template name="chopPunctuation">
1206 <xsl:with-param name="chopString">
1207 <xsl:if test="@tag=181 or @tag=481 or @tag=581">
1208 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1212 <xsl:when test="@tag=181 or @tag=481 or @tag=581">
1213 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1217 <xsl:value-of select="marc:subfield[@code='a']"/>
1222 </xsl:call-template>
1224 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1227 match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">
1228 <xsl:call-template name="geographic"/>
1231 match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">
1233 <xsl:call-template name="variantTypeAttribute"/>
1234 <xsl:call-template name="geographic"/>
1238 match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">
1240 <xsl:call-template name="relatedTypeAttribute"/>
1241 <!-- <xsl:call-template name="uri"/> -->
1242 <xsl:call-template name="geographic"/>
1245 <xsl:template match="marc:datafield[@tag=580]">
1247 <xsl:call-template name="relatedTypeAttribute"/>
1248 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1252 match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">
1254 <xsl:call-template name="relatedTypeAttribute"/>
1255 <xsl:call-template name="geographic"/>
1258 <xsl:template match="marc:datafield[@tag=755]">
1260 <xsl:call-template name="relatedTypeAttribute"/>
1261 <xsl:call-template name="genre"/>
1262 <xsl:call-template name="setAuthority"/>
1263 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1266 <xsl:template match="marc:datafield[@tag=780]">
1268 <xsl:call-template name="relatedTypeAttribute"/>
1269 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1272 <xsl:template match="marc:datafield[@tag=785]">
1274 <xsl:call-template name="relatedTypeAttribute"/>
1275 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1279 <!-- ========== notes ========== -->
1280 <xsl:template match="marc:datafield[667 <= @tag and @tag <= 688]">
1283 <xsl:when test="@tag=667">
1284 <xsl:attribute name="type">nonpublic</xsl:attribute>
1286 <xsl:when test="@tag=670">
1287 <xsl:attribute name="type">source</xsl:attribute>
1289 <xsl:when test="@tag=675">
1290 <xsl:attribute name="type">notFound</xsl:attribute>
1292 <xsl:when test="@tag=678">
1293 <xsl:attribute name="type">history</xsl:attribute>
1295 <xsl:when test="@tag=681">
1296 <xsl:attribute name="type">subject example</xsl:attribute>
1298 <xsl:when test="@tag=682">
1299 <xsl:attribute name="type">deleted heading information</xsl:attribute>
1301 <xsl:when test="@tag=688">
1302 <xsl:attribute name="type">application history</xsl:attribute>
1305 <xsl:call-template name="chopPunctuation">
1306 <xsl:with-param name="chopString">
1308 <xsl:when test="@tag=667 or @tag=675">
1309 <xsl:value-of select="marc:subfield[@code='a']"/>
1311 <xsl:when test="@tag=670 or @tag=678">
1312 <xsl:call-template name="subfieldSelect">
1313 <xsl:with-param name="codes">ab</xsl:with-param>
1314 </xsl:call-template>
1316 <xsl:when test="680 <= @tag and @tag <=688">
1317 <xsl:call-template name="subfieldSelect">
1318 <xsl:with-param name="codes">ai</xsl:with-param>
1319 </xsl:call-template>
1323 </xsl:call-template>
1327 <!-- ========== url ========== -->
1328 <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">
1330 <xsl:if test="marc:subfield[@code='z' or @code='3']">
1331 <xsl:attribute name="displayLabel">
1332 <xsl:call-template name="subfieldSelect">
1333 <xsl:with-param name="codes">z3</xsl:with-param>
1334 </xsl:call-template>
1337 <xsl:value-of select="marc:subfield[@code='u']"/>
1341 <xsl:template name="relatedTypeAttribute">
1344 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">
1345 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">
1346 <xsl:attribute name="type">earlier</xsl:attribute>
1348 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">
1349 <xsl:attribute name="type">later</xsl:attribute>
1351 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">
1352 <xsl:attribute name="type">parentOrg</xsl:attribute>
1354 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">
1355 <xsl:attribute name="type">broader</xsl:attribute>
1357 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">
1358 <xsl:attribute name="type">narrower</xsl:attribute>
1360 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='r'">
1361 <xsl:attribute name="type">other</xsl:attribute>
1363 <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">
1364 <xsl:attribute name="type">other</xsl:attribute>
1367 <xsl:when test="@tag=530 or @tag=730">
1368 <xsl:attribute name="type">other</xsl:attribute>
1372 <xsl:attribute name="type">equivalent</xsl:attribute>
1375 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1380 <xsl:template name="variantTypeAttribute">
1383 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">
1384 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">
1385 <xsl:attribute name="type">acronym</xsl:attribute>
1387 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='n'">
1388 <xsl:attribute name="type">other</xsl:attribute>
1390 <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">
1391 <xsl:attribute name="type">other</xsl:attribute>
1396 <xsl:attribute name="type">other</xsl:attribute>
1399 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1402 <xsl:template name="setAuthority">
1404 <!-- can be called from the datafield or subfield level, so "..//@tag" means
1405 the tag can be at the subfield's parent level or at the datafields own level -->
1408 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">
1409 <xsl:attribute name="authority">
1410 <xsl:text>naf</xsl:text>
1414 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">
1415 <xsl:attribute name="authority">
1416 <xsl:text>lcsh</xsl:text>
1420 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">
1421 <xsl:attribute name="authority">
1422 <xsl:text>lacnaf</xsl:text>
1426 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">
1427 <xsl:attribute name="authority">
1428 <xsl:text>lcsh</xsl:text>
1432 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">
1433 <xsl:attribute name="authority">cash</xsl:attribute>
1436 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">
1437 <xsl:attribute name="authority">naf</xsl:attribute>
1440 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">
1441 <xsl:attribute name="authority">lcsh</xsl:attribute>
1444 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">
1445 <xsl:attribute name="authority">
1446 <xsl:text>lacnaf</xsl:text>
1450 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">
1451 <xsl:attribute name="authority">
1452 <xsl:text>cash</xsl:text>
1456 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='b'">
1457 <xsl:attribute name="authority">
1458 <xsl:text>lcshcl</xsl:text>
1462 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'">
1463 <xsl:attribute name="authority">
1464 <xsl:text>nlmnaf</xsl:text>
1468 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'">
1469 <xsl:attribute name="authority">
1470 <xsl:text>nalnaf</xsl:text>
1474 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='r'">
1475 <xsl:attribute name="authority">
1476 <xsl:text>aat</xsl:text>
1480 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='s'">
1481 <xsl:attribute name="authority">sears</xsl:attribute>
1484 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='v'">
1485 <xsl:attribute name="authority">rvm</xsl:attribute>
1488 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='z'">
1489 <xsl:attribute name="authority">
1491 select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"
1496 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='a'">
1497 <xsl:attribute name="authority">
1498 <xsl:text>naf</xsl:text>
1502 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='b'">
1503 <xsl:attribute name="authority">
1504 <xsl:text>lcsh</xsl:text>
1508 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">
1509 <xsl:attribute name="authority">
1510 <xsl:text>lacnaf</xsl:text>
1514 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' ">
1515 <xsl:attribute name="authority">
1516 <xsl:text>lcsh</xsl:text>
1520 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' ">
1521 <xsl:attribute name="authority">
1522 <xsl:text>lcsh</xsl:text>
1526 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' ">
1527 <xsl:attribute name="authority">
1528 <xsl:text>mesh</xsl:text>
1532 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' ">
1533 <xsl:attribute name="authority">
1534 <xsl:text>nal</xsl:text>
1538 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' ">
1539 <xsl:attribute name="authority">
1540 <xsl:text>cash</xsl:text>
1544 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">
1545 <xsl:attribute name="authority">
1546 <xsl:text>naf</xsl:text>
1550 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">
1551 <xsl:attribute name="authority">lcsh</xsl:attribute>
1554 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">
1555 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1558 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">
1559 <xsl:attribute name="authority">cash</xsl:attribute>
1562 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'">
1563 <xsl:attribute name="authority">lcsh</xsl:attribute>
1566 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">
1567 <xsl:attribute name="authority">naf</xsl:attribute>
1570 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">
1571 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1573 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">
1574 <xsl:attribute name="authority">lcsh</xsl:attribute>
1576 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">
1577 <xsl:attribute name="authority">cash</xsl:attribute>
1580 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='1'">
1581 <xsl:attribute name="authority">lcshcl</xsl:attribute>
1584 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'">
1585 <xsl:attribute name="authority">nlmnaf</xsl:attribute>
1588 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'">
1589 <xsl:attribute name="authority">nalnaf</xsl:attribute>
1592 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='6'">
1593 <xsl:attribute name="authority">rvm</xsl:attribute>
1596 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='7'">
1597 <xsl:attribute name="authority">
1598 <xsl:value-of select="marc:subfield[@code='2']"/>
1602 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'">
1603 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1606 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'">
1607 <xsl:attribute name="authority">naf</xsl:attribute>
1610 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'">
1611 <xsl:attribute name="authority">lcsh</xsl:attribute>
1614 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'">
1615 <xsl:attribute name="authority">mesh</xsl:attribute>
1618 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'">
1619 <xsl:attribute name="authority">nal</xsl:attribute>
1622 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'">
1623 <xsl:attribute name="authority">cash</xsl:attribute>
1627 <xsl:template match="*"/>
1628 </xsl:stylesheet>$XSLT$);