1 UPDATE config.xml_transform SET xslt=$XSLT$<?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:mads="http://www.loc.gov/mads/v2"
3 xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:marc="http://www.loc.gov/MARC21/slim"
4 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
5 <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
6 <xsl:strip-space elements="*"/>
8 <xsl:variable name="ascii">
9 <xsl:text> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</xsl:text>
12 <xsl:variable name="latin1">
13 <xsl:text> ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ</xsl:text>
15 <!-- Characters that usually don't need to be escaped -->
16 <xsl:variable name="safe">
17 <xsl:text>!'()*-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~</xsl:text>
20 <xsl:variable name="hex">0123456789ABCDEF</xsl:variable>
23 <xsl:template name="datafield">
24 <xsl:param name="tag"/>
25 <xsl:param name="ind1">
26 <xsl:text> </xsl:text>
28 <xsl:param name="ind2">
29 <xsl:text> </xsl:text>
31 <xsl:param name="subfields"/>
32 <xsl:element name="marc:datafield">
33 <xsl:attribute name="tag">
34 <xsl:value-of select="$tag"/>
36 <xsl:attribute name="ind1">
37 <xsl:value-of select="$ind1"/>
39 <xsl:attribute name="ind2">
40 <xsl:value-of select="$ind2"/>
42 <xsl:copy-of select="$subfields"/>
46 <xsl:template name="subfieldSelect">
47 <xsl:param name="codes">abcdefghijklmnopqrstuvwxyz</xsl:param>
48 <xsl:param name="delimeter">
49 <xsl:text> </xsl:text>
51 <xsl:variable name="str">
52 <xsl:for-each select="marc:subfield">
53 <xsl:if test="contains($codes, @code)">
54 <xsl:value-of select="text()"/>
55 <xsl:value-of select="$delimeter"/>
59 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
62 <xsl:template name="buildSpaces">
63 <xsl:param name="spaces"/>
64 <xsl:param name="char">
65 <xsl:text> </xsl:text>
67 <xsl:if test="$spaces>0">
68 <xsl:value-of select="$char"/>
69 <xsl:call-template name="buildSpaces">
70 <xsl:with-param name="spaces" select="$spaces - 1"/>
71 <xsl:with-param name="char" select="$char"/>
76 <xsl:template name="chopPunctuation">
77 <xsl:param name="chopString"/>
78 <xsl:param name="punctuation">
79 <xsl:text>.:,;/ </xsl:text>
81 <xsl:variable name="length" select="string-length($chopString)"/>
83 <xsl:when test="$length=0"/>
84 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
85 <xsl:call-template name="chopPunctuation">
86 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
87 <xsl:with-param name="punctuation" select="$punctuation"/>
90 <xsl:when test="not($chopString)"/>
92 <xsl:value-of select="$chopString"/>
97 <xsl:template name="chopPunctuationFront">
98 <xsl:param name="chopString"/>
99 <xsl:variable name="length" select="string-length($chopString)"/>
101 <xsl:when test="$length=0"/>
102 <xsl:when test="contains('.:,;/[ ', substring($chopString,1,1))">
103 <xsl:call-template name="chopPunctuationFront">
104 <xsl:with-param name="chopString" select="substring($chopString,2,$length - 1)"
108 <xsl:when test="not($chopString)"/>
110 <xsl:value-of select="$chopString"/>
115 <xsl:template name="chopPunctuationBack">
116 <xsl:param name="chopString"/>
117 <xsl:param name="punctuation">
118 <xsl:text>.:,;/] </xsl:text>
120 <xsl:variable name="length" select="string-length($chopString)"/>
122 <xsl:when test="$length=0"/>
123 <xsl:when test="contains($punctuation, substring($chopString,$length,1))">
124 <xsl:call-template name="chopPunctuation">
125 <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
126 <xsl:with-param name="punctuation" select="$punctuation"/>
129 <xsl:when test="not($chopString)"/>
131 <xsl:value-of select="$chopString"/>
136 <!-- nate added 12/14/2007 for lccn.loc.gov: url encode ampersand, etc. -->
137 <xsl:template name="url-encode">
139 <xsl:param name="str"/>
142 <xsl:variable name="first-char" select="substring($str,1,1)"/>
144 <xsl:when test="contains($safe,$first-char)">
145 <xsl:value-of select="$first-char"/>
148 <xsl:variable name="codepoint">
150 <xsl:when test="contains($ascii,$first-char)">
152 select="string-length(substring-before($ascii,$first-char)) + 32"
155 <xsl:when test="contains($latin1,$first-char)">
157 select="string-length(substring-before($latin1,$first-char)) + 160"/>
161 <xsl:message terminate="no">Warning: string contains a character
162 that is out of range! Substituting "?".</xsl:message>
163 <xsl:text>63</xsl:text>
167 <xsl:variable name="hex-digit1"
168 select="substring($hex,floor($codepoint div 16) + 1,1)"/>
169 <xsl:variable name="hex-digit2" select="substring($hex,$codepoint mod 16 + 1,1)"/>
170 <!-- <xsl:value-of select="concat('%',$hex-digit2)"/> -->
171 <xsl:value-of select="concat('%',$hex-digit1,$hex-digit2)"/>
174 <xsl:if test="string-length($str) > 1">
175 <xsl:call-template name="url-encode">
176 <xsl:with-param name="str" select="substring($str,2)"/>
184 2.15 reversed genre and setAuthority template order under relatedTypeAttribute tmee 11/13/2018
185 2.14 Fixed bug in mads:geographic attributes syntax ws 05/04/2016
186 2.13 fixed repeating <geographic> tmee 01/31/2014
187 2.12 added $2 authority for <classification> tmee 09/18/2012
188 2.11 added delimiters between <classification> subfields tmee 09/18/2012
189 2.10 fixed type="other" and type="otherType" for mads:related tmee 09/16/2011
190 2.09 fixed professionTerm and genreTerm empty tag error tmee 09/16/2011
191 2.08 fixed marc:subfield @code='i' matching error tmee 09/16/2011
192 2.07 fixed 555 duplication error tmee 08/10/2011
193 2.06 fixed topic subfield error tmee 08/10/2011
194 2.05 fixed title subfield error tmee 06/20/2011
195 2.04 fixed geographicSubdivision mapping for authority element tmee 06/16/2011
196 2.03 added classification for 053, 055, 060, 065, 070, 080, 082, 083, 086, 087 tmee 06/03/2011
197 2.02 added descriptionStandard for 008/10 tmee 04/27/2011
198 2.01 added extensions for 046, 336, 370, 374, 375, 376 tmee 04/08/2011
199 2.00 redefined imported MODS elements in version 1.0 to MADS elements in version 2.0 tmee 02/08/2011
200 1.08 added 372 subfields $a $s $t for <fieldOfActivity> tmee 06/24/2010
201 1.07 removed role/roleTerm 100, 110, 111, 400, 410, 411, 500, 510, 511, 700, 710, 711 tmee 06/24/2010
202 1.06 added strip-space tmee 06/24/2010
203 1.05 added subfield $a for 130, 430, 530 tmee 06/21/2010
204 1.04 fixed 550 z omission ntra 08/11/2008
205 1.03 removed duplication of 550 $a text tmee 11/01/2006
206 1.02 fixed namespace references between mads and mods ntra 10/06/2006
207 1.01 revised rgue/jrad 11/29/05
208 1.00 adapted from MARC21Slim2MODS3.xsl ntra 07/06/05
211 <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->
212 <xsl:param name="authority"/>
213 <xsl:variable name="auth">
215 <xsl:when test="$authority">
216 <xsl:value-of select="$authority"/>
218 <xsl:otherwise>naf</xsl:otherwise>
221 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
222 <xsl:variable name="controlField008-06"
223 select="substring(descendant-or-self::marc:controlfield[@tag=008],7,1)"/>
224 <xsl:variable name="controlField008-11"
225 select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>
226 <xsl:variable name="controlField008-14"
227 select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>
228 <xsl:template match="/">
230 <xsl:when test="descendant-or-self::marc:collection">
231 <mads:madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
232 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/v2/mads-2-0.xsd">
233 <xsl:for-each select="descendant-or-self::marc:collection/marc:record">
234 <mads:mads version="2.0">
235 <xsl:call-template name="marcRecord"/>
238 </mads:madsCollection>
241 <mads:mads version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
242 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/mads-2-0.xsd">
243 <xsl:for-each select="descendant-or-self::marc:record">
244 <xsl:call-template name="marcRecord"/>
251 <xsl:template name="marcRecord">
255 <xsl:when test="$controlField008-06='d'">
256 <xsl:attribute name="geographicSubdivision">
257 <xsl:text>direct</xsl:text>
260 <xsl:when test="$controlField008-06='i'">
261 <xsl:attribute name="geographicSubdivision">
262 <xsl:text>indirect</xsl:text>
265 <xsl:when test="$controlField008-06='n'">
266 <xsl:attribute name="geographicSubdivision">
267 <xsl:text>not applicable</xsl:text>
272 <xsl:apply-templates select="marc:datafield[100 <= @tag and @tag < 200]"/>
277 select="marc:datafield[500 <= @tag and @tag <= 585]|marc:datafield[700 <= @tag and @tag <= 785]"/>
280 <xsl:apply-templates select="marc:datafield[400 <= @tag and @tag <= 485]"/>
283 <xsl:apply-templates select="marc:datafield[667 <= @tag and @tag <= 688]"/>
286 <xsl:apply-templates select="marc:datafield[@tag=856]"/>
287 <xsl:apply-templates select="marc:datafield[@tag=010]"/>
288 <xsl:apply-templates select="marc:datafield[@tag=024]"/>
289 <xsl:apply-templates select="marc:datafield[@tag=372]"/>
291 <!-- classification -->
292 <xsl:apply-templates select="marc:datafield[@tag=053]"/>
293 <xsl:apply-templates select="marc:datafield[@tag=055]"/>
294 <xsl:apply-templates select="marc:datafield[@tag=060]"/>
295 <xsl:apply-templates select="marc:datafield[@tag=065]"/>
296 <xsl:apply-templates select="marc:datafield[@tag=070]"/>
297 <xsl:apply-templates select="marc:datafield[@tag=080]"/>
298 <xsl:apply-templates select="marc:datafield[@tag=082]"/>
299 <xsl:apply-templates select="marc:datafield[@tag=083]"/>
300 <xsl:apply-templates select="marc:datafield[@tag=086]"/>
301 <xsl:apply-templates select="marc:datafield[@tag=087]"/>
304 <xsl:for-each select="marc:datafield[@tag=373]">
307 <xsl:value-of select="marc:subfield[@code='a']"/>
309 <mads:dateValid point="start">
310 <xsl:value-of select="marc:subfield[@code='s']"/>
312 <mads:dateValid point="end">
313 <xsl:value-of select="marc:subfield[@code='t']"/>
317 <xsl:for-each select="marc:datafield[@tag=371]">
321 <xsl:value-of select="marc:subfield[@code='a']"/>
324 <xsl:value-of select="marc:subfield[@code='b']"/>
327 <xsl:value-of select="marc:subfield[@code='c']"/>
330 <xsl:value-of select="marc:subfield[@code='d']"/>
333 <xsl:value-of select="marc:subfield[@code='e']"/>
337 <xsl:value-of select="marc:subfield[@code='m']"/>
343 <xsl:for-each select="marc:datafield[@tag=336]">
346 <mads:contentType type="text">
347 <xsl:value-of select="marc:subfield[@code='a']"/>
349 <mads:contentType type="code">
350 <xsl:value-of select="marc:subfield[@code='b']"/>
356 <xsl:for-each select="marc:datafield[@tag=374]">
360 <xsl:when test="marc:subfield[@code='a']">
361 <mads:professionTerm>
362 <xsl:value-of select="marc:subfield[@code='a']"/>
363 </mads:professionTerm>
365 <xsl:when test="marc:subfield[@code='s']">
366 <mads:dateValid point="start">
367 <xsl:value-of select="marc:subfield[@code='s']"/>
370 <xsl:when test="marc:subfield[@code='t']">
371 <mads:dateValid point="end">
372 <xsl:value-of select="marc:subfield[@code='t']"/>
380 <xsl:for-each select="marc:datafield[@tag=375]">
384 <xsl:when test="marc:subfield[@code='a']">
386 <xsl:value-of select="marc:subfield[@code='a']"/>
389 <xsl:when test="marc:subfield[@code='s']">
390 <mads:dateValid point="start">
391 <xsl:value-of select="marc:subfield[@code='s']"/>
394 <xsl:when test="marc:subfield[@code='t']">
395 <mads:dateValid point="end">
396 <xsl:value-of select="marc:subfield[@code='t']"/>
404 <xsl:for-each select="marc:datafield[@tag=376]">
406 <mads:familyInformation>
408 <xsl:value-of select="marc:subfield[@code='a']"/>
410 <mads:nameOfProminentMember>
411 <xsl:value-of select="marc:subfield[@code='b']"/>
412 </mads:nameOfProminentMember>
413 <mads:hereditaryTitle>
414 <xsl:value-of select="marc:subfield[@code='c']"/>
415 </mads:hereditaryTitle>
416 <mads:dateValid point="start">
417 <xsl:value-of select="marc:subfield[@code='s']"/>
419 <mads:dateValid point="end">
420 <xsl:value-of select="marc:subfield[@code='t']"/>
422 </mads:familyInformation>
427 <mads:recordOrigin>Converted from MARCXML to MADS version 2.0 (Revision 2.13)</mads:recordOrigin>
428 <!-- <xsl:apply-templates select="marc:datafield[@tag=024]"/> -->
430 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>
431 <xsl:apply-templates select="marc:controlfield[@tag=005]"/>
432 <xsl:apply-templates select="marc:controlfield[@tag=001]"/>
433 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>
434 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='e']"/>
435 <xsl:for-each select="marc:controlfield[@tag=008]">
436 <xsl:if test="substring(.,11,1)='a'">
437 <mads:descriptionStandard>
438 <xsl:text>earlier rules</xsl:text>
439 </mads:descriptionStandard>
441 <xsl:if test="substring(.,11,1)='b'">
442 <mads:descriptionStandard>
443 <xsl:text>aacr1</xsl:text>
444 </mads:descriptionStandard>
446 <xsl:if test="substring(.,11,1)='c'">
447 <mads:descriptionStandard>
448 <xsl:text>aacr2</xsl:text>
449 </mads:descriptionStandard>
451 <xsl:if test="substring(.,11,1)='d'">
452 <mads:descriptionStandard>
453 <xsl:text>aacr2 compatible</xsl:text>
454 </mads:descriptionStandard>
456 <xsl:if test="substring(.,11,1)='z'">
457 <mads:descriptionStandard>
458 <xsl:text>other rules</xsl:text>
459 </mads:descriptionStandard>
465 <!-- start of secondary templates -->
467 <!-- ======== xlink ======== -->
469 <!-- <xsl:template name="uri">
470 <xsl:for-each select="marc:subfield[@code='0']">
471 <xsl:attribute name="xlink:href">
472 <xsl:value-of select="."/>
477 <xsl:template match="marc:subfield[@code='i']">
478 <xsl:attribute name="otherType">
479 <xsl:value-of select="."/>
483 <!-- No role/roleTerm mapped in MADS 06/24/2010
484 <xsl:template name="role">
485 <xsl:for-each select="marc:subfield[@code='e']">
487 <mads:roleTerm type="text">
488 <xsl:value-of select="."/>
495 <xsl:template name="part">
496 <xsl:variable name="partNumber">
497 <xsl:call-template name="specialSubfieldSelect">
498 <xsl:with-param name="axis">n</xsl:with-param>
499 <xsl:with-param name="anyCodes">n</xsl:with-param>
500 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
503 <xsl:variable name="partName">
504 <xsl:call-template name="specialSubfieldSelect">
505 <xsl:with-param name="axis">p</xsl:with-param>
506 <xsl:with-param name="anyCodes">p</xsl:with-param>
507 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
510 <xsl:if test="string-length(normalize-space($partNumber))">
512 <xsl:call-template name="chopPunctuation">
513 <xsl:with-param name="chopString" select="$partNumber"/>
517 <xsl:if test="string-length(normalize-space($partName))">
519 <xsl:call-template name="chopPunctuation">
520 <xsl:with-param name="chopString" select="$partName"/>
526 <xsl:template name="nameABCDN">
527 <xsl:for-each select="marc:subfield[@code='a']">
529 <xsl:call-template name="chopPunctuation">
530 <xsl:with-param name="chopString" select="."/>
534 <xsl:for-each select="marc:subfield[@code='b']">
536 <xsl:value-of select="."/>
540 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
542 <xsl:call-template name="subfieldSelect">
543 <xsl:with-param name="codes">cdn</xsl:with-param>
549 <xsl:template name="nameABCDQ">
551 <xsl:call-template name="chopPunctuation">
552 <xsl:with-param name="chopString">
553 <xsl:call-template name="subfieldSelect">
554 <xsl:with-param name="codes">aq</xsl:with-param>
559 <xsl:call-template name="termsOfAddress"/>
560 <xsl:call-template name="nameDate"/>
563 <xsl:template name="nameACDENQ">
565 <xsl:call-template name="subfieldSelect">
566 <xsl:with-param name="codes">acdenq</xsl:with-param>
571 <xsl:template name="nameDate">
572 <xsl:for-each select="marc:subfield[@code='d']">
573 <mads:namePart type="date">
574 <xsl:call-template name="chopPunctuation">
575 <xsl:with-param name="chopString" select="."/>
581 <xsl:template name="specialSubfieldSelect">
582 <xsl:param name="anyCodes"/>
583 <xsl:param name="axis"/>
584 <xsl:param name="beforeCodes"/>
585 <xsl:param name="afterCodes"/>
586 <xsl:variable name="str">
587 <xsl:for-each select="marc:subfield">
589 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])">
590 <xsl:value-of select="text()"/>
591 <xsl:text> </xsl:text>
595 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
598 <xsl:template name="termsOfAddress">
599 <xsl:if test="marc:subfield[@code='b' or @code='c']">
600 <mads:namePart type="termsOfAddress">
601 <xsl:call-template name="chopPunctuation">
602 <xsl:with-param name="chopString">
603 <xsl:call-template name="subfieldSelect">
604 <xsl:with-param name="codes">bc</xsl:with-param>
612 <xsl:template name="displayLabel">
613 <xsl:if test="marc:subfield[@code='z']">
614 <xsl:attribute name="displayLabel">
615 <xsl:value-of select="marc:subfield[@code='z']"/>
618 <xsl:if test="marc:subfield[@code='3']">
619 <xsl:attribute name="displayLabel">
620 <xsl:value-of select="marc:subfield[@code='3']"/>
625 <xsl:template name="isInvalid">
626 <xsl:if test="@code='z'">
627 <xsl:attribute name="invalid">yes</xsl:attribute>
631 <xsl:template name="sub2Attribute">
633 <xsl:if test="../marc:subfield[@code='2']">
634 <xsl:attribute name="type">
635 <xsl:value-of select="../marc:subfield[@code='2']"/>
640 <xsl:template match="marc:controlfield[@tag=001]">
641 <mads:recordIdentifier>
642 <xsl:if test="../marc:controlfield[@tag=003]">
643 <xsl:attribute name="source">
644 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
647 <xsl:value-of select="."/>
648 </mads:recordIdentifier>
651 <xsl:template match="marc:controlfield[@tag=005]">
652 <mads:recordChangeDate encoding="iso8601">
653 <xsl:value-of select="."/>
654 </mads:recordChangeDate>
657 <xsl:template match="marc:controlfield[@tag=008]">
658 <mads:recordCreationDate encoding="marc">
659 <xsl:value-of select="substring(.,1,6)"/>
660 </mads:recordCreationDate>
663 <xsl:template match="marc:datafield[@tag=010]">
664 <xsl:for-each select="marc:subfield">
665 <mads:identifier type="lccn">
666 <xsl:call-template name="isInvalid"/>
667 <xsl:value-of select="."/>
672 <xsl:template match="marc:datafield[@tag=024]">
673 <xsl:for-each select="marc:subfield[not(@code=2)]">
675 <xsl:call-template name="isInvalid"/>
676 <xsl:call-template name="sub2Attribute"/>
677 <xsl:value-of select="."/>
682 <!-- ========== 372 ========== -->
683 <xsl:template match="marc:datafield[@tag=372]">
684 <mads:fieldOfActivity>
685 <xsl:call-template name="subfieldSelect">
686 <xsl:with-param name="codes">a</xsl:with-param>
688 <xsl:text>-</xsl:text>
689 <xsl:call-template name="subfieldSelect">
690 <xsl:with-param name="codes">st</xsl:with-param>
692 </mads:fieldOfActivity>
696 <!-- ========== 040 ========== -->
697 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">
698 <mads:recordContentSource authority="marcorg">
699 <xsl:value-of select="."/>
700 </mads:recordContentSource>
703 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">
704 <mads:languageOfCataloging>
705 <mads:languageTerm authority="iso639-2b" type="code">
706 <xsl:value-of select="."/>
708 </mads:languageOfCataloging>
711 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='e']">
712 <mads:descriptionStandard>
713 <xsl:value-of select="."/>
714 </mads:descriptionStandard>
717 <!-- ========== classification 2.03 ========== -->
719 <xsl:template match="marc:datafield[@tag=053]">
720 <mads:classification>
721 <xsl:call-template name="subfieldSelect">
722 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
723 <xsl:with-param name="delimeter">-</xsl:with-param>
725 </mads:classification>
728 <xsl:template match="marc:datafield[@tag=055]">
729 <mads:classification>
730 <xsl:call-template name="subfieldSelect">
731 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
732 <xsl:with-param name="delimeter">-</xsl:with-param>
734 </mads:classification>
737 <xsl:template match="marc:datafield[@tag=060]">
738 <mads:classification>
739 <xsl:call-template name="subfieldSelect">
740 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
741 <xsl:with-param name="delimeter">-</xsl:with-param>
743 </mads:classification>
745 <xsl:template match="marc:datafield[@tag=065]">
746 <mads:classification>
747 <xsl:attribute name="authority">
748 <xsl:value-of select="marc:subfield[@code='2']"/>
750 <xsl:call-template name="subfieldSelect">
751 <xsl:with-param name="codes">abcdxyz</xsl:with-param>
752 <xsl:with-param name="delimeter">-</xsl:with-param>
754 </mads:classification>
756 <xsl:template match="marc:datafield[@tag=070]">
757 <mads:classification>
758 <xsl:call-template name="subfieldSelect">
759 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
760 <xsl:with-param name="delimeter">-</xsl:with-param>
762 </mads:classification>
764 <xsl:template match="marc:datafield[@tag=080]">
765 <mads:classification>
766 <xsl:attribute name="authority">
767 <xsl:value-of select="marc:subfield[@code='2']"/>
769 <xsl:call-template name="subfieldSelect">
770 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
771 <xsl:with-param name="delimeter">-</xsl:with-param>
773 </mads:classification>
775 <xsl:template match="marc:datafield[@tag=082]">
776 <mads:classification>
777 <xsl:attribute name="authority">
778 <xsl:value-of select="marc:subfield[@code='2']"/>
780 <xsl:call-template name="subfieldSelect">
781 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
782 <xsl:with-param name="delimeter">-</xsl:with-param>
784 </mads:classification>
786 <xsl:template match="marc:datafield[@tag=083]">
787 <mads:classification>
788 <xsl:attribute name="authority">
789 <xsl:value-of select="marc:subfield[@code='2']"/>
791 <xsl:call-template name="subfieldSelect">
792 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
793 <xsl:with-param name="delimeter">-</xsl:with-param>
795 </mads:classification>
797 <xsl:template match="marc:datafield[@tag=086]">
798 <mads:classification>
799 <xsl:attribute name="authority">
800 <xsl:value-of select="marc:subfield[@code='2']"/>
802 <xsl:call-template name="subfieldSelect">
803 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
804 <xsl:with-param name="delimeter">-</xsl:with-param>
806 </mads:classification>
808 <xsl:template match="marc:datafield[@tag=087]">
809 <mads:classification>
810 <xsl:attribute name="authority">
811 <xsl:value-of select="marc:subfield[@code='2']"/>
813 <xsl:call-template name="subfieldSelect">
814 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>
815 <xsl:with-param name="delimeter">-</xsl:with-param>
817 </mads:classification>
821 <!-- ========== names ========== -->
822 <xsl:template match="marc:datafield[@tag=100]">
823 <mads:name type="personal">
824 <xsl:call-template name="setAuthority"/>
825 <xsl:call-template name="nameABCDQ"/>
827 <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>
828 <xsl:call-template name="title"/>
829 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
832 <xsl:template match="marc:datafield[@tag=110]">
833 <mads:name type="corporate">
834 <xsl:call-template name="setAuthority"/>
835 <xsl:call-template name="nameABCDN"/>
837 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
840 <xsl:template match="marc:datafield[@tag=111]">
841 <mads:name type="conference">
842 <xsl:call-template name="setAuthority"/>
843 <xsl:call-template name="nameACDENQ"/>
845 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
848 <xsl:template match="marc:datafield[@tag=400]">
850 <xsl:call-template name="variantTypeAttribute"/>
851 <mads:name type="personal">
852 <xsl:call-template name="nameABCDQ"/>
854 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
855 <xsl:call-template name="title"/>
859 <xsl:template match="marc:datafield[@tag=410]">
861 <xsl:call-template name="variantTypeAttribute"/>
862 <mads:name type="corporate">
863 <xsl:call-template name="nameABCDN"/>
865 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
869 <xsl:template match="marc:datafield[@tag=411]">
871 <xsl:call-template name="variantTypeAttribute"/>
872 <mads:name type="conference">
873 <xsl:call-template name="nameACDENQ"/>
875 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
879 <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">
881 <xsl:call-template name="relatedTypeAttribute"/>
882 <!-- <xsl:call-template name="uri"/> -->
883 <mads:name type="personal">
884 <xsl:call-template name="setAuthority"/>
885 <xsl:call-template name="nameABCDQ"/>
887 <xsl:call-template name="title"/>
888 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
892 <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">
894 <xsl:call-template name="relatedTypeAttribute"/>
895 <!-- <xsl:call-template name="uri"/> -->
896 <mads:name type="corporate">
897 <xsl:call-template name="setAuthority"/>
898 <xsl:call-template name="nameABCDN"/>
900 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
904 <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">
906 <xsl:call-template name="relatedTypeAttribute"/>
907 <!-- <xsl:call-template name="uri"/> -->
908 <mads:name type="conference">
909 <xsl:call-template name="setAuthority"/>
910 <xsl:call-template name="nameACDENQ"/>
912 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
916 <!-- ========== titles ========== -->
917 <xsl:template match="marc:datafield[@tag=130]">
918 <xsl:call-template name="uniform-title"/>
919 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
922 <xsl:template match="marc:datafield[@tag=430]">
924 <xsl:call-template name="variantTypeAttribute"/>
925 <xsl:call-template name="uniform-title"/>
926 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
930 <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">
932 <xsl:call-template name="relatedTypeAttribute"/>
933 <xsl:call-template name="uniform-title"/>
934 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
938 <xsl:template name="title">
939 <xsl:variable name="hasTitle">
940 <xsl:for-each select="marc:subfield">
941 <xsl:if test="(contains('tfghklmors',@code) )">
942 <xsl:value-of select="@code"/>
946 <xsl:if test="string-length($hasTitle) > 0 ">
948 <xsl:call-template name="setAuthority"/>
950 <xsl:variable name="str">
951 <xsl:for-each select="marc:subfield">
952 <xsl:if test="(contains('atfghklmors',@code) )">
953 <xsl:value-of select="text()"/>
954 <xsl:text> </xsl:text>
958 <xsl:call-template name="chopPunctuation">
959 <xsl:with-param name="chopString">
960 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
964 <xsl:call-template name="part"/>
965 <!-- <xsl:call-template name="uri"/> -->
970 <xsl:template name="uniform-title">
971 <xsl:variable name="hasTitle">
972 <xsl:for-each select="marc:subfield">
973 <xsl:if test="(contains('atfghklmors',@code) )">
974 <xsl:value-of select="@code"/>
978 <xsl:if test="string-length($hasTitle) > 0 ">
980 <xsl:call-template name="setAuthority"/>
982 <xsl:variable name="str">
983 <xsl:for-each select="marc:subfield">
984 <xsl:if test="(contains('adfghklmors',@code) )">
985 <xsl:value-of select="text()"/>
986 <xsl:text> </xsl:text>
990 <xsl:call-template name="chopPunctuation">
991 <xsl:with-param name="chopString">
992 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
996 <xsl:call-template name="part"/>
997 <!-- <xsl:call-template name="uri"/> -->
1003 <!-- ========== topics ========== -->
1004 <xsl:template match="marc:subfield[@code='x']">
1006 <xsl:call-template name="chopPunctuation">
1007 <xsl:with-param name="chopString">
1008 <xsl:value-of select="."/>
1010 </xsl:call-template>
1016 match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">
1017 <xsl:call-template name="topic"/>
1018 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1021 match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">
1023 <xsl:call-template name="variantTypeAttribute"/>
1024 <xsl:call-template name="topic"/>
1028 match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">
1030 <xsl:call-template name="relatedTypeAttribute"/>
1031 <!-- <xsl:call-template name="uri"/> -->
1032 <xsl:call-template name="topic"/>
1033 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1036 <xsl:template name="topic">
1038 <xsl:call-template name="setAuthority"/>
1039 <!-- tmee2006 dedupe 550a
1040 <xsl:if test="@tag=550 or @tag=750">
1041 <xsl:call-template name="subfieldSelect">
1042 <xsl:with-param name="codes">ab</xsl:with-param>
1043 </xsl:call-template>
1047 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1048 <xsl:call-template name="chopPunctuation">
1049 <xsl:with-param name="chopString">
1050 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1052 </xsl:call-template>
1055 <xsl:call-template name="chopPunctuation">
1056 <xsl:with-param name="chopString">
1058 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
1059 <xsl:apply-templates select="marc:subfield[@code='x']"/>
1062 <xsl:call-template name="subfieldSelect">
1063 <xsl:with-param name="codes">ab</xsl:with-param>
1064 </xsl:call-template>
1068 </xsl:call-template>
1072 <!-- ========= temporals ========== -->
1073 <xsl:template match="marc:subfield[@code='y']">
1075 <xsl:call-template name="chopPunctuation">
1076 <xsl:with-param name="chopString">
1077 <xsl:value-of select="."/>
1079 </xsl:call-template>
1083 match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">
1084 <xsl:call-template name="temporal"/>
1087 match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">
1089 <xsl:call-template name="variantTypeAttribute"/>
1090 <xsl:call-template name="temporal"/>
1094 match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">
1096 <xsl:call-template name="relatedTypeAttribute"/>
1097 <!-- <xsl:call-template name="uri"/> -->
1098 <xsl:call-template name="temporal"/>
1101 <xsl:template name="temporal">
1103 <xsl:call-template name="setAuthority"/>
1104 <xsl:if test="@tag=548 or @tag=748">
1105 <xsl:value-of select="marc:subfield[@code='a']"/>
1107 <xsl:call-template name="chopPunctuation">
1108 <xsl:with-param name="chopString">
1110 <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">
1111 <xsl:apply-templates select="marc:subfield[@code='y']"/>
1114 <xsl:value-of select="marc:subfield[@code='a']"/>
1118 </xsl:call-template>
1120 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1123 <!-- ========== genre ========== -->
1124 <xsl:template match="marc:subfield[@code='v']">
1126 <xsl:call-template name="chopPunctuation">
1127 <xsl:with-param name="chopString">
1128 <xsl:value-of select="."/>
1130 </xsl:call-template>
1134 match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">
1135 <xsl:call-template name="genre"/>
1138 match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">
1140 <xsl:call-template name="variantTypeAttribute"/>
1141 <xsl:call-template name="genre"/>
1145 <xsl:template match="marc:datafield[@tag=555]">
1147 <xsl:call-template name="relatedTypeAttribute"/>
1148 <xsl:call-template name="uri"/>
1149 <xsl:call-template name="genre"/>
1154 match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">
1156 <xsl:call-template name="relatedTypeAttribute"/>
1157 <xsl:call-template name="genre"/>
1160 <xsl:template name="genre">
1162 <xsl:if test="@tag=555">
1163 <xsl:value-of select="marc:subfield[@code='a']"/>
1165 <xsl:call-template name="setAuthority"/>
1166 <xsl:call-template name="chopPunctuation">
1167 <xsl:with-param name="chopString">
1170 <xsl:when test="@tag='555'"/>
1171 <xsl:when test="@tag=185 or @tag=485 or @tag=585">
1172 <xsl:apply-templates select="marc:subfield[@code='v']"/>
1175 <xsl:value-of select="marc:subfield[@code='a']"/>
1179 </xsl:call-template>
1181 <xsl:apply-templates/>
1184 <!-- ========= geographic ========== -->
1185 <xsl:template match="marc:subfield[@code='z']">
1187 <xsl:call-template name="chopPunctuation">
1188 <xsl:with-param name="chopString">
1189 <xsl:value-of select="."/>
1191 </xsl:call-template>
1194 <xsl:template name="geographic">
1197 <xsl:call-template name="setAuthority"/>
1199 <xsl:if test="@tag=151 or @tag=551">
1200 <xsl:value-of select="marc:subfield[@code='a']"/>
1202 <xsl:call-template name="chopPunctuation">
1203 <xsl:with-param name="chopString">
1204 <xsl:if test="@tag=181 or @tag=481 or @tag=581">
1205 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1209 <xsl:when test="@tag=181 or @tag=481 or @tag=581">
1210 <xsl:apply-templates select="marc:subfield[@code='z']"/>
1214 <xsl:value-of select="marc:subfield[@code='a']"/>
1219 </xsl:call-template>
1221 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1224 match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">
1225 <xsl:call-template name="geographic"/>
1228 match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">
1230 <xsl:call-template name="variantTypeAttribute"/>
1231 <xsl:call-template name="geographic"/>
1235 match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">
1237 <xsl:call-template name="relatedTypeAttribute"/>
1238 <!-- <xsl:call-template name="uri"/> -->
1239 <xsl:call-template name="geographic"/>
1242 <xsl:template match="marc:datafield[@tag=580]">
1244 <xsl:call-template name="relatedTypeAttribute"/>
1245 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1249 match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">
1251 <xsl:call-template name="relatedTypeAttribute"/>
1252 <xsl:call-template name="geographic"/>
1255 <xsl:template match="marc:datafield[@tag=755]">
1257 <xsl:call-template name="relatedTypeAttribute"/>
1258 <xsl:call-template name="setAuthority"/>
1259 <xsl:call-template name="genre"/>
1260 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1263 <xsl:template match="marc:datafield[@tag=780]">
1265 <xsl:call-template name="relatedTypeAttribute"/>
1266 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1269 <xsl:template match="marc:datafield[@tag=785]">
1271 <xsl:call-template name="relatedTypeAttribute"/>
1272 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1276 <!-- ========== notes ========== -->
1277 <xsl:template match="marc:datafield[667 <= @tag and @tag <= 688]">
1280 <xsl:when test="@tag=667">
1281 <xsl:attribute name="type">nonpublic</xsl:attribute>
1283 <xsl:when test="@tag=670">
1284 <xsl:attribute name="type">source</xsl:attribute>
1286 <xsl:when test="@tag=675">
1287 <xsl:attribute name="type">notFound</xsl:attribute>
1289 <xsl:when test="@tag=678">
1290 <xsl:attribute name="type">history</xsl:attribute>
1292 <xsl:when test="@tag=681">
1293 <xsl:attribute name="type">subject example</xsl:attribute>
1295 <xsl:when test="@tag=682">
1296 <xsl:attribute name="type">deleted heading information</xsl:attribute>
1298 <xsl:when test="@tag=688">
1299 <xsl:attribute name="type">application history</xsl:attribute>
1302 <xsl:call-template name="chopPunctuation">
1303 <xsl:with-param name="chopString">
1305 <xsl:when test="@tag=667 or @tag=675">
1306 <xsl:value-of select="marc:subfield[@code='a']"/>
1308 <xsl:when test="@tag=670 or @tag=678">
1309 <xsl:call-template name="subfieldSelect">
1310 <xsl:with-param name="codes">ab</xsl:with-param>
1311 </xsl:call-template>
1313 <xsl:when test="680 <= @tag and @tag <=688">
1314 <xsl:call-template name="subfieldSelect">
1315 <xsl:with-param name="codes">ai</xsl:with-param>
1316 </xsl:call-template>
1320 </xsl:call-template>
1324 <!-- ========== url ========== -->
1325 <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">
1327 <xsl:if test="marc:subfield[@code='z' or @code='3']">
1328 <xsl:attribute name="displayLabel">
1329 <xsl:call-template name="subfieldSelect">
1330 <xsl:with-param name="codes">z3</xsl:with-param>
1331 </xsl:call-template>
1334 <xsl:value-of select="marc:subfield[@code='u']"/>
1338 <xsl:template name="relatedTypeAttribute">
1341 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">
1342 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">
1343 <xsl:attribute name="type">earlier</xsl:attribute>
1345 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">
1346 <xsl:attribute name="type">later</xsl:attribute>
1348 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">
1349 <xsl:attribute name="type">parentOrg</xsl:attribute>
1351 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">
1352 <xsl:attribute name="type">broader</xsl:attribute>
1354 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">
1355 <xsl:attribute name="type">narrower</xsl:attribute>
1357 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='r'">
1358 <xsl:attribute name="type">other</xsl:attribute>
1360 <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">
1361 <xsl:attribute name="type">other</xsl:attribute>
1364 <xsl:when test="@tag=530 or @tag=730">
1365 <xsl:attribute name="type">other</xsl:attribute>
1369 <xsl:attribute name="type">equivalent</xsl:attribute>
1372 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1377 <xsl:template name="variantTypeAttribute">
1380 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">
1381 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">
1382 <xsl:attribute name="type">acronym</xsl:attribute>
1384 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='n'">
1385 <xsl:attribute name="type">other</xsl:attribute>
1387 <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">
1388 <xsl:attribute name="type">other</xsl:attribute>
1393 <xsl:attribute name="type">other</xsl:attribute>
1396 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1399 <xsl:template name="setAuthority">
1401 <!-- can be called from the datafield or subfield level, so "..//@tag" means
1402 the tag can be at the subfield's parent level or at the datafields own level -->
1405 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">
1406 <xsl:attribute name="authority">
1407 <xsl:text>naf</xsl:text>
1411 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">
1412 <xsl:attribute name="authority">
1413 <xsl:text>lcsh</xsl:text>
1417 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">
1418 <xsl:attribute name="authority">
1419 <xsl:text>lacnaf</xsl:text>
1423 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">
1424 <xsl:attribute name="authority">
1425 <xsl:text>lcsh</xsl:text>
1429 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">
1430 <xsl:attribute name="authority">cash</xsl:attribute>
1433 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">
1434 <xsl:attribute name="authority">naf</xsl:attribute>
1437 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">
1438 <xsl:attribute name="authority">lcsh</xsl:attribute>
1441 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">
1442 <xsl:attribute name="authority">
1443 <xsl:text>lacnaf</xsl:text>
1447 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">
1448 <xsl:attribute name="authority">
1449 <xsl:text>cash</xsl:text>
1453 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='b'">
1454 <xsl:attribute name="authority">
1455 <xsl:text>lcshcl</xsl:text>
1459 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'">
1460 <xsl:attribute name="authority">
1461 <xsl:text>nlmnaf</xsl:text>
1465 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'">
1466 <xsl:attribute name="authority">
1467 <xsl:text>nalnaf</xsl:text>
1471 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='r'">
1472 <xsl:attribute name="authority">
1473 <xsl:text>aat</xsl:text>
1477 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='s'">
1478 <xsl:attribute name="authority">sears</xsl:attribute>
1481 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='v'">
1482 <xsl:attribute name="authority">rvm</xsl:attribute>
1485 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='z'">
1486 <xsl:attribute name="authority">
1488 select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"
1493 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='a'">
1494 <xsl:attribute name="authority">
1495 <xsl:text>naf</xsl:text>
1499 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='b'">
1500 <xsl:attribute name="authority">
1501 <xsl:text>lcsh</xsl:text>
1505 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">
1506 <xsl:attribute name="authority">
1507 <xsl:text>lacnaf</xsl:text>
1511 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' ">
1512 <xsl:attribute name="authority">
1513 <xsl:text>lcsh</xsl:text>
1517 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' ">
1518 <xsl:attribute name="authority">
1519 <xsl:text>lcsh</xsl:text>
1523 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' ">
1524 <xsl:attribute name="authority">
1525 <xsl:text>mesh</xsl:text>
1529 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' ">
1530 <xsl:attribute name="authority">
1531 <xsl:text>nal</xsl:text>
1535 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' ">
1536 <xsl:attribute name="authority">
1537 <xsl:text>cash</xsl:text>
1541 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">
1542 <xsl:attribute name="authority">
1543 <xsl:text>naf</xsl:text>
1547 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">
1548 <xsl:attribute name="authority">lcsh</xsl:attribute>
1551 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">
1552 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1555 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">
1556 <xsl:attribute name="authority">cash</xsl:attribute>
1559 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'">
1560 <xsl:attribute name="authority">lcsh</xsl:attribute>
1563 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">
1564 <xsl:attribute name="authority">naf</xsl:attribute>
1567 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">
1568 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1570 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">
1571 <xsl:attribute name="authority">lcsh</xsl:attribute>
1573 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">
1574 <xsl:attribute name="authority">cash</xsl:attribute>
1577 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='1'">
1578 <xsl:attribute name="authority">lcshcl</xsl:attribute>
1581 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'">
1582 <xsl:attribute name="authority">nlmnaf</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='3'">
1586 <xsl:attribute name="authority">nalnaf</xsl:attribute>
1589 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='6'">
1590 <xsl:attribute name="authority">rvm</xsl:attribute>
1593 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='7'">
1594 <xsl:attribute name="authority">
1595 <xsl:value-of select="marc:subfield[@code='2']"/>
1599 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'">
1600 <xsl:attribute name="authority">lacnaf</xsl:attribute>
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='0'">
1604 <xsl:attribute name="authority">naf</xsl:attribute>
1607 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'">
1608 <xsl:attribute name="authority">lcsh</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='2'">
1612 <xsl:attribute name="authority">mesh</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='3'">
1616 <xsl:attribute name="authority">nal</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='5'">
1620 <xsl:attribute name="authority">cash</xsl:attribute>
1624 <xsl:template match="*"/>
1625 </xsl:stylesheet>$XSLT$
1626 WHERE name = 'mads21';;