1 <?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">
6 <xsl:include href="http://www.loc.gov/marcxml/xslt/MARC21slimUtils.xsl"/>
7 <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
8 <xsl:strip-space elements="*"/>
9 <!-- Stylesheet copyright (c) 2011 Library of Congress
13 2.10 fixed type=other and type=otherType for mads:related tmee 09/16/2011
14 2.09 fixed professionTerm and genreTerm empty tag error tmee 09/16/2011
15 2.08 fixed marc:subfield @code='i' matching error tmee 09/16/2011
16 2.07 fixed 555 duplication error tmee 08/10/2011
17 2.06 fixed topic subfield error tmee 08/10/2011
18 2.05 fixed title subfield error tmee 06/20/2011
19 2.04 fixed geographicSubdivision mapping for authority element tmee 06/16/2011
20 2.03 added classification for 053, 055, 060, 065, 070, 080, 082, 083, 086, 087 tmee 06/03/2011
21 2.02 added descriptionStandard for 008/10 tmee 04/27/2011
22 2.01 added extensions for 046, 336, 370, 374, 375, 376 tmee 04/08/2011
23 2.00 redefined imported MODS elements in version 1.0 to MADS elements in version 2.0 tmee 02/08/2011
24 1.08 added 372 subfields $a $s $t for <fieldOfActivity> tmee 06/24/2010
25 1.07 removed role/roleTerm 100, 110, 111, 400, 410, 411, 500, 510, 511, 700, 710, 711 tmee 06/24/2010
26 1.06 added strip-space tmee 06/24/2010
27 1.05 added subfield $a for 130, 430, 530 tmee 06/21/2010
28 1.04 fixed 550 z omission ntra 08/11/2008
29 1.03 removed duplication of 550 $a text tmee 11/01/2006
30 1.02 fixed namespace references between mads and mods ntra 10/06/2006
31 1.01 revised rgue/jrad 11/29/05
32 1.00 adapted from MARC21Slim2MODS3.xsl ntra 07/06/05
35 <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->
36 <xsl:param name="authority"/>
37 <xsl:variable name="auth">
39 <xsl:when test="$authority">
40 <xsl:value-of select="$authority"/>
42 <xsl:otherwise>naf</xsl:otherwise>
45 <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>
46 <xsl:variable name="controlField008-06"
47 select="substring(descendant-or-self::marc:controlfield[@tag=008],7,1)"/>
48 <xsl:variable name="controlField008-11"
49 select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>
50 <xsl:variable name="controlField008-14"
51 select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>
52 <xsl:template match="/">
54 <xsl:when test="descendant-or-self::marc:collection">
55 <mads:madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
56 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/v2/mads-2-0.xsd">
57 <xsl:for-each select="descendant-or-self::marc:collection/marc:record">
58 <mads:mads version="2.0">
59 <xsl:call-template name="marcRecord"/>
62 </mads:madsCollection>
65 <mads:mads version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
66 xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/mads-2-0.xsd">
67 <xsl:for-each select="descendant-or-self::marc:record">
68 <xsl:call-template name="marcRecord"/>
75 <xsl:template name="marcRecord">
79 <xsl:when test="$controlField008-06='d'">
80 <xsl:attribute name="geographicSubdivision">
81 <xsl:text>direct</xsl:text>
84 <xsl:when test="$controlField008-06='i'">
85 <xsl:attribute name="geographicSubdivision">
86 <xsl:text>indirect</xsl:text>
89 <xsl:when test="$controlField008-06='n'">
90 <xsl:attribute name="geographicSubdivision">
91 <xsl:text>not applicable</xsl:text>
96 <xsl:apply-templates select="marc:datafield[100 <= @tag and @tag < 200]"/>
101 select="marc:datafield[500 <= @tag and @tag <= 585]|marc:datafield[700 <= @tag and @tag <= 785]"/>
104 <xsl:apply-templates select="marc:datafield[400 <= @tag and @tag <= 485]"/>
107 <xsl:apply-templates select="marc:datafield[667 <= @tag and @tag <= 688]"/>
110 <xsl:apply-templates select="marc:datafield[@tag=856]"/>
111 <xsl:apply-templates select="marc:datafield[@tag=010]"/>
112 <xsl:apply-templates select="marc:datafield[@tag=024]"/>
113 <xsl:apply-templates select="marc:datafield[@tag=372]"/>
115 <!-- classification -->
116 <xsl:apply-templates select="marc:datafield[@tag=053]"/>
117 <xsl:apply-templates select="marc:datafield[@tag=055]"/>
118 <xsl:apply-templates select="marc:datafield[@tag=060]"/>
119 <xsl:apply-templates select="marc:datafield[@tag=065]"/>
120 <xsl:apply-templates select="marc:datafield[@tag=070]"/>
121 <xsl:apply-templates select="marc:datafield[@tag=080]"/>
122 <xsl:apply-templates select="marc:datafield[@tag=082]"/>
123 <xsl:apply-templates select="marc:datafield[@tag=083]"/>
124 <xsl:apply-templates select="marc:datafield[@tag=086]"/>
125 <xsl:apply-templates select="marc:datafield[@tag=087]"/>
129 <xsl:for-each select="marc:datafield[@tag=373]">
132 <xsl:value-of select="marc:subfield[@code='a']"/>
134 <mads:dateValid point="start">
135 <xsl:value-of select="marc:subfield[@code='s']"/>
137 <mads:dateValid point="end">
138 <xsl:value-of select="marc:subfield[@code='t']"/>
142 <xsl:for-each select="marc:datafield[@tag=371]">
146 <xsl:value-of select="marc:subfield[@code='a']"/>
149 <xsl:value-of select="marc:subfield[@code='b']"/>
152 <xsl:value-of select="marc:subfield[@code='c']"/>
155 <xsl:value-of select="marc:subfield[@code='d']"/>
158 <xsl:value-of select="marc:subfield[@code='e']"/>
162 <xsl:value-of select="marc:subfield[@code='m']"/>
168 <xsl:for-each select="marc:datafield[@tag=336]">
171 <mads:contentType type="text">
172 <xsl:value-of select="marc:subfield[@code='a']"/>
174 <mads:contentType type="code">
175 <xsl:value-of select="marc:subfield[@code='b']"/>
181 <xsl:for-each select="marc:datafield[@tag=374]">
185 <xsl:when test="marc:subfield[@code='a']">
186 <mads:professionTerm>
187 <xsl:value-of select="marc:subfield[@code='a']"/>
188 </mads:professionTerm>
190 <xsl:when test="marc:subfield[@code='s']">
191 <mads:dateValid point="start">
192 <xsl:value-of select="marc:subfield[@code='s']"/>
195 <xsl:when test="marc:subfield[@code='t']">
196 <mads:dateValid point="end">
197 <xsl:value-of select="marc:subfield[@code='t']"/>
205 <xsl:for-each select="marc:datafield[@tag=375]">
209 <xsl:when test="marc:subfield[@code='a']">
211 <xsl:value-of select="marc:subfield[@code='a']"/>
214 <xsl:when test="marc:subfield[@code='s']">
215 <mads:dateValid point="start">
216 <xsl:value-of select="marc:subfield[@code='s']"/>
219 <xsl:when test="marc:subfield[@code='t']">
220 <mads:dateValid point="end">
221 <xsl:value-of select="marc:subfield[@code='t']"/>
229 <xsl:for-each select="marc:datafield[@tag=376]">
231 <mads:familyInformation>
233 <xsl:value-of select="marc:subfield[@code='a']"/>
235 <mads:nameOfProminentMember>
236 <xsl:value-of select="marc:subfield[@code='b']"/>
237 </mads:nameOfProminentMember>
238 <mads:hereditaryTitle>
239 <xsl:value-of select="marc:subfield[@code='c']"/>
240 </mads:hereditaryTitle>
241 <mads:dateValid point="start">
242 <xsl:value-of select="marc:subfield[@code='s']"/>
244 <mads:dateValid point="end">
245 <xsl:value-of select="marc:subfield[@code='t']"/>
247 </mads:familyInformation>
252 <mads:recordOrigin>Converted from MARCXML to MADS version 2.0 (Revision 2.10)</mads:recordOrigin>
253 <!-- <xsl:apply-templates select="marc:datafield[@tag=024]"/> -->
255 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>
256 <xsl:apply-templates select="marc:controlfield[@tag=005]"/>
257 <xsl:apply-templates select="marc:controlfield[@tag=001]"/>
258 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>
259 <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='e']"/>
260 <xsl:for-each select="marc:controlfield[@tag=008]">
261 <xsl:if test="substring(.,11,1)='a'">
262 <mads:descriptionStandard>
263 <xsl:text>earlier rules</xsl:text>
264 </mads:descriptionStandard>
266 <xsl:if test="substring(.,11,1)='b'">
267 <mads:descriptionStandard>
268 <xsl:text>aacr1</xsl:text>
269 </mads:descriptionStandard>
271 <xsl:if test="substring(.,11,1)='c'">
272 <mads:descriptionStandard>
273 <xsl:text>aacr2</xsl:text>
274 </mads:descriptionStandard>
276 <xsl:if test="substring(.,11,1)='d'">
277 <mads:descriptionStandard>
278 <xsl:text>aacr2 compatible</xsl:text>
279 </mads:descriptionStandard>
281 <xsl:if test="substring(.,11,1)='z'">
282 <mads:descriptionStandard>
283 <xsl:text>other rules</xsl:text>
284 </mads:descriptionStandard>
290 <!-- start of secondary templates -->
292 <!-- ======== xlink ======== -->
294 <!-- <xsl:template name="uri">
295 <xsl:for-each select="marc:subfield[@code='0']">
296 <xsl:attribute name="xlink:href">
297 <xsl:value-of select="."/>
302 <xsl:template match="marc:subfield[@code='i']">
303 <xsl:attribute name="otherType">
304 <xsl:value-of select="."/>
308 <!-- No role/roleTerm mapped in MADS 06/24/2010
309 <xsl:template name="role">
310 <xsl:for-each select="marc:subfield[@code='e']">
312 <mads:roleTerm type="text">
313 <xsl:value-of select="."/>
320 <xsl:template name="part">
321 <xsl:variable name="partNumber">
322 <xsl:call-template name="specialSubfieldSelect">
323 <xsl:with-param name="axis">n</xsl:with-param>
324 <xsl:with-param name="anyCodes">n</xsl:with-param>
325 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
328 <xsl:variable name="partName">
329 <xsl:call-template name="specialSubfieldSelect">
330 <xsl:with-param name="axis">p</xsl:with-param>
331 <xsl:with-param name="anyCodes">p</xsl:with-param>
332 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
335 <xsl:if test="string-length(normalize-space($partNumber))">
337 <xsl:call-template name="chopPunctuation">
338 <xsl:with-param name="chopString" select="$partNumber"/>
342 <xsl:if test="string-length(normalize-space($partName))">
344 <xsl:call-template name="chopPunctuation">
345 <xsl:with-param name="chopString" select="$partName"/>
351 <xsl:template name="nameABCDN">
352 <xsl:for-each select="marc:subfield[@code='a']">
354 <xsl:call-template name="chopPunctuation">
355 <xsl:with-param name="chopString" select="."/>
359 <xsl:for-each select="marc:subfield[@code='b']">
361 <xsl:value-of select="."/>
365 test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
367 <xsl:call-template name="subfieldSelect">
368 <xsl:with-param name="codes">cdn</xsl:with-param>
374 <xsl:template name="nameABCDQ">
376 <xsl:call-template name="chopPunctuation">
377 <xsl:with-param name="chopString">
378 <xsl:call-template name="subfieldSelect">
379 <xsl:with-param name="codes">aq</xsl:with-param>
384 <xsl:call-template name="termsOfAddress"/>
385 <xsl:call-template name="nameDate"/>
388 <xsl:template name="nameACDENQ">
390 <xsl:call-template name="subfieldSelect">
391 <xsl:with-param name="codes">acdenq</xsl:with-param>
396 <xsl:template name="nameDate">
397 <xsl:for-each select="marc:subfield[@code='d']">
398 <mads:namePart type="date">
399 <xsl:call-template name="chopPunctuation">
400 <xsl:with-param name="chopString" select="."/>
406 <xsl:template name="specialSubfieldSelect">
407 <xsl:param name="anyCodes"/>
408 <xsl:param name="axis"/>
409 <xsl:param name="beforeCodes"/>
410 <xsl:param name="afterCodes"/>
411 <xsl:variable name="str">
412 <xsl:for-each select="marc:subfield">
414 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])">
415 <xsl:value-of select="text()"/>
416 <xsl:text> </xsl:text>
420 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
423 <xsl:template name="termsOfAddress">
424 <xsl:if test="marc:subfield[@code='b' or @code='c']">
425 <mads:namePart type="termsOfAddress">
426 <xsl:call-template name="chopPunctuation">
427 <xsl:with-param name="chopString">
428 <xsl:call-template name="subfieldSelect">
429 <xsl:with-param name="codes">bc</xsl:with-param>
437 <xsl:template name="displayLabel">
438 <xsl:if test="marc:subfield[@code='z']">
439 <xsl:attribute name="displayLabel">
440 <xsl:value-of select="marc:subfield[@code='z']"/>
443 <xsl:if test="marc:subfield[@code='3']">
444 <xsl:attribute name="displayLabel">
445 <xsl:value-of select="marc:subfield[@code='3']"/>
450 <xsl:template name="isInvalid">
451 <xsl:if test="@code='z'">
452 <xsl:attribute name="invalid">yes</xsl:attribute>
456 <xsl:template name="sub2Attribute">
458 <xsl:if test="../marc:subfield[@code='2']">
459 <xsl:attribute name="type">
460 <xsl:value-of select="../marc:subfield[@code='2']"/>
465 <xsl:template match="marc:controlfield[@tag=001]">
466 <mads:recordIdentifier>
467 <xsl:if test="../marc:controlfield[@tag=003]">
468 <xsl:attribute name="source">
469 <xsl:value-of select="../marc:controlfield[@tag=003]"/>
472 <xsl:value-of select="."/>
473 </mads:recordIdentifier>
476 <xsl:template match="marc:controlfield[@tag=005]">
477 <mads:recordChangeDate encoding="iso8601">
478 <xsl:value-of select="."/>
479 </mads:recordChangeDate>
482 <xsl:template match="marc:controlfield[@tag=008]">
483 <mads:recordCreationDate encoding="marc">
484 <xsl:value-of select="substring(.,1,6)"/>
485 </mads:recordCreationDate>
488 <xsl:template match="marc:datafield[@tag=010]">
489 <xsl:for-each select="marc:subfield">
490 <mads:identifier type="lccn">
491 <xsl:call-template name="isInvalid"/>
492 <xsl:value-of select="."/>
497 <xsl:template match="marc:datafield[@tag=024]">
498 <xsl:for-each select="marc:subfield[not(@code=2)]">
500 <xsl:call-template name="isInvalid"/>
501 <xsl:call-template name="sub2Attribute"/>
502 <xsl:value-of select="."/>
507 <!-- ========== 372 ========== -->
508 <xsl:template match="marc:datafield[@tag=372]">
509 <mads:fieldOfActivity>
510 <xsl:call-template name="subfieldSelect">
511 <xsl:with-param name="codes">a</xsl:with-param>
513 <xsl:text>-</xsl:text>
514 <xsl:call-template name="subfieldSelect">
515 <xsl:with-param name="codes">st</xsl:with-param>
517 </mads:fieldOfActivity>
521 <!-- ========== 040 ========== -->
522 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">
523 <mads:recordContentSource authority="marcorg">
524 <xsl:value-of select="."/>
525 </mads:recordContentSource>
528 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">
529 <mads:languageOfCataloging>
530 <mads:languageTerm authority="iso639-2b" type="code">
531 <xsl:value-of select="."/>
533 </mads:languageOfCataloging>
536 <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='e']">
537 <mads:descriptionStandard>
538 <xsl:value-of select="."/>
539 </mads:descriptionStandard>
542 <!-- ========== classification 2.03 ========== -->
544 <xsl:template match="marc:datafield[@tag=053]">
545 <mads:classification>
546 <xsl:value-of select="."/>
547 </mads:classification>
549 <xsl:template match="marc:datafield[@tag=055]">
550 <mads:classification>
551 <xsl:value-of select="."/>
552 </mads:classification>
554 <xsl:template match="marc:datafield[@tag=060]">
555 <mads:classification>
556 <xsl:value-of select="."/>
557 </mads:classification>
559 <xsl:template match="marc:datafield[@tag=065]">
560 <mads:classification>
561 <xsl:value-of select="."/>
562 </mads:classification>
564 <xsl:template match="marc:datafield[@tag=070]">
565 <mads:classification>
566 <xsl:value-of select="."/>
567 </mads:classification>
569 <xsl:template match="marc:datafield[@tag=080]">
570 <mads:classification>
571 <xsl:value-of select="."/>
572 </mads:classification>
574 <xsl:template match="marc:datafield[@tag=082]">
575 <mads:classification>
576 <xsl:value-of select="."/>
577 </mads:classification>
579 <xsl:template match="marc:datafield[@tag=083]">
580 <mads:classification>
581 <xsl:value-of select="."/>
582 </mads:classification>
584 <xsl:template match="marc:datafield[@tag=086]">
585 <mads:classification>
586 <xsl:value-of select="."/>
587 </mads:classification>
589 <xsl:template match="marc:datafield[@tag=087]">
590 <mads:classification>
591 <xsl:value-of select="."/>
592 </mads:classification>
596 <!-- ========== names ========== -->
597 <xsl:template match="marc:datafield[@tag=100]">
598 <mads:name type="personal">
599 <xsl:call-template name="setAuthority"/>
600 <xsl:call-template name="nameABCDQ"/>
602 <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>
603 <xsl:call-template name="title"/>
604 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
607 <xsl:template match="marc:datafield[@tag=110]">
608 <mads:name type="corporate">
609 <xsl:call-template name="setAuthority"/>
610 <xsl:call-template name="nameABCDN"/>
612 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
615 <xsl:template match="marc:datafield[@tag=111]">
616 <mads:name type="conference">
617 <xsl:call-template name="setAuthority"/>
618 <xsl:call-template name="nameACDENQ"/>
620 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
623 <xsl:template match="marc:datafield[@tag=400]">
625 <xsl:call-template name="variantTypeAttribute"/>
626 <mads:name type="personal">
627 <xsl:call-template name="nameABCDQ"/>
629 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
630 <xsl:call-template name="title"/>
634 <xsl:template match="marc:datafield[@tag=410]">
636 <xsl:call-template name="variantTypeAttribute"/>
637 <mads:name type="corporate">
638 <xsl:call-template name="nameABCDN"/>
640 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
644 <xsl:template match="marc:datafield[@tag=411]">
646 <xsl:call-template name="variantTypeAttribute"/>
647 <mads:name type="conference">
648 <xsl:call-template name="nameACDENQ"/>
650 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
654 <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">
656 <xsl:call-template name="relatedTypeAttribute"/>
657 <!-- <xsl:call-template name="uri"/> -->
658 <mads:name type="personal">
659 <xsl:call-template name="setAuthority"/>
660 <xsl:call-template name="nameABCDQ"/>
662 <xsl:call-template name="title"/>
663 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
667 <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">
669 <xsl:call-template name="relatedTypeAttribute"/>
670 <!-- <xsl:call-template name="uri"/> -->
671 <mads:name type="corporate">
672 <xsl:call-template name="setAuthority"/>
673 <xsl:call-template name="nameABCDN"/>
675 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
679 <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">
681 <xsl:call-template name="relatedTypeAttribute"/>
682 <!-- <xsl:call-template name="uri"/> -->
683 <mads:name type="conference">
684 <xsl:call-template name="setAuthority"/>
685 <xsl:call-template name="nameACDENQ"/>
687 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
691 <!-- ========== titles ========== -->
692 <xsl:template match="marc:datafield[@tag=130]">
693 <xsl:call-template name="uniform-title"/>
694 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
697 <xsl:template match="marc:datafield[@tag=430]">
699 <xsl:call-template name="variantTypeAttribute"/>
700 <xsl:call-template name="uniform-title"/>
701 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
705 <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">
707 <xsl:call-template name="relatedTypeAttribute"/>
708 <xsl:call-template name="uniform-title"/>
709 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
713 <xsl:template name="title">
714 <xsl:variable name="hasTitle">
715 <xsl:for-each select="marc:subfield">
716 <xsl:if test="(contains('tfghklmors',@code) )">
717 <xsl:value-of select="@code"/>
721 <xsl:if test="string-length($hasTitle) > 0 ">
723 <xsl:call-template name="setAuthority"/>
725 <xsl:variable name="str">
726 <xsl:for-each select="marc:subfield">
727 <xsl:if test="(contains('atfghklmors',@code) )">
728 <xsl:value-of select="text()"/>
729 <xsl:text> </xsl:text>
733 <xsl:call-template name="chopPunctuation">
734 <xsl:with-param name="chopString">
735 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
739 <xsl:call-template name="part"/>
740 <!-- <xsl:call-template name="uri"/> -->
745 <xsl:template name="uniform-title">
746 <xsl:variable name="hasTitle">
747 <xsl:for-each select="marc:subfield">
748 <xsl:if test="(contains('atfghklmors',@code) )">
749 <xsl:value-of select="@code"/>
753 <xsl:if test="string-length($hasTitle) > 0 ">
755 <xsl:call-template name="setAuthority"/>
757 <xsl:variable name="str">
758 <xsl:for-each select="marc:subfield">
759 <xsl:if test="(contains('adfghklmors',@code) )">
760 <xsl:value-of select="text()"/>
761 <xsl:text> </xsl:text>
765 <xsl:call-template name="chopPunctuation">
766 <xsl:with-param name="chopString">
767 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
771 <xsl:call-template name="part"/>
772 <!-- <xsl:call-template name="uri"/> -->
778 <!-- ========== topics ========== -->
779 <xsl:template match="marc:subfield[@code='x']">
781 <xsl:call-template name="chopPunctuation">
782 <xsl:with-param name="chopString">
783 <xsl:value-of select="."/>
791 match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">
792 <xsl:call-template name="topic"/>
793 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
796 match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">
798 <xsl:call-template name="variantTypeAttribute"/>
799 <xsl:call-template name="topic"/>
803 match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">
805 <xsl:call-template name="relatedTypeAttribute"/>
806 <!-- <xsl:call-template name="uri"/> -->
807 <xsl:call-template name="topic"/>
808 <xsl:apply-templates select="marc:subfield[@code='z']"/>
811 <xsl:template name="topic">
813 <xsl:call-template name="setAuthority"/>
814 <!-- tmee2006 dedupe 550a
815 <xsl:if test="@tag=550 or @tag=750">
816 <xsl:call-template name="subfieldSelect">
817 <xsl:with-param name="codes">ab</xsl:with-param>
822 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
823 <xsl:call-template name="chopPunctuation">
824 <xsl:with-param name="chopString">
825 <xsl:apply-templates select="marc:subfield[@code='x']"/>
830 <xsl:call-template name="chopPunctuation">
831 <xsl:with-param name="chopString">
833 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">
834 <xsl:apply-templates select="marc:subfield[@code='x']"/>
837 <xsl:call-template name="subfieldSelect">
838 <xsl:with-param name="codes">ab</xsl:with-param>
847 <!-- ========= temporals ========== -->
848 <xsl:template match="marc:subfield[@code='y']">
850 <xsl:call-template name="chopPunctuation">
851 <xsl:with-param name="chopString">
852 <xsl:value-of select="."/>
858 match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">
859 <xsl:call-template name="temporal"/>
862 match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">
864 <xsl:call-template name="variantTypeAttribute"/>
865 <xsl:call-template name="temporal"/>
869 match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">
871 <xsl:call-template name="relatedTypeAttribute"/>
872 <!-- <xsl:call-template name="uri"/> -->
873 <xsl:call-template name="temporal"/>
876 <xsl:template name="temporal">
878 <xsl:call-template name="setAuthority"/>
879 <xsl:if test="@tag=548 or @tag=748">
880 <xsl:value-of select="marc:subfield[@code='a']"/>
882 <xsl:call-template name="chopPunctuation">
883 <xsl:with-param name="chopString">
885 <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">
886 <xsl:apply-templates select="marc:subfield[@code='y']"/>
889 <xsl:value-of select="marc:subfield[@code='a']"/>
895 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
898 <!-- ========== genre ========== -->
899 <xsl:template match="marc:subfield[@code='v']">
901 <xsl:call-template name="chopPunctuation">
902 <xsl:with-param name="chopString">
903 <xsl:value-of select="."/>
909 match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">
910 <xsl:call-template name="genre"/>
913 match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">
915 <xsl:call-template name="variantTypeAttribute"/>
916 <xsl:call-template name="genre"/>
920 <xsl:template match="marc:datafield[@tag=555]">
922 <xsl:call-template name="relatedTypeAttribute"/>
923 <xsl:call-template name="uri"/>
924 <xsl:call-template name="genre"/>
929 match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">
931 <xsl:call-template name="relatedTypeAttribute"/>
932 <xsl:call-template name="genre"/>
935 <xsl:template name="genre">
937 <xsl:if test="@tag=555">
938 <xsl:value-of select="marc:subfield[@code='a']"/>
940 <xsl:call-template name="setAuthority"/>
941 <xsl:call-template name="chopPunctuation">
942 <xsl:with-param name="chopString">
945 <xsl:when test="@tag='555'"/>
946 <xsl:when test="@tag=185 or @tag=485 or @tag=585">
947 <xsl:apply-templates select="marc:subfield[@code='v']"/>
950 <xsl:value-of select="marc:subfield[@code='a']"/>
956 <xsl:apply-templates/>
959 <!-- ========= geographic ========== -->
960 <xsl:template match="marc:subfield[@code='z']">
962 <xsl:call-template name="chopPunctuation">
963 <xsl:with-param name="chopString">
964 <xsl:value-of select="."/>
969 <xsl:template name="geographic">
971 <xsl:if test="@tag=551">
972 <xsl:value-of select="marc:subfield[@code='a']"/>
974 <xsl:call-template name="setAuthority"/>
975 <xsl:call-template name="chopPunctuation">
976 <xsl:with-param name="chopString">
978 <xsl:when test="@tag=181 or @tag=481 or @tag=581">
979 <xsl:apply-templates select="marc:subfield[@code='z']"/>
982 <xsl:value-of select="marc:subfield[@code='a']"/>
988 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
991 match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">
992 <xsl:call-template name="geographic"/>
995 match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">
997 <xsl:call-template name="variantTypeAttribute"/>
998 <xsl:call-template name="geographic"/>
1002 match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">
1004 <xsl:call-template name="relatedTypeAttribute"/>
1005 <!-- <xsl:call-template name="uri"/> -->
1006 <xsl:call-template name="geographic"/>
1009 <xsl:template match="marc:datafield[@tag=580]">
1011 <xsl:call-template name="relatedTypeAttribute"/>
1012 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1016 match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">
1018 <xsl:call-template name="relatedTypeAttribute"/>
1019 <xsl:call-template name="geographic"/>
1022 <xsl:template match="marc:datafield[@tag=755]">
1024 <xsl:call-template name="relatedTypeAttribute"/>
1025 <xsl:call-template name="genre"/>
1026 <xsl:call-template name="setAuthority"/>
1027 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1030 <xsl:template match="marc:datafield[@tag=780]">
1032 <xsl:call-template name="relatedTypeAttribute"/>
1033 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1036 <xsl:template match="marc:datafield[@tag=785]">
1038 <xsl:call-template name="relatedTypeAttribute"/>
1039 <xsl:apply-templates select="marc:subfield[@code!='i']"/>
1043 <!-- ========== notes ========== -->
1044 <xsl:template match="marc:datafield[667 <= @tag and @tag <= 688]">
1047 <xsl:when test="@tag=667">
1048 <xsl:attribute name="type">nonpublic</xsl:attribute>
1050 <xsl:when test="@tag=670">
1051 <xsl:attribute name="type">source</xsl:attribute>
1053 <xsl:when test="@tag=675">
1054 <xsl:attribute name="type">notFound</xsl:attribute>
1056 <xsl:when test="@tag=678">
1057 <xsl:attribute name="type">history</xsl:attribute>
1059 <xsl:when test="@tag=681">
1060 <xsl:attribute name="type">subject example</xsl:attribute>
1062 <xsl:when test="@tag=682">
1063 <xsl:attribute name="type">deleted heading information</xsl:attribute>
1065 <xsl:when test="@tag=688">
1066 <xsl:attribute name="type">application history</xsl:attribute>
1069 <xsl:call-template name="chopPunctuation">
1070 <xsl:with-param name="chopString">
1072 <xsl:when test="@tag=667 or @tag=675">
1073 <xsl:value-of select="marc:subfield[@code='a']"/>
1075 <xsl:when test="@tag=670 or @tag=678">
1076 <xsl:call-template name="subfieldSelect">
1077 <xsl:with-param name="codes">ab</xsl:with-param>
1078 </xsl:call-template>
1080 <xsl:when test="680 <= @tag and @tag <=688">
1081 <xsl:call-template name="subfieldSelect">
1082 <xsl:with-param name="codes">ai</xsl:with-param>
1083 </xsl:call-template>
1087 </xsl:call-template>
1091 <!-- ========== url ========== -->
1092 <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">
1094 <xsl:if test="marc:subfield[@code='z' or @code='3']">
1095 <xsl:attribute name="displayLabel">
1096 <xsl:call-template name="subfieldSelect">
1097 <xsl:with-param name="codes">z3</xsl:with-param>
1098 </xsl:call-template>
1101 <xsl:value-of select="marc:subfield[@code='u']"/>
1105 <xsl:template name="relatedTypeAttribute">
1108 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">
1109 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">
1110 <xsl:attribute name="type">earlier</xsl:attribute>
1112 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">
1113 <xsl:attribute name="type">later</xsl:attribute>
1115 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">
1116 <xsl:attribute name="type">parentOrg</xsl:attribute>
1118 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">
1119 <xsl:attribute name="type">broader</xsl:attribute>
1121 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">
1122 <xsl:attribute name="type">narrower</xsl:attribute>
1124 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='r'">
1125 <xsl:attribute name="type">other</xsl:attribute>
1127 <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">
1128 <xsl:attribute name="type">other</xsl:attribute>
1131 <xsl:when test="@tag=530 or @tag=730">
1132 <xsl:attribute name="type">other</xsl:attribute>
1136 <xsl:attribute name="type">equivalent</xsl:attribute>
1139 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1142 <xsl:template name="variantTypeAttribute">
1145 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">
1146 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">
1147 <xsl:attribute name="type">acronym</xsl:attribute>
1149 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='n'">
1150 <xsl:attribute name="type">other</xsl:attribute>
1152 <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">
1153 <xsl:attribute name="type">other</xsl:attribute>
1158 <xsl:attribute name="type">other</xsl:attribute>
1161 <xsl:apply-templates select="marc:subfield[@code='i']"/>
1164 <xsl:template name="setAuthority">
1166 <!-- can be called from the datafield or subfield level, so "..//@tag" means
1167 the tag can be at the subfield's parent level or at the datafields own level -->
1170 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">
1171 <xsl:attribute name="authority">
1172 <xsl:text>naf</xsl:text>
1176 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">
1177 <xsl:attribute name="authority">
1178 <xsl:text>lcsh</xsl:text>
1182 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">
1183 <xsl:attribute name="authority">
1184 <xsl:text>lacnaf</xsl:text>
1188 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">
1189 <xsl:attribute name="authority">
1190 <xsl:text>lcsh</xsl:text>
1194 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">
1195 <xsl:attribute name="authority">cash</xsl:attribute>
1198 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">
1199 <xsl:attribute name="authority">naf</xsl:attribute>
1202 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">
1203 <xsl:attribute name="authority">lcsh</xsl:attribute>
1206 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">
1207 <xsl:attribute name="authority">
1208 <xsl:text>lacnaf</xsl:text>
1212 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">
1213 <xsl:attribute name="authority">
1214 <xsl:text>cash</xsl:text>
1218 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='b'">
1219 <xsl:attribute name="authority">
1220 <xsl:text>lcshcl</xsl:text>
1224 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'">
1225 <xsl:attribute name="authority">
1226 <xsl:text>nlmnaf</xsl:text>
1230 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'">
1231 <xsl:attribute name="authority">
1232 <xsl:text>nalnaf</xsl:text>
1236 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='r'">
1237 <xsl:attribute name="authority">
1238 <xsl:text>aat</xsl:text>
1242 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='s'">
1243 <xsl:attribute name="authority">sears</xsl:attribute>
1246 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='v'">
1247 <xsl:attribute name="authority">rvm</xsl:attribute>
1250 test="100 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 155 and $controlField008-11='z'">
1251 <xsl:attribute name="authority">
1253 select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"
1258 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='a'">
1259 <xsl:attribute name="authority">
1260 <xsl:text>naf</xsl:text>
1264 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='b'">
1265 <xsl:attribute name="authority">
1266 <xsl:text>lcsh</xsl:text>
1270 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">
1271 <xsl:attribute name="authority">
1272 <xsl:text>lacnaf</xsl:text>
1276 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' ">
1277 <xsl:attribute name="authority">
1278 <xsl:text>lcsh</xsl:text>
1282 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' ">
1283 <xsl:attribute name="authority">
1284 <xsl:text>lcsh</xsl:text>
1288 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' ">
1289 <xsl:attribute name="authority">
1290 <xsl:text>mesh</xsl:text>
1294 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' ">
1295 <xsl:attribute name="authority">
1296 <xsl:text>nal</xsl:text>
1300 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' ">
1301 <xsl:attribute name="authority">
1302 <xsl:text>cash</xsl:text>
1306 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">
1307 <xsl:attribute name="authority">
1308 <xsl:text>naf</xsl:text>
1312 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">
1313 <xsl:attribute name="authority">lcsh</xsl:attribute>
1316 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">
1317 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1320 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">
1321 <xsl:attribute name="authority">cash</xsl:attribute>
1324 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'">
1325 <xsl:attribute name="authority">lcsh</xsl:attribute>
1328 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">
1329 <xsl:attribute name="authority">naf</xsl:attribute>
1332 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">
1333 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1335 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">
1336 <xsl:attribute name="authority">lcsh</xsl:attribute>
1338 <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">
1339 <xsl:attribute name="authority">cash</xsl:attribute>
1342 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='1'">
1343 <xsl:attribute name="authority">lcshcl</xsl:attribute>
1346 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'">
1347 <xsl:attribute name="authority">nlmnaf</xsl:attribute>
1350 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'">
1351 <xsl:attribute name="authority">nalnaf</xsl:attribute>
1354 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='6'">
1355 <xsl:attribute name="authority">rvm</xsl:attribute>
1358 test="(700 <= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag <= 755 ) and @ind2='7'">
1359 <xsl:attribute name="authority">
1360 <xsl:value-of select="marc:subfield[@code='2']"/>
1364 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'">
1365 <xsl:attribute name="authority">lacnaf</xsl:attribute>
1368 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'">
1369 <xsl:attribute name="authority">naf</xsl:attribute>
1372 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'">
1373 <xsl:attribute name="authority">lcsh</xsl:attribute>
1376 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'">
1377 <xsl:attribute name="authority">mesh</xsl:attribute>
1380 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'">
1381 <xsl:attribute name="authority">nal</xsl:attribute>
1384 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'">
1385 <xsl:attribute name="authority">cash</xsl:attribute>
1389 <xsl:template match="*"/>