]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xsl/MARC21slim2MADS.xsl
LP2045292 Color contrast for AngularJS patron bills
[working/Evergreen.git] / Open-ILS / xsl / MARC21slim2MADS.xsl
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <xsl:stylesheet version="1.0" xmlns:mads="http://www.loc.gov/mads/v2"\r
3         xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:marc="http://www.loc.gov/MARC21/slim"\r
4         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">\r
5 \r
6         <xsl:include href="MARC21slimUtils.xsl"/>\r
7         <xsl:output method="xml" indent="yes" encoding="UTF-8"/>\r
8         <xsl:strip-space elements="*"/>\r
9 \r
10 <!--\r
11 2.15    reversed genre and setAuthority template order under relatedTypeAttribute                       tmee 11/13/2018 \r
12 2.14    Fixed bug in mads:geographic attributes syntax                                                                          ws   05/04/2016         \r
13 2.13    fixed repeating <geographic>                                                                                                            tmee 01/31/2014\r
14 2.12    added $2 authority for <classification>                                                                                         tmee 09/18/2012\r
15 2.11    added delimiters between <classification> subfields                                                                     tmee 09/18/2012\r
16 2.10    fixed type="other" and type="otherType" for mads:related                                                        tmee 09/16/2011\r
17 2.09    fixed professionTerm and genreTerm empty tag error                                                                      tmee 09/16/2011\r
18 2.08    fixed marc:subfield @code='i' matching error                                                                            tmee 09/16/2011\r
19 2.07    fixed 555 duplication error                                                                                                                     tmee 08/10/2011 \r
20 2.06    fixed topic subfield error                                                                                                                      tmee 08/10/2011 \r
21 2.05    fixed title subfield error                                                                                                                      tmee 06/20/2011 \r
22 2.04    fixed geographicSubdivision mapping for authority element                                                       tmee 06/16/2011\r
23 2.03    added classification for 053, 055, 060, 065, 070, 080, 082, 083, 086, 087                       tmee 06/03/2011         \r
24 2.02    added descriptionStandard for 008/10                                                                                            tmee 04/27/2011\r
25 2.01    added extensions for 046, 336, 370, 374, 375, 376                                                                       tmee 04/08/2011\r
26 2.00    redefined imported MODS elements in version 1.0 to MADS elements in version 2.0         tmee 02/08/2011\r
27 1.08    added 372 subfields $a $s $t for <fieldOfActivity>                                                                      tmee 06/24/2010\r
28 1.07    removed role/roleTerm 100, 110, 111, 400, 410, 411, 500, 510, 511, 700, 710, 711        tmee 06/24/2010\r
29 1.06    added strip-space                                                                                                                                       tmee 06/24/2010\r
30 1.05    added subfield $a for 130, 430, 530                                                                                                     tmee 06/21/2010\r
31 1.04    fixed 550 z omission                                                                                                                            ntra 08/11/2008\r
32 1.03    removed duplication of 550 $a text                                                                                                      tmee 11/01/2006\r
33 1.02    fixed namespace references between mads and mods                                                                        ntra 10/06/2006\r
34 1.01    revised                                                                                                                                                         rgue/jrad 11/29/05\r
35 1.00    adapted from MARC21Slim2MODS3.xsl                                                                                                       ntra 07/06/05\r
36 -->\r
37 \r
38         <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->\r
39         <xsl:param name="authority"/>\r
40         <xsl:variable name="auth">\r
41                 <xsl:choose>\r
42                         <xsl:when test="$authority">\r
43                                 <xsl:value-of select="$authority"/>\r
44                         </xsl:when>\r
45                         <xsl:otherwise>naf</xsl:otherwise>\r
46                 </xsl:choose>\r
47         </xsl:variable>\r
48         <xsl:variable name="controlField008" select="marc:controlfield[@tag='008']"/>\r
49         <xsl:variable name="controlField008-06"\r
50                 select="substring(descendant-or-self::marc:controlfield[@tag=008],7,1)"/>\r
51         <xsl:variable name="controlField008-11"\r
52                 select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>\r
53         <xsl:variable name="controlField008-14"\r
54                 select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>\r
55         <xsl:template match="/">\r
56                 <xsl:choose>\r
57                         <xsl:when test="descendant-or-self::marc:collection">\r
58                                 <mads:madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
59                                         xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/v2/mads-2-0.xsd">\r
60                                         <xsl:for-each select="descendant-or-self::marc:collection/marc:record">\r
61                                                 <mads:mads version="2.0">\r
62                                                         <xsl:call-template name="marcRecord"/>\r
63                                                 </mads:mads>\r
64                                         </xsl:for-each>\r
65                                 </mads:madsCollection>\r
66                         </xsl:when>\r
67                         <xsl:otherwise>\r
68                                 <mads:mads version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
69                                         xsi:schemaLocation="http://www.loc.gov/mads/v2 http://www.loc.gov/standards/mads/mads-2-0.xsd">\r
70                                         <xsl:for-each select="descendant-or-self::marc:record">\r
71                                                 <xsl:call-template name="marcRecord"/>\r
72                                         </xsl:for-each>\r
73                                 </mads:mads>\r
74                         </xsl:otherwise>\r
75                 </xsl:choose>\r
76         </xsl:template>\r
77 \r
78         <xsl:template name="marcRecord">\r
79                 <mads:authority>\r
80                         <!-- 2.04 -->\r
81                         <xsl:choose>\r
82                                 <xsl:when test="$controlField008-06='d'">\r
83                                         <xsl:attribute name="geographicSubdivision">\r
84                                                 <xsl:text>direct</xsl:text>\r
85                                         </xsl:attribute>\r
86                                 </xsl:when>\r
87                                 <xsl:when test="$controlField008-06='i'">\r
88                                         <xsl:attribute name="geographicSubdivision">\r
89                                                 <xsl:text>indirect</xsl:text>\r
90                                         </xsl:attribute>\r
91                                 </xsl:when>\r
92                                 <xsl:when test="$controlField008-06='n'">\r
93                                         <xsl:attribute name="geographicSubdivision">\r
94                                                 <xsl:text>not applicable</xsl:text>\r
95                                         </xsl:attribute>\r
96                                 </xsl:when>\r
97                         </xsl:choose>\r
98                         \r
99                         <xsl:apply-templates select="marc:datafield[100 &lt;= @tag  and @tag &lt; 200]"/>               \r
100                 </mads:authority>\r
101 \r
102                 <!-- related -->\r
103                 <xsl:apply-templates\r
104                         select="marc:datafield[500 &lt;= @tag and @tag &lt;= 585]|marc:datafield[700 &lt;= @tag and @tag &lt;= 785]"/>\r
105 \r
106                 <!-- variant -->\r
107                 <xsl:apply-templates select="marc:datafield[400 &lt;= @tag and @tag &lt;= 485]"/>\r
108 \r
109                 <!-- notes -->\r
110                 <xsl:apply-templates select="marc:datafield[667 &lt;= @tag and @tag &lt;= 688]"/>\r
111 \r
112                 <!-- url -->\r
113                 <xsl:apply-templates select="marc:datafield[@tag=856]"/>\r
114                 <xsl:apply-templates select="marc:datafield[@tag=010]"/>\r
115                 <xsl:apply-templates select="marc:datafield[@tag=024]"/>\r
116                 <xsl:apply-templates select="marc:datafield[@tag=372]"/>\r
117                 \r
118                 <!-- classification -->\r
119                 <xsl:apply-templates select="marc:datafield[@tag=053]"/>\r
120                 <xsl:apply-templates select="marc:datafield[@tag=055]"/>\r
121                 <xsl:apply-templates select="marc:datafield[@tag=060]"/>\r
122                 <xsl:apply-templates select="marc:datafield[@tag=065]"/>\r
123                 <xsl:apply-templates select="marc:datafield[@tag=070]"/>\r
124                 <xsl:apply-templates select="marc:datafield[@tag=080]"/>\r
125                 <xsl:apply-templates select="marc:datafield[@tag=082]"/>\r
126                 <xsl:apply-templates select="marc:datafield[@tag=083]"/>\r
127                 <xsl:apply-templates select="marc:datafield[@tag=086]"/>\r
128                 <xsl:apply-templates select="marc:datafield[@tag=087]"/>\r
129 \r
130                 <!-- affiliation-->\r
131                 <xsl:for-each select="marc:datafield[@tag=373]">\r
132                         <mads:affiliation>\r
133                                 <mads:position>\r
134                                         <xsl:value-of select="marc:subfield[@code='a']"/>\r
135                                 </mads:position>\r
136                                 <mads:dateValid point="start">\r
137                                         <xsl:value-of select="marc:subfield[@code='s']"/>\r
138                                 </mads:dateValid>\r
139                                 <mads:dateValid point="end">\r
140                                         <xsl:value-of select="marc:subfield[@code='t']"/>\r
141                                 </mads:dateValid>\r
142                         </mads:affiliation>\r
143                 </xsl:for-each>\r
144                 <xsl:for-each select="marc:datafield[@tag=371]">\r
145                         <mads:affiliation>\r
146                                 <mads:address>\r
147                                         <mads:street>\r
148                                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
149                                         </mads:street>\r
150                                         <mads:city>\r
151                                                 <xsl:value-of select="marc:subfield[@code='b']"/>\r
152                                         </mads:city>\r
153                                         <mads:state>\r
154                                                 <xsl:value-of select="marc:subfield[@code='c']"/>\r
155                                         </mads:state>\r
156                                         <mads:country>\r
157                                                 <xsl:value-of select="marc:subfield[@code='d']"/>\r
158                                         </mads:country>\r
159                                         <mads:postcode>\r
160                                                 <xsl:value-of select="marc:subfield[@code='e']"/>\r
161                                         </mads:postcode>\r
162                                 </mads:address>\r
163                                 <mads:email>\r
164                                         <xsl:value-of select="marc:subfield[@code='m']"/>\r
165                                 </mads:email>\r
166                         </mads:affiliation>\r
167                 </xsl:for-each>\r
168 \r
169                 <!-- extension-->\r
170                 <xsl:for-each select="marc:datafield[@tag=336]">\r
171                         <mads:extension>\r
172                                 <mads:contentType>\r
173                                         <mads:contentType type="text">\r
174                                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
175                                         </mads:contentType>\r
176                                         <mads:contentType type="code">\r
177                                                 <xsl:value-of select="marc:subfield[@code='b']"/>\r
178                                         </mads:contentType>\r
179                                 </mads:contentType>\r
180                         </mads:extension>\r
181                 </xsl:for-each>\r
182 \r
183                 <xsl:for-each select="marc:datafield[@tag=374]">\r
184                         <mads:extension>\r
185                                 <mads:profession>\r
186                                         <xsl:choose>\r
187                                                 <xsl:when test="marc:subfield[@code='a']">\r
188                                                         <mads:professionTerm>\r
189                                                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
190                                                         </mads:professionTerm>\r
191                                                 </xsl:when>\r
192                                                 <xsl:when test="marc:subfield[@code='s']">\r
193                                                         <mads:dateValid point="start">\r
194                                                                 <xsl:value-of select="marc:subfield[@code='s']"/>\r
195                                                         </mads:dateValid>\r
196                                                 </xsl:when>\r
197                                                 <xsl:when test="marc:subfield[@code='t']">\r
198                                                         <mads:dateValid point="end">\r
199                                                                 <xsl:value-of select="marc:subfield[@code='t']"/>\r
200                                                         </mads:dateValid>\r
201                                                 </xsl:when>\r
202                                         </xsl:choose>\r
203                                 </mads:profession>\r
204                         </mads:extension>\r
205                 </xsl:for-each>\r
206                 \r
207                 <xsl:for-each select="marc:datafield[@tag=375]">\r
208                         <mads:extension>\r
209                                 <mads:gender>\r
210                                         <xsl:choose>\r
211                                                 <xsl:when test="marc:subfield[@code='a']">\r
212                                                         <mads:genderTerm>\r
213                                                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
214                                                         </mads:genderTerm>\r
215                                                 </xsl:when>\r
216                                                 <xsl:when test="marc:subfield[@code='s']">\r
217                                                         <mads:dateValid point="start">\r
218                                                                 <xsl:value-of select="marc:subfield[@code='s']"/>\r
219                                                         </mads:dateValid>\r
220                                                 </xsl:when>\r
221                                                 <xsl:when test="marc:subfield[@code='t']">\r
222                                                         <mads:dateValid point="end">\r
223                                                                 <xsl:value-of select="marc:subfield[@code='t']"/>\r
224                                                         </mads:dateValid>\r
225                                                 </xsl:when>\r
226                                         </xsl:choose>\r
227                                 </mads:gender>\r
228                         </mads:extension>\r
229                 </xsl:for-each>\r
230 \r
231                 <xsl:for-each select="marc:datafield[@tag=376]">\r
232                         <mads:extension>\r
233                                 <mads:familyInformation>\r
234                                         <mads:typeOfFamily>\r
235                                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
236                                         </mads:typeOfFamily>\r
237                                         <mads:nameOfProminentMember>\r
238                                                 <xsl:value-of select="marc:subfield[@code='b']"/>\r
239                                         </mads:nameOfProminentMember>\r
240                                         <mads:hereditaryTitle>\r
241                                                 <xsl:value-of select="marc:subfield[@code='c']"/>\r
242                                         </mads:hereditaryTitle>\r
243                                         <mads:dateValid point="start">\r
244                                                 <xsl:value-of select="marc:subfield[@code='s']"/>\r
245                                         </mads:dateValid>\r
246                                         <mads:dateValid point="end">\r
247                                                 <xsl:value-of select="marc:subfield[@code='t']"/>\r
248                                         </mads:dateValid>\r
249                                 </mads:familyInformation>\r
250                         </mads:extension>\r
251                 </xsl:for-each>\r
252 \r
253                 <mads:recordInfo>\r
254                         <mads:recordOrigin>Converted from MARCXML to MADS version 2.0 (Revision 2.13)</mads:recordOrigin>\r
255                         <!-- <xsl:apply-templates select="marc:datafield[@tag=024]"/> -->\r
256 \r
257                         <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>\r
258                         <xsl:apply-templates select="marc:controlfield[@tag=005]"/>\r
259                         <xsl:apply-templates select="marc:controlfield[@tag=001]"/>\r
260                         <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>\r
261                         <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='e']"/>\r
262                         <xsl:for-each select="marc:controlfield[@tag=008]">\r
263                                 <xsl:if test="substring(.,11,1)='a'">\r
264                                         <mads:descriptionStandard>\r
265                                                 <xsl:text>earlier rules</xsl:text>\r
266                                         </mads:descriptionStandard>\r
267                                 </xsl:if>\r
268                                 <xsl:if test="substring(.,11,1)='b'">\r
269                                         <mads:descriptionStandard>\r
270                                                 <xsl:text>aacr1</xsl:text>\r
271                                         </mads:descriptionStandard>\r
272                                 </xsl:if>\r
273                                 <xsl:if test="substring(.,11,1)='c'">\r
274                                         <mads:descriptionStandard>\r
275                                                 <xsl:text>aacr2</xsl:text>\r
276                                         </mads:descriptionStandard>\r
277                                 </xsl:if>\r
278                                 <xsl:if test="substring(.,11,1)='d'">\r
279                                         <mads:descriptionStandard>\r
280                                                 <xsl:text>aacr2 compatible</xsl:text>\r
281                                         </mads:descriptionStandard>\r
282                                 </xsl:if>\r
283                                 <xsl:if test="substring(.,11,1)='z'">\r
284                                         <mads:descriptionStandard>\r
285                                                 <xsl:text>other rules</xsl:text>\r
286                                         </mads:descriptionStandard>\r
287                                 </xsl:if>\r
288                         </xsl:for-each>\r
289                 </mads:recordInfo>\r
290         </xsl:template>\r
291 \r
292         <!-- start of secondary templates -->\r
293 \r
294         <!-- ======== xlink ======== -->\r
295 \r
296         <!-- <xsl:template name="uri"> \r
297     <xsl:for-each select="marc:subfield[@code='0']">\r
298       <xsl:attribute name="xlink:href">\r
299         <xsl:value-of select="."/>\r
300       </xsl:attribute>\r
301     </xsl:for-each>\r
302      </xsl:template> \r
303    -->\r
304         <xsl:template match="marc:subfield[@code='i']">\r
305                 <xsl:attribute name="otherType">\r
306                         <xsl:value-of select="."/>\r
307                 </xsl:attribute>\r
308         </xsl:template>\r
309 \r
310         <!-- No role/roleTerm mapped in MADS 06/24/2010\r
311         <xsl:template name="role">\r
312                 <xsl:for-each select="marc:subfield[@code='e']">\r
313                         <mads:role>\r
314                                 <mads:roleTerm type="text">\r
315                                         <xsl:value-of select="."/>\r
316                                 </mads:roleTerm>\r
317                         </mads:role>\r
318                 </xsl:for-each>\r
319         </xsl:template>\r
320 -->\r
321 \r
322         <xsl:template name="part">\r
323                 <xsl:variable name="partNumber">\r
324                         <xsl:call-template name="specialSubfieldSelect">\r
325                                 <xsl:with-param name="axis">n</xsl:with-param>\r
326                                 <xsl:with-param name="anyCodes">n</xsl:with-param>\r
327                                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>\r
328                         </xsl:call-template>\r
329                 </xsl:variable>\r
330                 <xsl:variable name="partName">\r
331                         <xsl:call-template name="specialSubfieldSelect">\r
332                                 <xsl:with-param name="axis">p</xsl:with-param>\r
333                                 <xsl:with-param name="anyCodes">p</xsl:with-param>\r
334                                 <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>\r
335                         </xsl:call-template>\r
336                 </xsl:variable>\r
337                 <xsl:if test="string-length(normalize-space($partNumber))">\r
338                         <mads:partNumber>\r
339                                 <xsl:call-template name="chopPunctuation">\r
340                                         <xsl:with-param name="chopString" select="$partNumber"/>\r
341                                 </xsl:call-template>\r
342                         </mads:partNumber>\r
343                 </xsl:if>\r
344                 <xsl:if test="string-length(normalize-space($partName))">\r
345                         <mads:partName>\r
346                                 <xsl:call-template name="chopPunctuation">\r
347                                         <xsl:with-param name="chopString" select="$partName"/>\r
348                                 </xsl:call-template>\r
349                         </mads:partName>\r
350                 </xsl:if>\r
351         </xsl:template>\r
352 \r
353         <xsl:template name="nameABCDN">\r
354                 <xsl:for-each select="marc:subfield[@code='a']">\r
355                         <mads:namePart>\r
356                                 <xsl:call-template name="chopPunctuation">\r
357                                         <xsl:with-param name="chopString" select="."/>\r
358                                 </xsl:call-template>\r
359                         </mads:namePart>\r
360                 </xsl:for-each>\r
361                 <xsl:for-each select="marc:subfield[@code='b']">\r
362                         <mads:namePart>\r
363                                 <xsl:value-of select="."/>\r
364                         </mads:namePart>\r
365                 </xsl:for-each>\r
366                 <xsl:if\r
367                         test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">\r
368                         <mads:namePart>\r
369                                 <xsl:call-template name="subfieldSelect">\r
370                                         <xsl:with-param name="codes">cdn</xsl:with-param>\r
371                                 </xsl:call-template>\r
372                         </mads:namePart>\r
373                 </xsl:if>\r
374         </xsl:template>\r
375 \r
376         <xsl:template name="nameABCDQ">\r
377                 <mads:namePart>\r
378                         <xsl:call-template name="chopPunctuation">\r
379                                 <xsl:with-param name="chopString">\r
380                                         <xsl:call-template name="subfieldSelect">\r
381                                                 <xsl:with-param name="codes">aq</xsl:with-param>\r
382                                         </xsl:call-template>\r
383                                 </xsl:with-param>\r
384                         </xsl:call-template>\r
385                 </mads:namePart>\r
386                 <xsl:call-template name="termsOfAddress"/>\r
387                 <xsl:call-template name="nameDate"/>\r
388         </xsl:template>\r
389 \r
390         <xsl:template name="nameACDENQ">\r
391                 <mads:namePart>\r
392                         <xsl:call-template name="subfieldSelect">\r
393                                 <xsl:with-param name="codes">acdenq</xsl:with-param>\r
394                         </xsl:call-template>\r
395                 </mads:namePart>\r
396         </xsl:template>\r
397 \r
398         <xsl:template name="nameDate">\r
399                 <xsl:for-each select="marc:subfield[@code='d']">\r
400                         <mads:namePart type="date">\r
401                                 <xsl:call-template name="chopPunctuation">\r
402                                         <xsl:with-param name="chopString" select="."/>\r
403                                 </xsl:call-template>\r
404                         </mads:namePart>\r
405                 </xsl:for-each>\r
406         </xsl:template>\r
407 \r
408         <xsl:template name="specialSubfieldSelect">\r
409                 <xsl:param name="anyCodes"/>\r
410                 <xsl:param name="axis"/>\r
411                 <xsl:param name="beforeCodes"/>\r
412                 <xsl:param name="afterCodes"/>\r
413                 <xsl:variable name="str">\r
414                         <xsl:for-each select="marc:subfield">\r
415                                 <xsl:if\r
416                                         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])">\r
417                                         <xsl:value-of select="text()"/>\r
418                                         <xsl:text> </xsl:text>\r
419                                 </xsl:if>\r
420                         </xsl:for-each>\r
421                 </xsl:variable>\r
422                 <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
423         </xsl:template>\r
424 \r
425         <xsl:template name="termsOfAddress">\r
426                 <xsl:if test="marc:subfield[@code='b' or @code='c']">\r
427                         <mads:namePart type="termsOfAddress">\r
428                                 <xsl:call-template name="chopPunctuation">\r
429                                         <xsl:with-param name="chopString">\r
430                                                 <xsl:call-template name="subfieldSelect">\r
431                                                         <xsl:with-param name="codes">bc</xsl:with-param>\r
432                                                 </xsl:call-template>\r
433                                         </xsl:with-param>\r
434                                 </xsl:call-template>\r
435                         </mads:namePart>\r
436                 </xsl:if>\r
437         </xsl:template>\r
438 \r
439         <xsl:template name="displayLabel">\r
440                 <xsl:if test="marc:subfield[@code='z']">\r
441                         <xsl:attribute name="displayLabel">\r
442                                 <xsl:value-of select="marc:subfield[@code='z']"/>\r
443                         </xsl:attribute>\r
444                 </xsl:if>\r
445                 <xsl:if test="marc:subfield[@code='3']">\r
446                         <xsl:attribute name="displayLabel">\r
447                                 <xsl:value-of select="marc:subfield[@code='3']"/>\r
448                         </xsl:attribute>\r
449                 </xsl:if>\r
450         </xsl:template>\r
451 \r
452         <xsl:template name="isInvalid">\r
453                 <xsl:if test="@code='z'">\r
454                         <xsl:attribute name="invalid">yes</xsl:attribute>\r
455                 </xsl:if>\r
456         </xsl:template>\r
457 \r
458         <xsl:template name="sub2Attribute">\r
459                 <!-- 024 -->\r
460                 <xsl:if test="../marc:subfield[@code='2']">\r
461                         <xsl:attribute name="type">\r
462                                 <xsl:value-of select="../marc:subfield[@code='2']"/>\r
463                         </xsl:attribute>\r
464                 </xsl:if>\r
465         </xsl:template>\r
466 \r
467         <xsl:template match="marc:controlfield[@tag=001]">\r
468                 <mads:recordIdentifier>\r
469                         <xsl:if test="../marc:controlfield[@tag=003]">\r
470                                 <xsl:attribute name="source">\r
471                                         <xsl:value-of select="../marc:controlfield[@tag=003]"/>\r
472                                 </xsl:attribute>\r
473                         </xsl:if>\r
474                         <xsl:value-of select="."/>\r
475                 </mads:recordIdentifier>\r
476         </xsl:template>\r
477 \r
478         <xsl:template match="marc:controlfield[@tag=005]">\r
479                 <mads:recordChangeDate encoding="iso8601">\r
480                         <xsl:value-of select="."/>\r
481                 </mads:recordChangeDate>\r
482         </xsl:template>\r
483 \r
484         <xsl:template match="marc:controlfield[@tag=008]">\r
485                 <mads:recordCreationDate encoding="marc">\r
486                         <xsl:value-of select="substring(.,1,6)"/>\r
487                 </mads:recordCreationDate>\r
488         </xsl:template>\r
489 \r
490         <xsl:template match="marc:datafield[@tag=010]">\r
491                 <xsl:for-each select="marc:subfield">\r
492                         <mads:identifier type="lccn">\r
493                                 <xsl:call-template name="isInvalid"/>\r
494                                 <xsl:value-of select="."/>\r
495                         </mads:identifier>\r
496                 </xsl:for-each>\r
497         </xsl:template>\r
498 \r
499         <xsl:template match="marc:datafield[@tag=024]">\r
500                 <xsl:for-each select="marc:subfield[not(@code=2)]">\r
501                         <mads:identifier>\r
502                                 <xsl:call-template name="isInvalid"/>\r
503                                 <xsl:call-template name="sub2Attribute"/>\r
504                                 <xsl:value-of select="."/>\r
505                         </mads:identifier>\r
506                 </xsl:for-each>\r
507         </xsl:template>\r
508 \r
509         <!-- ========== 372 ========== -->\r
510         <xsl:template match="marc:datafield[@tag=372]">\r
511                 <mads:fieldOfActivity>\r
512                         <xsl:call-template name="subfieldSelect">\r
513                                 <xsl:with-param name="codes">a</xsl:with-param>\r
514                         </xsl:call-template>\r
515                         <xsl:text>-</xsl:text>\r
516                         <xsl:call-template name="subfieldSelect">\r
517                                 <xsl:with-param name="codes">st</xsl:with-param>\r
518                         </xsl:call-template>\r
519                 </mads:fieldOfActivity>\r
520         </xsl:template>\r
521 \r
522 \r
523         <!-- ========== 040 ========== -->\r
524         <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">\r
525                 <mads:recordContentSource authority="marcorg">\r
526                         <xsl:value-of select="."/>\r
527                 </mads:recordContentSource>\r
528         </xsl:template>\r
529 \r
530         <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">\r
531                 <mads:languageOfCataloging>\r
532                         <mads:languageTerm authority="iso639-2b" type="code">\r
533                                 <xsl:value-of select="."/>\r
534                         </mads:languageTerm>\r
535                 </mads:languageOfCataloging>\r
536         </xsl:template>\r
537 \r
538         <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='e']">\r
539                 <mads:descriptionStandard>\r
540                         <xsl:value-of select="."/>\r
541                 </mads:descriptionStandard>\r
542         </xsl:template>\r
543         \r
544         <!-- ========== classification 2.03 ========== -->\r
545         \r
546         <xsl:template match="marc:datafield[@tag=053]">\r
547                 <mads:classification>\r
548                         <xsl:call-template name="subfieldSelect">\r
549                                 <xsl:with-param name="codes">abcdxyz</xsl:with-param>\r
550                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
551                         </xsl:call-template>\r
552                 </mads:classification>\r
553         </xsl:template>\r
554         \r
555         <xsl:template match="marc:datafield[@tag=055]">\r
556                 <mads:classification>\r
557                         <xsl:call-template name="subfieldSelect">\r
558                                 <xsl:with-param name="codes">abcdxyz</xsl:with-param>\r
559                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
560                         </xsl:call-template>\r
561                 </mads:classification>\r
562         </xsl:template>\r
563         \r
564         <xsl:template match="marc:datafield[@tag=060]">\r
565                 <mads:classification>\r
566                         <xsl:call-template name="subfieldSelect">\r
567                                 <xsl:with-param name="codes">abcdxyz</xsl:with-param>\r
568                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
569                         </xsl:call-template>\r
570                 </mads:classification>\r
571         </xsl:template>\r
572         <xsl:template match="marc:datafield[@tag=065]">\r
573                 <mads:classification>\r
574                         <xsl:attribute name="authority">\r
575                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
576                         </xsl:attribute>\r
577                         <xsl:call-template name="subfieldSelect">\r
578                                 <xsl:with-param name="codes">abcdxyz</xsl:with-param>\r
579                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
580                         </xsl:call-template>\r
581                 </mads:classification>\r
582         </xsl:template>\r
583         <xsl:template match="marc:datafield[@tag=070]">\r
584                 <mads:classification>\r
585                         <xsl:call-template name="subfieldSelect">\r
586                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
587                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
588                         </xsl:call-template>\r
589                 </mads:classification>\r
590         </xsl:template>\r
591         <xsl:template match="marc:datafield[@tag=080]">\r
592                 <mads:classification>\r
593                         <xsl:attribute name="authority">\r
594                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
595                         </xsl:attribute>\r
596                         <xsl:call-template name="subfieldSelect">\r
597                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
598                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
599                         </xsl:call-template>\r
600                 </mads:classification>\r
601         </xsl:template>\r
602         <xsl:template match="marc:datafield[@tag=082]">\r
603                 <mads:classification>\r
604                         <xsl:attribute name="authority">\r
605                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
606                         </xsl:attribute>\r
607                         <xsl:call-template name="subfieldSelect">\r
608                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
609                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
610                         </xsl:call-template>\r
611                 </mads:classification>\r
612         </xsl:template>\r
613         <xsl:template match="marc:datafield[@tag=083]">\r
614                 <mads:classification>\r
615                         <xsl:attribute name="authority">\r
616                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
617                         </xsl:attribute>\r
618                         <xsl:call-template name="subfieldSelect">\r
619                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
620                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
621                         </xsl:call-template>\r
622                 </mads:classification>\r
623         </xsl:template>\r
624         <xsl:template match="marc:datafield[@tag=086]">\r
625                 <mads:classification>\r
626                         <xsl:attribute name="authority">\r
627                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
628                         </xsl:attribute>\r
629                         <xsl:call-template name="subfieldSelect">\r
630                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
631                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
632                         </xsl:call-template>\r
633                 </mads:classification>\r
634         </xsl:template>\r
635         <xsl:template match="marc:datafield[@tag=087]">\r
636                 <mads:classification>\r
637                         <xsl:attribute name="authority">\r
638                                 <xsl:value-of select="marc:subfield[@code='2']"/>\r
639                         </xsl:attribute>\r
640                         <xsl:call-template name="subfieldSelect">\r
641                                 <xsl:with-param name="codes">abcdxyz5</xsl:with-param>\r
642                                 <xsl:with-param name="delimeter">-</xsl:with-param>\r
643                         </xsl:call-template>\r
644                 </mads:classification>\r
645         </xsl:template>\r
646         \r
647 \r
648         <!-- ========== names  ========== -->\r
649         <xsl:template match="marc:datafield[@tag=100]">\r
650                 <mads:name type="personal">\r
651                         <xsl:call-template name="setAuthority"/>\r
652                         <xsl:call-template name="nameABCDQ"/>\r
653                 </mads:name>\r
654                 <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>\r
655                 <xsl:call-template name="title"/>\r
656                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
657         </xsl:template>\r
658 \r
659         <xsl:template match="marc:datafield[@tag=110]">\r
660                 <mads:name type="corporate">\r
661                         <xsl:call-template name="setAuthority"/>\r
662                         <xsl:call-template name="nameABCDN"/>\r
663                 </mads:name>\r
664                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
665         </xsl:template>\r
666 \r
667         <xsl:template match="marc:datafield[@tag=111]">\r
668                 <mads:name type="conference">\r
669                         <xsl:call-template name="setAuthority"/>\r
670                         <xsl:call-template name="nameACDENQ"/>\r
671                 </mads:name>\r
672                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
673         </xsl:template>\r
674 \r
675         <xsl:template match="marc:datafield[@tag=400]">\r
676                 <mads:variant>\r
677                         <xsl:call-template name="variantTypeAttribute"/>\r
678                         <mads:name type="personal">\r
679                                 <xsl:call-template name="nameABCDQ"/>\r
680                         </mads:name>\r
681                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
682                         <xsl:call-template name="title"/>\r
683                 </mads:variant>\r
684         </xsl:template>\r
685 \r
686         <xsl:template match="marc:datafield[@tag=410]">\r
687                 <mads:variant>\r
688                         <xsl:call-template name="variantTypeAttribute"/>\r
689                         <mads:name type="corporate">\r
690                                 <xsl:call-template name="nameABCDN"/>\r
691                         </mads:name>\r
692                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
693                 </mads:variant>\r
694         </xsl:template>\r
695 \r
696         <xsl:template match="marc:datafield[@tag=411]">\r
697                 <mads:variant>\r
698                         <xsl:call-template name="variantTypeAttribute"/>\r
699                         <mads:name type="conference">\r
700                                 <xsl:call-template name="nameACDENQ"/>\r
701                         </mads:name>\r
702                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
703                 </mads:variant>\r
704         </xsl:template>\r
705 \r
706         <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">\r
707                 <mads:related>\r
708                         <xsl:call-template name="relatedTypeAttribute"/>\r
709                         <!-- <xsl:call-template name="uri"/> -->\r
710                         <mads:name type="personal">\r
711                                 <xsl:call-template name="setAuthority"/>\r
712                                 <xsl:call-template name="nameABCDQ"/>\r
713                         </mads:name>\r
714                         <xsl:call-template name="title"/>\r
715                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
716                 </mads:related>\r
717         </xsl:template>\r
718 \r
719         <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">\r
720                 <mads:related>\r
721                         <xsl:call-template name="relatedTypeAttribute"/>\r
722                         <!-- <xsl:call-template name="uri"/> -->\r
723                         <mads:name type="corporate">\r
724                                 <xsl:call-template name="setAuthority"/>\r
725                                 <xsl:call-template name="nameABCDN"/>\r
726                         </mads:name>\r
727                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
728                 </mads:related>\r
729         </xsl:template>\r
730 \r
731         <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">\r
732                 <mads:related>\r
733                         <xsl:call-template name="relatedTypeAttribute"/>\r
734                         <!-- <xsl:call-template name="uri"/> -->\r
735                         <mads:name type="conference">\r
736                                 <xsl:call-template name="setAuthority"/>\r
737                                 <xsl:call-template name="nameACDENQ"/>\r
738                         </mads:name>\r
739                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
740                 </mads:related>\r
741         </xsl:template>\r
742 \r
743         <!-- ========== titles  ========== -->\r
744         <xsl:template match="marc:datafield[@tag=130]">\r
745                 <xsl:call-template name="uniform-title"/>\r
746                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
747         </xsl:template>\r
748 \r
749         <xsl:template match="marc:datafield[@tag=430]">\r
750                 <mads:variant>\r
751                         <xsl:call-template name="variantTypeAttribute"/>\r
752                         <xsl:call-template name="uniform-title"/>\r
753                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
754                 </mads:variant>\r
755         </xsl:template>\r
756 \r
757         <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">\r
758                 <mads:related>\r
759                         <xsl:call-template name="relatedTypeAttribute"/>\r
760                         <xsl:call-template name="uniform-title"/>\r
761                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
762                 </mads:related>\r
763         </xsl:template>\r
764 \r
765         <xsl:template name="title">\r
766                 <xsl:variable name="hasTitle">\r
767                         <xsl:for-each select="marc:subfield">\r
768                                 <xsl:if test="(contains('tfghklmors',@code) )">\r
769                                         <xsl:value-of select="@code"/>\r
770                                 </xsl:if>\r
771                         </xsl:for-each>\r
772                 </xsl:variable>\r
773                 <xsl:if test="string-length($hasTitle) &gt; 0 ">\r
774                         <mads:titleInfo>\r
775                                 <xsl:call-template name="setAuthority"/>\r
776                                 <mads:title>\r
777                                         <xsl:variable name="str">\r
778                                                 <xsl:for-each select="marc:subfield">\r
779                                                         <xsl:if test="(contains('atfghklmors',@code) )">\r
780                                                                 <xsl:value-of select="text()"/>\r
781                                                                 <xsl:text> </xsl:text>\r
782                                                         </xsl:if>\r
783                                                 </xsl:for-each>\r
784                                         </xsl:variable>\r
785                                         <xsl:call-template name="chopPunctuation">\r
786                                                 <xsl:with-param name="chopString">\r
787                                                         <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
788                                                 </xsl:with-param>\r
789                                         </xsl:call-template>\r
790                                 </mads:title>\r
791                                 <xsl:call-template name="part"/>\r
792                                 <!-- <xsl:call-template name="uri"/> -->\r
793                         </mads:titleInfo>\r
794                 </xsl:if>\r
795         </xsl:template>\r
796 \r
797         <xsl:template name="uniform-title">\r
798                 <xsl:variable name="hasTitle">\r
799                         <xsl:for-each select="marc:subfield">\r
800                                 <xsl:if test="(contains('atfghklmors',@code) )">\r
801                                         <xsl:value-of select="@code"/>\r
802                                 </xsl:if>\r
803                         </xsl:for-each>\r
804                 </xsl:variable>\r
805                 <xsl:if test="string-length($hasTitle) &gt; 0 ">\r
806                         <mads:titleInfo>\r
807                                 <xsl:call-template name="setAuthority"/>\r
808                                 <mads:title>\r
809                                         <xsl:variable name="str">\r
810                                                 <xsl:for-each select="marc:subfield">\r
811                                                         <xsl:if test="(contains('adfghklmors',@code) )">\r
812                                                                 <xsl:value-of select="text()"/>\r
813                                                                 <xsl:text> </xsl:text>\r
814                                                         </xsl:if>\r
815                                                 </xsl:for-each>\r
816                                         </xsl:variable>\r
817                                         <xsl:call-template name="chopPunctuation">\r
818                                                 <xsl:with-param name="chopString">\r
819                                                         <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
820                                                 </xsl:with-param>\r
821                                         </xsl:call-template>\r
822                                 </mads:title>\r
823                                 <xsl:call-template name="part"/>\r
824                                 <!-- <xsl:call-template name="uri"/> -->\r
825                         </mads:titleInfo>\r
826                 </xsl:if>\r
827         </xsl:template>\r
828 \r
829 \r
830         <!-- ========== topics  ========== -->\r
831         <xsl:template match="marc:subfield[@code='x']">\r
832                 <mads:topic>\r
833                         <xsl:call-template name="chopPunctuation">\r
834                                 <xsl:with-param name="chopString">\r
835                                         <xsl:value-of select="."/>\r
836                                 </xsl:with-param>\r
837                         </xsl:call-template>\r
838                 </mads:topic>\r
839         </xsl:template>\r
840         \r
841         <!-- 2.06 fix -->\r
842         <xsl:template\r
843                 match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">\r
844                 <xsl:call-template name="topic"/>\r
845                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
846         </xsl:template>\r
847         <xsl:template\r
848                 match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">\r
849                 <mads:variant>\r
850                         <xsl:call-template name="variantTypeAttribute"/>\r
851                         <xsl:call-template name="topic"/>\r
852                 </mads:variant>\r
853         </xsl:template>\r
854         <xsl:template\r
855                 match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">\r
856                 <mads:related>\r
857                         <xsl:call-template name="relatedTypeAttribute"/>\r
858                         <!-- <xsl:call-template name="uri"/> -->\r
859                         <xsl:call-template name="topic"/>\r
860                         <xsl:apply-templates select="marc:subfield[@code='z']"/>\r
861                 </mads:related>\r
862         </xsl:template>\r
863         <xsl:template name="topic">\r
864                 <mads:topic>\r
865                         <xsl:call-template name="setAuthority"/>\r
866                         <!-- tmee2006 dedupe 550a\r
867                         <xsl:if test="@tag=550 or @tag=750">\r
868                                 <xsl:call-template name="subfieldSelect">\r
869                                         <xsl:with-param name="codes">ab</xsl:with-param>\r
870                                 </xsl:call-template>\r
871                         </xsl:if>       \r
872                         -->\r
873                         <xsl:choose>\r
874                                 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">\r
875                                         <xsl:call-template name="chopPunctuation">\r
876                                                 <xsl:with-param name="chopString">\r
877                                                         <xsl:apply-templates select="marc:subfield[@code='x']"/>\r
878                                                 </xsl:with-param>\r
879                                         </xsl:call-template>\r
880                                 </xsl:when>\r
881                         </xsl:choose>\r
882                         <xsl:call-template name="chopPunctuation">\r
883                                 <xsl:with-param name="chopString">\r
884                                         <xsl:choose>\r
885                                                 <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">\r
886                                                         <xsl:apply-templates select="marc:subfield[@code='x']"/>\r
887                                                 </xsl:when>\r
888                                                 <xsl:otherwise>\r
889                                                         <xsl:call-template name="subfieldSelect">\r
890                                                                 <xsl:with-param name="codes">ab</xsl:with-param>\r
891                                                         </xsl:call-template>\r
892                                                 </xsl:otherwise>\r
893                                         </xsl:choose>\r
894                                 </xsl:with-param>\r
895                         </xsl:call-template>\r
896                 </mads:topic>\r
897         </xsl:template>\r
898 \r
899         <!-- ========= temporals  ========== -->\r
900         <xsl:template match="marc:subfield[@code='y']">\r
901                 <mads:temporal>\r
902                         <xsl:call-template name="chopPunctuation">\r
903                                 <xsl:with-param name="chopString">\r
904                                         <xsl:value-of select="."/>\r
905                                 </xsl:with-param>\r
906                         </xsl:call-template>\r
907                 </mads:temporal>\r
908         </xsl:template>\r
909         <xsl:template\r
910                 match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">\r
911                 <xsl:call-template name="temporal"/>\r
912         </xsl:template>\r
913         <xsl:template\r
914                 match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">\r
915                 <mads:variant>\r
916                         <xsl:call-template name="variantTypeAttribute"/>\r
917                         <xsl:call-template name="temporal"/>\r
918                 </mads:variant>\r
919         </xsl:template>\r
920         <xsl:template\r
921                 match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">\r
922                 <mads:related>\r
923                         <xsl:call-template name="relatedTypeAttribute"/>\r
924                         <!-- <xsl:call-template name="uri"/> -->\r
925                         <xsl:call-template name="temporal"/>\r
926                 </mads:related>\r
927         </xsl:template>\r
928         <xsl:template name="temporal">\r
929                 <mads:temporal>\r
930                         <xsl:call-template name="setAuthority"/>\r
931                         <xsl:if test="@tag=548 or @tag=748">\r
932                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
933                         </xsl:if>\r
934                         <xsl:call-template name="chopPunctuation">\r
935                                 <xsl:with-param name="chopString">\r
936                                         <xsl:choose>\r
937                                                 <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">\r
938                                                         <xsl:apply-templates select="marc:subfield[@code='y']"/>\r
939                                                 </xsl:when>\r
940                                                 <xsl:otherwise>\r
941                                                         <xsl:value-of select="marc:subfield[@code='a']"/>\r
942                                                 </xsl:otherwise>\r
943                                         </xsl:choose>\r
944                                 </xsl:with-param>\r
945                         </xsl:call-template>\r
946                 </mads:temporal>\r
947                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
948         </xsl:template>\r
949 \r
950         <!-- ========== genre  ========== -->\r
951         <xsl:template match="marc:subfield[@code='v']">\r
952                 <mads:genre>\r
953                         <xsl:call-template name="chopPunctuation">\r
954                                 <xsl:with-param name="chopString">\r
955                                         <xsl:value-of select="."/>\r
956                                 </xsl:with-param>\r
957                         </xsl:call-template>\r
958                 </mads:genre>\r
959         </xsl:template>\r
960         <xsl:template\r
961                 match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">\r
962                 <xsl:call-template name="genre"/>\r
963         </xsl:template>\r
964         <xsl:template\r
965                 match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">\r
966                 <mads:variant>\r
967                         <xsl:call-template name="variantTypeAttribute"/>\r
968                         <xsl:call-template name="genre"/>\r
969                 </mads:variant>\r
970         </xsl:template>\r
971         <!--\r
972         <xsl:template match="marc:datafield[@tag=555]">\r
973                 <mads:related>\r
974                         <xsl:call-template name="relatedTypeAttribute"/>\r
975                         <xsl:call-template name="uri"/>\r
976                         <xsl:call-template name="genre"/>\r
977                 </mads:related>\r
978         </xsl:template>\r
979         -->\r
980         <xsl:template\r
981                 match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">\r
982                 <mads:related>\r
983                         <xsl:call-template name="relatedTypeAttribute"/>\r
984                         <xsl:call-template name="genre"/>\r
985                 </mads:related>\r
986         </xsl:template>\r
987         <xsl:template name="genre">\r
988                 <mads:genre>\r
989                         <xsl:if test="@tag=555">\r
990                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
991                         </xsl:if>\r
992                         <xsl:call-template name="setAuthority"/>\r
993                         <xsl:call-template name="chopPunctuation">\r
994                                 <xsl:with-param name="chopString">\r
995                                         <xsl:choose>\r
996                                                 <!-- 2.07 fix -->\r
997                                                 <xsl:when test="@tag='555'"/>\r
998                                                 <xsl:when test="@tag=185 or @tag=485 or @tag=585">\r
999                                                         <xsl:apply-templates select="marc:subfield[@code='v']"/>\r
1000                                                 </xsl:when>\r
1001                                                 <xsl:otherwise>\r
1002                                                         <xsl:value-of select="marc:subfield[@code='a']"/>\r
1003                                                 </xsl:otherwise>\r
1004                                         </xsl:choose>\r
1005                                 </xsl:with-param>\r
1006                         </xsl:call-template>\r
1007                 </mads:genre>\r
1008                 <xsl:apply-templates/>\r
1009         </xsl:template>\r
1010 \r
1011         <!-- ========= geographic  ========== -->\r
1012         <xsl:template match="marc:subfield[@code='z']">\r
1013                 <mads:geographic>\r
1014                         <xsl:call-template name="chopPunctuation">\r
1015                                 <xsl:with-param name="chopString">\r
1016                                         <xsl:value-of select="."/>\r
1017                                 </xsl:with-param>\r
1018                         </xsl:call-template>\r
1019                 </mads:geographic>\r
1020         </xsl:template>\r
1021         <xsl:template name="geographic">\r
1022                 <mads:geographic>\r
1023                         <!-- 2.14 -->\r
1024                         <xsl:call-template name="setAuthority"/>\r
1025                         <!-- 2.13 -->\r
1026                         <xsl:if test="@tag=151 or @tag=551">\r
1027                                 <xsl:value-of select="marc:subfield[@code='a']"/>\r
1028                         </xsl:if>\r
1029                         <xsl:call-template name="chopPunctuation">\r
1030                                 <xsl:with-param name="chopString">\r
1031                                                 <xsl:if test="@tag=181 or @tag=481 or @tag=581">\r
1032                                                                 <xsl:apply-templates select="marc:subfield[@code='z']"/>\r
1033                                                 </xsl:if>\r
1034                                                 <!-- 2.13\r
1035                                                         <xsl:choose>\r
1036                                                 <xsl:when test="@tag=181 or @tag=481 or @tag=581">\r
1037                                                         <xsl:apply-templates select="marc:subfield[@code='z']"/>\r
1038                                                 </xsl:when>\r
1039                                         \r
1040                                                 <xsl:otherwise>\r
1041                                                         <xsl:value-of select="marc:subfield[@code='a']"/>\r
1042                                                 </xsl:otherwise>\r
1043                                                 </xsl:choose>\r
1044                                                 -->\r
1045                                 </xsl:with-param>\r
1046                         </xsl:call-template>\r
1047                 </mads:geographic>\r
1048                 <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
1049         </xsl:template>\r
1050         <xsl:template\r
1051                 match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">\r
1052                 <xsl:call-template name="geographic"/>\r
1053         </xsl:template>\r
1054         <xsl:template\r
1055                 match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">\r
1056                 <mads:variant>\r
1057                         <xsl:call-template name="variantTypeAttribute"/>\r
1058                         <xsl:call-template name="geographic"/>\r
1059                 </mads:variant>\r
1060         </xsl:template>\r
1061         <xsl:template\r
1062                 match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">\r
1063                 <mads:related>\r
1064                         <xsl:call-template name="relatedTypeAttribute"/>\r
1065                         <!-- <xsl:call-template name="uri"/> -->\r
1066                         <xsl:call-template name="geographic"/>\r
1067                 </mads:related>\r
1068         </xsl:template>\r
1069         <xsl:template match="marc:datafield[@tag=580]">\r
1070                 <mads:related>\r
1071                         <xsl:call-template name="relatedTypeAttribute"/>\r
1072                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
1073                 </mads:related>\r
1074         </xsl:template>\r
1075         <xsl:template\r
1076                 match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">\r
1077                 <mads:related>\r
1078                         <xsl:call-template name="relatedTypeAttribute"/>\r
1079                         <xsl:call-template name="geographic"/>\r
1080                 </mads:related>\r
1081         </xsl:template>\r
1082         <xsl:template match="marc:datafield[@tag=755]">\r
1083                 <mads:related>\r
1084                         <xsl:call-template name="relatedTypeAttribute"/>\r
1085                         <xsl:call-template name="setAuthority"/>\r
1086                         <xsl:call-template name="genre"/>\r
1087                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
1088                 </mads:related>\r
1089         </xsl:template>\r
1090         <xsl:template match="marc:datafield[@tag=780]">\r
1091                 <mads:related>\r
1092                         <xsl:call-template name="relatedTypeAttribute"/>\r
1093                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
1094                 </mads:related>\r
1095         </xsl:template>\r
1096         <xsl:template match="marc:datafield[@tag=785]">\r
1097                 <mads:related>\r
1098                         <xsl:call-template name="relatedTypeAttribute"/>\r
1099                         <xsl:apply-templates select="marc:subfield[@code!='i']"/>\r
1100                 </mads:related>\r
1101         </xsl:template>\r
1102 \r
1103         <!-- ========== notes  ========== -->\r
1104         <xsl:template match="marc:datafield[667 &lt;= @tag and @tag &lt;= 688]">\r
1105                 <mads:note>\r
1106                         <xsl:choose>\r
1107                                 <xsl:when test="@tag=667">\r
1108                                         <xsl:attribute name="type">nonpublic</xsl:attribute>\r
1109                                 </xsl:when>\r
1110                                 <xsl:when test="@tag=670">\r
1111                                         <xsl:attribute name="type">source</xsl:attribute>\r
1112                                 </xsl:when>\r
1113                                 <xsl:when test="@tag=675">\r
1114                                         <xsl:attribute name="type">notFound</xsl:attribute>\r
1115                                 </xsl:when>\r
1116                                 <xsl:when test="@tag=678">\r
1117                                         <xsl:attribute name="type">history</xsl:attribute>\r
1118                                 </xsl:when>\r
1119                                 <xsl:when test="@tag=681">\r
1120                                         <xsl:attribute name="type">subject example</xsl:attribute>\r
1121                                 </xsl:when>\r
1122                                 <xsl:when test="@tag=682">\r
1123                                         <xsl:attribute name="type">deleted heading information</xsl:attribute>\r
1124                                 </xsl:when>\r
1125                                 <xsl:when test="@tag=688">\r
1126                                         <xsl:attribute name="type">application history</xsl:attribute>\r
1127                                 </xsl:when>\r
1128                         </xsl:choose>\r
1129                         <xsl:call-template name="chopPunctuation">\r
1130                                 <xsl:with-param name="chopString">\r
1131                                         <xsl:choose>\r
1132                                                 <xsl:when test="@tag=667 or @tag=675">\r
1133                                                         <xsl:value-of select="marc:subfield[@code='a']"/>\r
1134                                                 </xsl:when>\r
1135                                                 <xsl:when test="@tag=670 or @tag=678">\r
1136                                                         <xsl:call-template name="subfieldSelect">\r
1137                                                                 <xsl:with-param name="codes">ab</xsl:with-param>\r
1138                                                         </xsl:call-template>\r
1139                                                 </xsl:when>\r
1140                                                 <xsl:when test="680 &lt;= @tag and @tag &lt;=688">\r
1141                                                         <xsl:call-template name="subfieldSelect">\r
1142                                                                 <xsl:with-param name="codes">ai</xsl:with-param>\r
1143                                                         </xsl:call-template>\r
1144                                                 </xsl:when>\r
1145                                         </xsl:choose>\r
1146                                 </xsl:with-param>\r
1147                         </xsl:call-template>\r
1148                 </mads:note>\r
1149         </xsl:template>\r
1150 \r
1151         <!-- ========== url  ========== -->\r
1152         <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">\r
1153                 <mads:url>\r
1154                         <xsl:if test="marc:subfield[@code='z' or @code='3']">\r
1155                                 <xsl:attribute name="displayLabel">\r
1156                                         <xsl:call-template name="subfieldSelect">\r
1157                                                 <xsl:with-param name="codes">z3</xsl:with-param>\r
1158                                         </xsl:call-template>\r
1159                                 </xsl:attribute>\r
1160                         </xsl:if>\r
1161                         <xsl:value-of select="marc:subfield[@code='u']"/>\r
1162                 </mads:url>\r
1163         </xsl:template>\r
1164 \r
1165         <xsl:template name="relatedTypeAttribute">\r
1166                 <xsl:choose>\r
1167                         <xsl:when\r
1168                                 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">\r
1169                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">\r
1170                                         <xsl:attribute name="type">earlier</xsl:attribute>\r
1171                                 </xsl:if>\r
1172                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">\r
1173                                         <xsl:attribute name="type">later</xsl:attribute>\r
1174                                 </xsl:if>\r
1175                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">\r
1176                                         <xsl:attribute name="type">parentOrg</xsl:attribute>\r
1177                                 </xsl:if>\r
1178                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">\r
1179                                         <xsl:attribute name="type">broader</xsl:attribute>\r
1180                                 </xsl:if>\r
1181                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">\r
1182                                         <xsl:attribute name="type">narrower</xsl:attribute>\r
1183                                 </xsl:if>\r
1184                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='r'">\r
1185                                         <xsl:attribute name="type">other</xsl:attribute>\r
1186                                 </xsl:if>\r
1187                                 <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">\r
1188                                         <xsl:attribute name="type">other</xsl:attribute>\r
1189                                 </xsl:if>\r
1190                         </xsl:when>\r
1191                         <xsl:when test="@tag=530 or @tag=730">\r
1192                                 <xsl:attribute name="type">other</xsl:attribute>\r
1193                         </xsl:when>\r
1194                         <xsl:otherwise>\r
1195                                 <!-- 7xx -->\r
1196                                 <xsl:attribute name="type">equivalent</xsl:attribute>\r
1197                         </xsl:otherwise>\r
1198                 </xsl:choose>\r
1199                 <xsl:apply-templates select="marc:subfield[@code='i']"/>\r
1200         </xsl:template>\r
1201         \r
1202 \r
1203 \r
1204         <xsl:template name="variantTypeAttribute">\r
1205                 <xsl:choose>\r
1206                         <xsl:when\r
1207                                 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">\r
1208                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">\r
1209                                         <xsl:attribute name="type">acronym</xsl:attribute>\r
1210                                 </xsl:if>\r
1211                                 <xsl:if test="substring(marc:subfield[@code='w'],1,1)='n'">\r
1212                                         <xsl:attribute name="type">other</xsl:attribute>\r
1213                                 </xsl:if>\r
1214                                 <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">\r
1215                                         <xsl:attribute name="type">other</xsl:attribute>\r
1216                                 </xsl:if>\r
1217                         </xsl:when>\r
1218                         <xsl:otherwise>\r
1219                                 <!-- 430  -->\r
1220                                 <xsl:attribute name="type">other</xsl:attribute>\r
1221                         </xsl:otherwise>\r
1222                 </xsl:choose>\r
1223                 <xsl:apply-templates select="marc:subfield[@code='i']"/>\r
1224         </xsl:template>\r
1225 \r
1226         <xsl:template name="setAuthority">\r
1227                 <xsl:choose>\r
1228                         <!-- can be called from the datafield or subfield level, so "..//@tag" means\r
1229                         the tag can be at the subfield's parent level or at the datafields own level -->\r
1230 \r
1231                         <xsl:when\r
1232                                 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">\r
1233                                 <xsl:attribute name="authority">\r
1234                                         <xsl:text>naf</xsl:text>\r
1235                                 </xsl:attribute>\r
1236                         </xsl:when>\r
1237                         <xsl:when\r
1238                                 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">\r
1239                                 <xsl:attribute name="authority">\r
1240                                         <xsl:text>lcsh</xsl:text>\r
1241                                 </xsl:attribute>\r
1242                         </xsl:when>\r
1243                         <xsl:when\r
1244                                 test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">\r
1245                                 <xsl:attribute name="authority">\r
1246                                         <xsl:text>lacnaf</xsl:text>\r
1247                                 </xsl:attribute>\r
1248                         </xsl:when>\r
1249                         <xsl:when\r
1250                                 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">\r
1251                                 <xsl:attribute name="authority">\r
1252                                         <xsl:text>lcsh</xsl:text>\r
1253                                 </xsl:attribute>\r
1254                         </xsl:when>\r
1255                         <xsl:when\r
1256                                 test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">\r
1257                                 <xsl:attribute name="authority">cash</xsl:attribute>\r
1258                         </xsl:when>\r
1259                         <xsl:when\r
1260                                 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">\r
1261                                 <xsl:attribute name="authority">naf</xsl:attribute>\r
1262                         </xsl:when>\r
1263                         <xsl:when\r
1264                                 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">\r
1265                                 <xsl:attribute name="authority">lcsh</xsl:attribute>\r
1266                         </xsl:when>\r
1267                         <xsl:when\r
1268                                 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">\r
1269                                 <xsl:attribute name="authority">\r
1270                                         <xsl:text>lacnaf</xsl:text>\r
1271                                 </xsl:attribute>\r
1272                         </xsl:when>\r
1273                         <xsl:when\r
1274                                 test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">\r
1275                                 <xsl:attribute name="authority">\r
1276                                         <xsl:text>cash</xsl:text>\r
1277                                 </xsl:attribute>\r
1278                         </xsl:when>\r
1279                         <xsl:when\r
1280                                 test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='b'">\r
1281                                 <xsl:attribute name="authority">\r
1282                                         <xsl:text>lcshcl</xsl:text>\r
1283                                 </xsl:attribute>\r
1284                         </xsl:when>\r
1285                         <xsl:when\r
1286                                 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'">\r
1287                                 <xsl:attribute name="authority">\r
1288                                         <xsl:text>nlmnaf</xsl:text>\r
1289                                 </xsl:attribute>\r
1290                         </xsl:when>\r
1291                         <xsl:when\r
1292                                 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'">\r
1293                                 <xsl:attribute name="authority">\r
1294                                         <xsl:text>nalnaf</xsl:text>\r
1295                                 </xsl:attribute>\r
1296                         </xsl:when>\r
1297                         <xsl:when\r
1298                                 test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='r'">\r
1299                                 <xsl:attribute name="authority">\r
1300                                         <xsl:text>aat</xsl:text>\r
1301                                 </xsl:attribute>\r
1302                         </xsl:when>\r
1303                         <xsl:when\r
1304                                 test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='s'">\r
1305                                 <xsl:attribute name="authority">sears</xsl:attribute>\r
1306                         </xsl:when>\r
1307                         <xsl:when\r
1308                                 test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='v'">\r
1309                                 <xsl:attribute name="authority">rvm</xsl:attribute>\r
1310                         </xsl:when>\r
1311                         <xsl:when\r
1312                                 test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='z'">\r
1313                                 <xsl:attribute name="authority">\r
1314                                         <xsl:value-of\r
1315                                                 select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"\r
1316                                         />\r
1317                                 </xsl:attribute>\r
1318                         </xsl:when>\r
1319                         <xsl:when\r
1320                                 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='a'">\r
1321                                 <xsl:attribute name="authority">\r
1322                                         <xsl:text>naf</xsl:text>\r
1323                                 </xsl:attribute>\r
1324                         </xsl:when>\r
1325                         <xsl:when\r
1326                                 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='a' and $controlField008-14='b'">\r
1327                                 <xsl:attribute name="authority">\r
1328                                         <xsl:text>lcsh</xsl:text>\r
1329                                 </xsl:attribute>\r
1330                         </xsl:when>\r
1331                         <xsl:when\r
1332                                 test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">\r
1333                                 <xsl:attribute name="authority">\r
1334                                         <xsl:text>lacnaf</xsl:text>\r
1335                                 </xsl:attribute>\r
1336                         </xsl:when>\r
1337                         <xsl:when\r
1338                                 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' ">\r
1339                                 <xsl:attribute name="authority">\r
1340                                         <xsl:text>lcsh</xsl:text>\r
1341                                 </xsl:attribute>\r
1342                         </xsl:when>\r
1343                         <xsl:when\r
1344                                 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' ">\r
1345                                 <xsl:attribute name="authority">\r
1346                                         <xsl:text>lcsh</xsl:text>\r
1347                                 </xsl:attribute>\r
1348                         </xsl:when>\r
1349                         <xsl:when\r
1350                                 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' ">\r
1351                                 <xsl:attribute name="authority">\r
1352                                         <xsl:text>mesh</xsl:text>\r
1353                                 </xsl:attribute>\r
1354                         </xsl:when>\r
1355                         <xsl:when\r
1356                                 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' ">\r
1357                                 <xsl:attribute name="authority">\r
1358                                         <xsl:text>nal</xsl:text>\r
1359                                 </xsl:attribute>\r
1360                         </xsl:when>\r
1361                         <xsl:when\r
1362                                 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' ">\r
1363                                 <xsl:attribute name="authority">\r
1364                                         <xsl:text>cash</xsl:text>\r
1365                                 </xsl:attribute>\r
1366                         </xsl:when>\r
1367                         <xsl:when\r
1368                                 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">\r
1369                                 <xsl:attribute name="authority">\r
1370                                         <xsl:text>naf</xsl:text>\r
1371                                 </xsl:attribute>\r
1372                         </xsl:when>\r
1373                         <xsl:when\r
1374                                 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">\r
1375                                 <xsl:attribute name="authority">lcsh</xsl:attribute>\r
1376                         </xsl:when>\r
1377                         <xsl:when\r
1378                                 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">\r
1379                                 <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
1380                         </xsl:when>\r
1381                         <xsl:when\r
1382                                 test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">\r
1383                                 <xsl:attribute name="authority">cash</xsl:attribute>\r
1384                         </xsl:when>\r
1385                         <xsl:when\r
1386                                 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'">\r
1387                                 <xsl:attribute name="authority">lcsh</xsl:attribute>\r
1388                         </xsl:when>\r
1389                         <xsl:when\r
1390                                 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">\r
1391                                 <xsl:attribute name="authority">naf</xsl:attribute>\r
1392                         </xsl:when>\r
1393                         <xsl:when\r
1394                                 test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">\r
1395                                 <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
1396                         </xsl:when>\r
1397                         <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">\r
1398                                 <xsl:attribute name="authority">lcsh</xsl:attribute>\r
1399                         </xsl:when>\r
1400                         <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">\r
1401                                 <xsl:attribute name="authority">cash</xsl:attribute>\r
1402                         </xsl:when>\r
1403                         <xsl:when\r
1404                                 test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='1'">\r
1405                                 <xsl:attribute name="authority">lcshcl</xsl:attribute>\r
1406                         </xsl:when>\r
1407                         <xsl:when\r
1408                                 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'">\r
1409                                 <xsl:attribute name="authority">nlmnaf</xsl:attribute>\r
1410                         </xsl:when>\r
1411                         <xsl:when\r
1412                                 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'">\r
1413                                 <xsl:attribute name="authority">nalnaf</xsl:attribute>\r
1414                         </xsl:when>\r
1415                         <xsl:when\r
1416                                 test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='6'">\r
1417                                 <xsl:attribute name="authority">rvm</xsl:attribute>\r
1418                         </xsl:when>\r
1419                         <xsl:when\r
1420                                 test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='7'">\r
1421                                 <xsl:attribute name="authority">\r
1422                                         <xsl:value-of select="marc:subfield[@code='2']"/>\r
1423                                 </xsl:attribute>\r
1424                         </xsl:when>\r
1425                         <xsl:when\r
1426                                 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'">\r
1427                                 <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
1428                         </xsl:when>\r
1429                         <xsl:when\r
1430                                 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'">\r
1431                                 <xsl:attribute name="authority">naf</xsl:attribute>\r
1432                         </xsl:when>\r
1433                         <xsl:when\r
1434                                 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'">\r
1435                                 <xsl:attribute name="authority">lcsh</xsl:attribute>\r
1436                         </xsl:when>\r
1437                         <xsl:when\r
1438                                 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'">\r
1439                                 <xsl:attribute name="authority">mesh</xsl:attribute>\r
1440                         </xsl:when>\r
1441                         <xsl:when\r
1442                                 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'">\r
1443                                 <xsl:attribute name="authority">nal</xsl:attribute>\r
1444                         </xsl:when>\r
1445                         <xsl:when\r
1446                                 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'">\r
1447                                 <xsl:attribute name="authority">cash</xsl:attribute>\r
1448                         </xsl:when>\r
1449                 </xsl:choose>\r
1450         </xsl:template>\r
1451         <xsl:template match="*"/>\r
1452 </xsl:stylesheet>\r