e89f586581cb8e54570b6d0994f19353a1ace6cf
[idzebra-moved-to-github.git] / examples / marcxml / MARC21slim2MADS.xsl
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <xsl:stylesheet version="1.0" xmlns="http://www.loc.gov/mods/v3" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">\r
3   \r
4   <xsl:include href="http://www.loc.gov/marcxml/xslt/MARC21slimUtils.xsl"/>\r
5   <xsl:output method="xml" indent="yes" encoding="UTF-8"/>\r
6 \r
7   <!--\r
8       adapted from MARC21Slim2MODS3.xsl ntra 7/6/05\r
9       revised rsg/jer 11/29/05\r
10   -->\r
11 \r
12   <!-- authority attribute defaults to 'naf' if not set using this authority parameter, for <authority> descriptors: name, titleInfo, geographic -->\r
13   <xsl:param name="authority"/>\r
14   <xsl:variable name="auth">\r
15     <xsl:choose>\r
16       <xsl:when test="$authority">\r
17         <xsl:value-of select="$authority"/>\r
18       </xsl:when>\r
19       <xsl:otherwise>naf</xsl:otherwise>\r
20     </xsl:choose>\r
21   </xsl:variable>\r
22   <xsl:variable name="controlField008-11" select="substring(descendant-or-self::marc:controlfield[@tag=008],12,1)"/>\r
23   <xsl:variable name="controlField008-14" select="substring(descendant-or-self::marc:controlfield[@tag=008],15,1)"/>\r
24   <xsl:template match="/">\r
25     <xsl:choose>\r
26       <xsl:when test="descendant-or-self::marc:collection">\r
27         <madsCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mads http://www.loc.gov/standards/mads/mads.xsd">\r
28           <xsl:for-each select="descendant-or-self::marc:collection/marc:record">\r
29             <mads version="beta">\r
30               <xsl:call-template name="marcRecord"/>\r
31             </mads>\r
32           </xsl:for-each>\r
33         </madsCollection>\r
34       </xsl:when>\r
35       <xsl:otherwise>\r
36         <mads version="beta" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/mads http://www.loc.gov/standards/mads/mads.xsd">\r
37           <xsl:for-each select="descendant-or-self::marc:record">\r
38             <xsl:call-template name="marcRecord"/>\r
39           </xsl:for-each>\r
40         </mads>\r
41       </xsl:otherwise>\r
42     </xsl:choose>\r
43   </xsl:template>\r
44 \r
45   <xsl:template name="marcRecord">              \r
46     <xsl:if test="contains(marc:datafield[@tag='035'],'tea2003000479')">\r
47 \r
48     </xsl:if>           \r
49     <authority>\r
50       <xsl:apply-templates select="marc:datafield[100 &lt;= @tag  and @tag &lt; 200]"/>\r
51     </authority>\r
52     <!-- related -->\r
53     <xsl:apply-templates select="marc:datafield[500 &lt;= @tag and @tag &lt;= 585]|marc:datafield[700 &lt;= @tag and @tag &lt;= 785]"/>\r
54 \r
55     <!-- variant -->\r
56     <xsl:apply-templates select="marc:datafield[400 &lt;= @tag and @tag &lt;= 485]"/>\r
57     <!-- notes -->\r
58     <xsl:apply-templates select="marc:datafield[667 &lt;= @tag and @tag &lt;= 688]"/>\r
59     <!-- url -->\r
60     <xsl:apply-templates select="marc:datafield[@tag=856]"/>\r
61     <recordInfo>\r
62       <xsl:apply-templates select="marc:datafield[@tag=010]"/>\r
63       <xsl:apply-templates select="marc:datafield[@tag=024]"/>\r
64       <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='a']"/>\r
65       <xsl:apply-templates select="marc:controlfield[@tag=008]"/>\r
66       <xsl:apply-templates select="marc:controlfield[@tag=005]"/>\r
67       <xsl:apply-templates select="marc:controlfield[@tag=001]"/>\r
68       <xsl:apply-templates select="marc:datafield[@tag=040]/marc:subfield[@code='b']"/>\r
69     </recordInfo>\r
70   </xsl:template>\r
71 \r
72   <!-- start of secondary templates -->\r
73 \r
74   <!-- ======== xlink ======== -->\r
75 \r
76    <!-- <xsl:template name="uri"> \r
77     <xsl:for-each select="marc:subfield[@code='0']">\r
78       <xsl:attribute name="xlink:href">\r
79         <xsl:value-of select="."/>\r
80       </xsl:attribute>\r
81     </xsl:for-each>\r
82      </xsl:template> \r
83    -->\r
84   <xsl:template match="marc:subfield[@code='i']">\r
85     <xsl:attribute name="type">\r
86       <xsl:value-of select="."/>\r
87     </xsl:attribute>\r
88   </xsl:template>\r
89 \r
90   <xsl:template name="role">\r
91     <xsl:for-each select="marc:subfield[@code='e']">\r
92       <role>\r
93         <roleTerm type="text">\r
94           <xsl:value-of select="."/>\r
95         </roleTerm>\r
96       </role>\r
97     </xsl:for-each>\r
98   </xsl:template>\r
99 \r
100   <xsl:template name="part">\r
101     <xsl:variable name="partNumber">\r
102       <xsl:call-template name="specialSubfieldSelect">\r
103         <xsl:with-param name="axis">n</xsl:with-param>\r
104         <xsl:with-param name="anyCodes">n</xsl:with-param>\r
105         <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>\r
106       </xsl:call-template>\r
107     </xsl:variable>\r
108     <xsl:variable name="partName">\r
109       <xsl:call-template name="specialSubfieldSelect">\r
110         <xsl:with-param name="axis">p</xsl:with-param>\r
111         <xsl:with-param name="anyCodes">p</xsl:with-param>\r
112         <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>\r
113       </xsl:call-template>\r
114     </xsl:variable>\r
115     <xsl:if test="string-length(normalize-space($partNumber))">\r
116       <partNumber>\r
117         <xsl:call-template name="chopPunctuation">\r
118           <xsl:with-param name="chopString" select="$partNumber"/>\r
119         </xsl:call-template>\r
120       </partNumber>\r
121     </xsl:if>\r
122     <xsl:if test="string-length(normalize-space($partName))">\r
123       <partName>\r
124         <xsl:call-template name="chopPunctuation">\r
125           <xsl:with-param name="chopString" select="$partName"/>\r
126         </xsl:call-template>\r
127       </partName>\r
128     </xsl:if>\r
129   </xsl:template>\r
130 \r
131   <xsl:template name="nameABCDN">\r
132     <xsl:for-each select="marc:subfield[@code='a']">\r
133       <namePart>\r
134         <xsl:call-template name="chopPunctuation">\r
135           <xsl:with-param name="chopString" select="."/>\r
136         </xsl:call-template>\r
137       </namePart>\r
138     </xsl:for-each>\r
139     <xsl:for-each select="marc:subfield[@code='b']">\r
140       <namePart>\r
141         <xsl:value-of select="."/>\r
142       </namePart>\r
143     </xsl:for-each>\r
144     <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">\r
145       <namePart>\r
146         <xsl:call-template name="subfieldSelect">\r
147           <xsl:with-param name="codes">cdn</xsl:with-param>\r
148         </xsl:call-template>\r
149       </namePart>\r
150     </xsl:if>\r
151   </xsl:template>\r
152 \r
153   <xsl:template name="nameABCDQ">\r
154     <namePart>\r
155       <xsl:call-template name="chopPunctuation">\r
156         <xsl:with-param name="chopString">\r
157           <xsl:call-template name="subfieldSelect">\r
158             <xsl:with-param name="codes">aq</xsl:with-param>\r
159           </xsl:call-template>\r
160         </xsl:with-param>\r
161       </xsl:call-template>\r
162     </namePart>\r
163     <xsl:call-template name="termsOfAddress"/>\r
164     <xsl:call-template name="nameDate"/>\r
165   </xsl:template>\r
166 \r
167   <xsl:template name="nameACDENQ">\r
168     <namePart>\r
169       <xsl:call-template name="subfieldSelect">\r
170         <xsl:with-param name="codes">acdenq</xsl:with-param>\r
171       </xsl:call-template>\r
172     </namePart>\r
173   </xsl:template>\r
174 \r
175   <xsl:template name="nameDate">\r
176     <xsl:for-each select="marc:subfield[@code='d']">\r
177       <namePart type="date">\r
178         <xsl:call-template name="chopPunctuation">\r
179           <xsl:with-param name="chopString" select="."/>\r
180         </xsl:call-template>\r
181       </namePart>\r
182     </xsl:for-each>\r
183   </xsl:template>\r
184 \r
185   <xsl:template name="specialSubfieldSelect">\r
186     <xsl:param name="anyCodes"/>\r
187     <xsl:param name="axis"/>\r
188     <xsl:param name="beforeCodes"/>\r
189     <xsl:param name="afterCodes"/>\r
190     <xsl:variable name="str">\r
191       <xsl:for-each select="marc:subfield">\r
192         <xsl:if 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
193           <xsl:value-of select="text()"/>\r
194           <xsl:text> </xsl:text>\r
195         </xsl:if>\r
196       </xsl:for-each>\r
197     </xsl:variable>\r
198     <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
199   </xsl:template>\r
200 \r
201   <xsl:template name="termsOfAddress">\r
202     <xsl:if test="marc:subfield[@code='b' or @code='c']">\r
203       <namePart type="termsOfAddress">\r
204         <xsl:call-template name="chopPunctuation">\r
205           <xsl:with-param name="chopString">\r
206             <xsl:call-template name="subfieldSelect">\r
207               <xsl:with-param name="codes">bc</xsl:with-param>\r
208             </xsl:call-template>\r
209           </xsl:with-param>\r
210         </xsl:call-template>\r
211       </namePart>\r
212     </xsl:if>\r
213   </xsl:template>\r
214 \r
215   <xsl:template name="displayLabel">\r
216     <xsl:if test="marc:subfield[@code='z']">\r
217       <xsl:attribute name="displayLabel">\r
218         <xsl:value-of select="marc:subfield[@code='z']"/>\r
219       </xsl:attribute>\r
220     </xsl:if>\r
221     <xsl:if test="marc:subfield[@code='3']">\r
222       <xsl:attribute name="displayLabel">\r
223         <xsl:value-of select="marc:subfield[@code='3']"/>\r
224       </xsl:attribute>\r
225     </xsl:if>\r
226   </xsl:template>\r
227 \r
228   <xsl:template name="isInvalid">\r
229     <xsl:if test="marc:subfield[@code='z']">\r
230       <xsl:attribute name="invalid">yes</xsl:attribute>\r
231     </xsl:if>\r
232   </xsl:template>\r
233 \r
234   <xsl:template name="sub2Attribute">\r
235     <!-- 024 -->\r
236     <xsl:if test="marc:subfield[@code='2']">\r
237       <xsl:attribute name="type">\r
238         <xsl:value-of select="marc:subfield[@code='2']"/>\r
239       </xsl:attribute>\r
240     </xsl:if>\r
241   </xsl:template>\r
242   <xsl:template match="marc:controlfield[@tag=001]">\r
243     <recordIdentifier>\r
244       <xsl:if test="../marc:controlfield[@tag=003]">\r
245         <xsl:attribute name="source">\r
246           <xsl:value-of select="../marc:controlfield[@tag=003]"/>\r
247         </xsl:attribute>\r
248       </xsl:if>\r
249       <xsl:value-of select="."/>\r
250     </recordIdentifier>\r
251   </xsl:template>\r
252 \r
253   <xsl:template match="marc:controlfield[@tag=005]">\r
254     <recordChangeDate encoding="iso8601">\r
255       <xsl:value-of select="."/>\r
256     </recordChangeDate>\r
257   </xsl:template>\r
258 \r
259   <xsl:template match="marc:controlfield[@tag=008]">\r
260     <recordCreationDate encoding="marc">\r
261       <xsl:value-of select="substring(.,1,6)"/>\r
262     </recordCreationDate>\r
263   </xsl:template>\r
264 \r
265   <xsl:template match="marc:datafield[@tag=010]">\r
266     <identifier>\r
267       <xsl:call-template name="isInvalid"/>\r
268       <xsl:call-template name="sub2Attribute"/>\r
269       <xsl:value-of select="marc:subfield[@code='a']"/>\r
270     </identifier>\r
271   </xsl:template>\r
272 \r
273   <xsl:template match="marc:datafield[@tag=024]">\r
274     <identifier>\r
275       <xsl:call-template name="isInvalid"/>\r
276       <xsl:call-template name="sub2Attribute"/>\r
277       <xsl:value-of select="marc:subfield[@code='a']"/>\r
278     </identifier>\r
279   </xsl:template>\r
280 \r
281   <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='a']">\r
282     <recordContentSource authority="marcorg">\r
283       <xsl:value-of select="."/>\r
284     </recordContentSource>\r
285   </xsl:template>\r
286 \r
287   <xsl:template match="marc:datafield[@tag=040]/marc:subfield[@code='b']">\r
288     <languageOfCataloging>\r
289       <languageTerm authority="iso639-2b" type="code">\r
290         <xsl:value-of select="."/>\r
291       </languageTerm>\r
292     </languageOfCataloging>\r
293   </xsl:template>\r
294   \r
295   <!-- ========== names  ========== -->\r
296   <xsl:template match="marc:datafield[@tag=100]">\r
297     <name type="personal">                      \r
298       <xsl:call-template name="setAuthority"/>\r
299       <xsl:call-template name="nameABCDQ"/>\r
300       <xsl:call-template name="role"/>          \r
301     </name>\r
302     <xsl:apply-templates select="*[marc:subfield[not(contains('abcdeq',@code))]]"/>\r
303     <xsl:call-template name="title"/>\r
304     <xsl:apply-templates/>\r
305   </xsl:template>\r
306 \r
307   <xsl:template match="marc:datafield[@tag=110]">\r
308     <name type="corporate">\r
309       <xsl:call-template name="setAuthority"/>\r
310       <xsl:call-template name="nameABCDN"/>\r
311       <xsl:call-template name="role"/>\r
312     </name>\r
313     <xsl:apply-templates/>\r
314   </xsl:template>\r
315 \r
316   <xsl:template match="marc:datafield[@tag=111]">\r
317     <name type="conference">\r
318       <xsl:call-template name="setAuthority"/>                  \r
319       <xsl:call-template name="nameACDENQ"/>\r
320     </name>\r
321     <xsl:apply-templates/>\r
322   </xsl:template>\r
323 \r
324   <xsl:template match="marc:datafield[@tag=400]">\r
325     <variant>\r
326       <xsl:call-template name="variantTypeAttribute"/>\r
327       <name type="personal">\r
328         <xsl:call-template name="nameABCDQ"/>\r
329         <xsl:call-template name="role"/>\r
330       </name>\r
331       <xsl:apply-templates/>\r
332       <xsl:call-template name="title"/>\r
333     </variant>\r
334   </xsl:template>\r
335 \r
336   <xsl:template match="marc:datafield[@tag=410]">\r
337     <variant>\r
338       <xsl:call-template name="variantTypeAttribute"/>\r
339       <name type="corporate">\r
340         <xsl:call-template name="nameABCDN"/>\r
341         <xsl:call-template name="role"/>                                \r
342       </name>\r
343       <xsl:apply-templates/>\r
344     </variant>\r
345   </xsl:template>\r
346 \r
347   <xsl:template match="marc:datafield[@tag=411]">\r
348     <variant>\r
349       <xsl:call-template name="variantTypeAttribute"/>\r
350       <name type="conference">\r
351         <xsl:call-template name="nameACDENQ"/>\r
352       </name>\r
353       <xsl:apply-templates/>\r
354     </variant>\r
355   </xsl:template>\r
356 \r
357   <xsl:template match="marc:datafield[@tag=500]|marc:datafield[@tag=700]">\r
358     <related>\r
359       <xsl:call-template name="relatedTypeAttribute"/>\r
360       <!-- <xsl:call-template name="uri"/> -->          \r
361       <name type="personal">\r
362         <xsl:call-template name="setAuthority"/>                                                                \r
363         <xsl:call-template name="nameABCDQ"/>\r
364         <xsl:call-template name="role"/>                                \r
365       </name>\r
366       <xsl:call-template name="title"/>\r
367       <xsl:apply-templates/>\r
368     </related>\r
369   </xsl:template>\r
370 \r
371   <xsl:template match="marc:datafield[@tag=510]|marc:datafield[@tag=710]">\r
372     <related>\r
373       <xsl:call-template name="relatedTypeAttribute"/>\r
374       <!-- <xsl:call-template name="uri"/> -->\r
375       <name type="corporate">\r
376         <xsl:call-template name="setAuthority"/>\r
377         <xsl:call-template name="nameABCDN"/>\r
378         <xsl:call-template name="role"/>\r
379       </name>\r
380       <xsl:apply-templates/>\r
381     </related>\r
382   </xsl:template>\r
383 \r
384   <xsl:template match="marc:datafield[@tag=511]|marc:datafield[@tag=711]">\r
385     <related>\r
386       <xsl:call-template name="relatedTypeAttribute"/>\r
387       <!-- <xsl:call-template name="uri"/> -->\r
388       <name type="conference">\r
389         <xsl:call-template name="setAuthority"/>\r
390         <xsl:call-template name="nameACDENQ"/>\r
391       </name>\r
392       <xsl:apply-templates/>\r
393     </related>\r
394   </xsl:template>\r
395 \r
396   <!-- ========== titles  ========== -->\r
397   <xsl:template match="marc:datafield[@tag=130]">\r
398     <xsl:call-template name="uniform-title"/>\r
399     <xsl:apply-templates/>\r
400   </xsl:template>\r
401 \r
402   <xsl:template match="marc:datafield[@tag=430]">\r
403     <variant>\r
404       <xsl:call-template name="variantTypeAttribute"/>\r
405       <xsl:call-template name="uniform-title"/>\r
406       <xsl:apply-templates/>\r
407     </variant>\r
408   </xsl:template>\r
409 \r
410   <xsl:template match="marc:datafield[@tag=530]|marc:datafield[@tag=730]">\r
411     <related>\r
412       <xsl:call-template name="relatedTypeAttribute"/>                  \r
413       <xsl:call-template name="uniform-title"/>\r
414       <xsl:apply-templates/>\r
415     </related>\r
416   </xsl:template>\r
417 \r
418   <xsl:template name="title">\r
419     <titleInfo>\r
420       <xsl:call-template name="setAuthority"/>\r
421       <title>\r
422         <xsl:variable name="str">\r
423           <xsl:for-each select="marc:subfield">\r
424             <xsl:if test="(contains('tfghklmors',@code) )">\r
425               <xsl:value-of select="text()"/>\r
426               <xsl:text> </xsl:text>\r
427             </xsl:if>\r
428           </xsl:for-each>\r
429         </xsl:variable>\r
430 \r
431         <xsl:call-template name="chopPunctuation">\r
432           <xsl:with-param name="chopString">\r
433             <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
434           </xsl:with-param>\r
435         </xsl:call-template>\r
436       </title>\r
437       <xsl:call-template name="part"/>\r
438       <!-- <xsl:call-template name="uri"/> -->\r
439     </titleInfo>\r
440   </xsl:template>\r
441 \r
442   <xsl:template name="uniform-title">\r
443     <titleInfo>\r
444       <xsl:call-template name="setAuthority"/>\r
445       <title>\r
446         <xsl:variable name="str">\r
447           <xsl:for-each select="marc:subfield">\r
448             <xsl:if test="(contains('adfghklmors',@code) )">\r
449               <xsl:value-of select="text()"/>\r
450               <xsl:text> </xsl:text>\r
451             </xsl:if>\r
452           </xsl:for-each>\r
453         </xsl:variable>\r
454 \r
455         <xsl:call-template name="chopPunctuation">\r
456           <xsl:with-param name="chopString">\r
457             <xsl:value-of select="substring($str,1,string-length($str)-1)"/>\r
458           </xsl:with-param>\r
459         </xsl:call-template>\r
460       </title>\r
461       <xsl:call-template name="part"/>\r
462       <!-- <xsl:call-template name="uri"/> -->\r
463     </titleInfo>\r
464   </xsl:template>\r
465 \r
466 \r
467   <!-- ========== topics  ========== -->\r
468   <xsl:template match="marc:subfield[@code='x']">               \r
469     <topic>\r
470       <xsl:call-template name="chopPunctuation">\r
471         <xsl:with-param name="chopString">\r
472           <xsl:value-of select="."/>\r
473         </xsl:with-param>\r
474       </xsl:call-template>\r
475     </topic>\r
476   </xsl:template>\r
477   \r
478   <xsl:template match="marc:datafield[@tag=150][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=180][marc:subfield[@code='x']]">\r
479     <xsl:call-template name="topic"/>\r
480   </xsl:template>\r
481 \r
482   <xsl:template match="marc:datafield[@tag=450][marc:subfield[@code='a' or @code='b']]|marc:datafield[@tag=480][marc:subfield[@code='x']]">\r
483     <variant>\r
484       <xsl:call-template name="variantTypeAttribute"/>\r
485       <xsl:call-template name="topic"/>\r
486     </variant>\r
487   </xsl:template>\r
488   \r
489   <xsl:template match="marc:datafield[@tag=550 or @tag=750][marc:subfield[@code='a' or @code='b']]">\r
490     <related>                   \r
491       <xsl:call-template name="relatedTypeAttribute"/>\r
492       <!-- <xsl:call-template name="uri"/> -->\r
493       <xsl:call-template name="topic"/>\r
494     </related>\r
495   </xsl:template> \r
496 \r
497   <xsl:template name="topic">\r
498     <topic>                             \r
499       <xsl:if test="@tag=550 or @tag=750">\r
500         <xsl:call-template name="subfieldSelect">\r
501           <xsl:with-param name="codes">ab</xsl:with-param>\r
502         </xsl:call-template>\r
503       </xsl:if>\r
504       <xsl:call-template name="setAuthority"/>\r
505       <xsl:call-template name="chopPunctuation">\r
506         <xsl:with-param name="chopString">\r
507           <xsl:choose>\r
508             <xsl:when test="@tag=180 or @tag=480 or @tag=580 or @tag=780">\r
509               <xsl:apply-templates select="marc:subfield[@code='x']"/>\r
510             </xsl:when>\r
511             <xsl:otherwise>\r
512               <xsl:call-template name="subfieldSelect">\r
513                 <xsl:with-param name="codes">ab</xsl:with-param>\r
514               </xsl:call-template>\r
515             </xsl:otherwise>\r
516           </xsl:choose>\r
517         </xsl:with-param>\r
518       </xsl:call-template>\r
519     </topic>\r
520     <xsl:apply-templates/>\r
521   </xsl:template>\r
522 \r
523   <!-- ========= temporals  ========== -->\r
524 \r
525   <xsl:template match="marc:subfield[@code='y']">\r
526     <temporal>\r
527       <xsl:call-template name="chopPunctuation">\r
528         <xsl:with-param name="chopString">\r
529           <xsl:value-of select="."/>\r
530         </xsl:with-param>\r
531       </xsl:call-template>\r
532     </temporal>\r
533   </xsl:template>\r
534   \r
535   <xsl:template match="marc:datafield[@tag=148][marc:subfield[@code='a']]|marc:datafield[@tag=182 ][marc:subfield[@code='y']]">\r
536     <xsl:call-template name="temporal"/>\r
537   </xsl:template>\r
538 \r
539   <xsl:template match="marc:datafield[@tag=448][marc:subfield[@code='a']]|marc:datafield[@tag=482][marc:subfield[@code='y']]">\r
540     <variant>\r
541       <xsl:call-template name="variantTypeAttribute"/>\r
542       <xsl:call-template name="temporal"/>\r
543     </variant>\r
544   </xsl:template>\r
545   \r
546   <xsl:template match="marc:datafield[@tag=548 or @tag=748][marc:subfield[@code='a']]|marc:datafield[@tag=582 or @tag=782][marc:subfield[@code='y']]">\r
547     <related>\r
548       <xsl:call-template name="relatedTypeAttribute"/>\r
549       <!-- <xsl:call-template name="uri"/> -->\r
550       <xsl:call-template name="temporal"/>\r
551     </related>\r
552   </xsl:template>\r
553   \r
554   <xsl:template name="temporal">\r
555     <temporal>\r
556       <xsl:if test="@tag=548 or @tag=748">\r
557         <xsl:value-of select="marc:subfield[@code='a']"/>\r
558       </xsl:if>\r
559       <xsl:call-template name="setAuthority"/>\r
560       <xsl:call-template name="chopPunctuation">\r
561         <xsl:with-param name="chopString">\r
562           <xsl:choose>\r
563             <xsl:when test="@tag=182 or @tag=482 or @tag=582 or @tag=782">\r
564               <xsl:apply-templates select="marc:subfield[@code='y']"/>\r
565             </xsl:when>\r
566             <xsl:otherwise>\r
567               <xsl:value-of select="marc:subfield[@code='a']"/>\r
568             </xsl:otherwise>\r
569           </xsl:choose> \r
570         </xsl:with-param>\r
571       </xsl:call-template>\r
572     </temporal>\r
573     <xsl:apply-templates/>\r
574   </xsl:template>\r
575 \r
576   <!-- ========== genre  ========== -->\r
577   <xsl:template match="marc:subfield[@code='v']">\r
578     <genre>\r
579       <xsl:call-template name="chopPunctuation">\r
580         <xsl:with-param name="chopString">\r
581           <xsl:value-of select="."/>\r
582         </xsl:with-param>\r
583       </xsl:call-template>\r
584     </genre>\r
585   </xsl:template>\r
586 \r
587   <xsl:template match="marc:datafield[@tag=155][marc:subfield[@code='a']]|marc:datafield[@tag=185][marc:subfield[@code='v']]">\r
588     <xsl:call-template name="genre"/>\r
589   </xsl:template>\r
590 \r
591   <xsl:template match="marc:datafield[@tag=455][marc:subfield[@code='a']]|marc:datafield[@tag=485 ][marc:subfield[@code='v']]">\r
592     <variant>\r
593       <xsl:call-template name="variantTypeAttribute"/>\r
594       <xsl:call-template name="genre"/>\r
595     </variant>\r
596   </xsl:template>\r
597 \r
598   <xsl:template match="marc:datafield[@tag=555]">\r
599     <related>\r
600       <xsl:call-template name="relatedTypeAttribute"/>\r
601       <!-- <xsl:call-template name="uri"/> -->\r
602       <xsl:call-template name="genre"/>\r
603     </related>\r
604   </xsl:template>\r
605 \r
606   <xsl:template match="marc:datafield[@tag=555 or @tag=755][marc:subfield[@code='a']]|marc:datafield[@tag=585][marc:subfield[@code='v']]">\r
607     <related>\r
608       <xsl:call-template name="relatedTypeAttribute"/>\r
609       <xsl:call-template name="genre"/>\r
610     </related>\r
611   </xsl:template>\r
612 \r
613   <xsl:template name="genre">\r
614     <genre>\r
615       <xsl:if test="@tag=555">\r
616         <xsl:value-of select="marc:subfield[@code='a']"/>\r
617       </xsl:if>\r
618       <xsl:call-template name="setAuthority"/>\r
619       <xsl:call-template name="chopPunctuation">\r
620         <xsl:with-param name="chopString">\r
621           <xsl:choose>\r
622             <xsl:when test="@tag=185 or @tag=485 or @tag=585">\r
623               <xsl:apply-templates select="marc:subfield[@code='v']"/>\r
624             </xsl:when>\r
625             <xsl:otherwise>\r
626               <xsl:value-of select="marc:subfield[@code='a']"/>\r
627             </xsl:otherwise>\r
628           </xsl:choose>\r
629         </xsl:with-param>\r
630       </xsl:call-template>                                      \r
631     </genre>\r
632     <xsl:apply-templates/>\r
633   </xsl:template> \r
634   \r
635   <!-- ========= geographic  ========== -->\r
636   <xsl:template match="marc:subfield[@code='z']">\r
637     <geographic>\r
638       <xsl:call-template name="chopPunctuation">\r
639         <xsl:with-param name="chopString">\r
640           <xsl:value-of select="."/>\r
641         </xsl:with-param>\r
642       </xsl:call-template>\r
643     </geographic>\r
644   </xsl:template>\r
645 \r
646   <xsl:template name="geographic">              \r
647     <geographic>                                        \r
648       <xsl:if test="@tag=551">\r
649         <xsl:value-of select="marc:subfield[@code='a']"/>\r
650       </xsl:if> \r
651       <xsl:call-template name="setAuthority"/>\r
652       <xsl:call-template name="chopPunctuation">\r
653         <xsl:with-param name="chopString">\r
654           <xsl:choose>\r
655             <xsl:when test="@tag=181 or @tag=481 or @tag=581">\r
656               <xsl:apply-templates select="marc:subfield[@code='z']"/>\r
657             </xsl:when>\r
658             <xsl:otherwise>\r
659               <xsl:value-of select="marc:subfield[@code='a']"/>\r
660             </xsl:otherwise>\r
661           </xsl:choose>\r
662         </xsl:with-param>\r
663       </xsl:call-template>                                              \r
664     </geographic>\r
665     <xsl:apply-templates/>\r
666   </xsl:template>\r
667 \r
668   <xsl:template match="marc:datafield[@tag=151][marc:subfield[@code='a']]|marc:datafield[@tag=181][marc:subfield[@code='z']]">\r
669     <xsl:call-template name="geographic"/>\r
670   </xsl:template>\r
671 \r
672   <xsl:template match="marc:datafield[@tag=451][marc:subfield[@code='a']]|marc:datafield[@tag=481][marc:subfield[@code='z']]">\r
673     <variant>\r
674       <xsl:call-template name="variantTypeAttribute"/>\r
675       <xsl:call-template name="geographic"/>                    \r
676     </variant>\r
677   </xsl:template>\r
678 \r
679   <xsl:template match="marc:datafield[@tag=551]|marc:datafield[@tag=581][marc:subfield[@code='z']]">\r
680     <related>\r
681       <xsl:call-template name="relatedTypeAttribute"/>\r
682       <!-- <xsl:call-template name="uri"/> -->\r
683       <xsl:call-template name="geographic"/>\r
684     </related>\r
685   </xsl:template>\r
686 \r
687   <xsl:template match="marc:datafield[@tag=580]">\r
688     <related>\r
689       <xsl:call-template name="relatedTypeAttribute"/>\r
690       <xsl:apply-templates/>\r
691     </related>\r
692   </xsl:template>\r
693 \r
694   <xsl:template match="marc:datafield[@tag=751][marc:subfield[@code='z']]|marc:datafield[@tag=781][marc:subfield[@code='z']]">\r
695     <related>\r
696       <xsl:call-template name="relatedTypeAttribute"/>\r
697       <xsl:call-template name="geographic"/>    \r
698     </related>\r
699   </xsl:template>\r
700 \r
701   <xsl:template match="marc:datafield[@tag=755]">\r
702     <related>\r
703       <xsl:call-template name="relatedTypeAttribute"/>\r
704       <xsl:call-template name="genre"/> \r
705       <xsl:call-template name="setAuthority"/>\r
706       <xsl:apply-templates/>\r
707     </related>\r
708   </xsl:template> \r
709 \r
710   <xsl:template match="marc:datafield[@tag=780]">\r
711     <related>\r
712       <xsl:call-template name="relatedTypeAttribute"/>\r
713       <xsl:apply-templates/>\r
714     </related>\r
715   </xsl:template>\r
716 \r
717   <xsl:template match="marc:datafield[@tag=785]">\r
718     <related>\r
719       <xsl:call-template name="relatedTypeAttribute"/>\r
720       <xsl:apply-templates/>\r
721     </related>\r
722   </xsl:template>\r
723 \r
724   <!-- ========== notes  ========== -->\r
725   <xsl:template match="marc:datafield[667 &lt;= @tag and @tag &lt;= 688]">\r
726     <note>\r
727       <xsl:choose>\r
728         <xsl:when test="@tag=667">\r
729           <xsl:attribute name="type">nonpublic</xsl:attribute>\r
730         </xsl:when>\r
731         <xsl:when test="@tag=670">\r
732           <xsl:attribute name="type">source</xsl:attribute>\r
733         </xsl:when>\r
734         <xsl:when test="@tag=675">\r
735           <xsl:attribute name="type">notFound</xsl:attribute>\r
736         </xsl:when>\r
737         <xsl:when test="@tag=678">\r
738           <xsl:attribute name="type">history</xsl:attribute>\r
739         </xsl:when>\r
740         <xsl:when test="@tag=681">\r
741           <xsl:attribute name="type">subject example</xsl:attribute>\r
742         </xsl:when>\r
743         <xsl:when test="@tag=682">\r
744           <xsl:attribute name="type">deleted heading information</xsl:attribute>\r
745         </xsl:when>\r
746         <xsl:when test="@tag=688">\r
747           <xsl:attribute name="type">application history</xsl:attribute>\r
748         </xsl:when>\r
749       </xsl:choose>\r
750       <xsl:call-template name="chopPunctuation">\r
751         <xsl:with-param name="chopString">\r
752           <xsl:choose>\r
753             <xsl:when test="@tag=667 or @tag=675">\r
754               <xsl:value-of select="marc:subfield[@code='a']"/>\r
755             </xsl:when>\r
756             <xsl:when test="@tag=670 or @tag=678">\r
757               <xsl:call-template name="subfieldSelect">\r
758                 <xsl:with-param name="codes">ab</xsl:with-param>\r
759               </xsl:call-template>\r
760             </xsl:when>\r
761             <xsl:when test="680 &lt;= @tag and @tag &lt;=688">\r
762               <xsl:call-template name="subfieldSelect">\r
763                 <xsl:with-param name="codes">ai</xsl:with-param>\r
764               </xsl:call-template>\r
765             </xsl:when>\r
766           </xsl:choose>\r
767         </xsl:with-param>\r
768       </xsl:call-template>\r
769     </note>\r
770   </xsl:template>\r
771   <!-- ========== url  ========== -->\r
772   <xsl:template match="marc:datafield[@tag=856][marc:subfield[@code='u']]">\r
773     <url>\r
774       <xsl:if test="marc:subfield[@code='z' or @code='3']">\r
775         <xsl:attribute name="displayLabel">\r
776           <xsl:call-template name="subfieldSelect">\r
777             <xsl:with-param name="codes">z3</xsl:with-param>\r
778           </xsl:call-template>\r
779         </xsl:attribute>\r
780       </xsl:if>\r
781       <xsl:value-of select="marc:subfield[@code='u']"/>\r
782     </url>\r
783   </xsl:template>\r
784 \r
785   <xsl:template name="relatedTypeAttribute">\r
786     <xsl:choose>\r
787       <xsl:when 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
788         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='a'">\r
789           <xsl:attribute name="type">earlier</xsl:attribute>\r
790         </xsl:if>\r
791         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='b'">\r
792           <xsl:attribute name="type">later</xsl:attribute>\r
793         </xsl:if>\r
794         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='t'">\r
795           <xsl:attribute name="type">parentOrg</xsl:attribute>\r
796         </xsl:if>\r
797         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='g'">\r
798           <xsl:attribute name="type">broader</xsl:attribute>\r
799         </xsl:if>\r
800         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='h'">\r
801           <xsl:attribute name="type">narrower</xsl:attribute>\r
802         </xsl:if>\r
803         <xsl:if test="contains('fin|', substring(marc:subfield[@code='w'],1,1))">\r
804           <xsl:attribute name="type">other</xsl:attribute>\r
805         </xsl:if>\r
806       </xsl:when>\r
807       <xsl:when test="@tag=530 or @tag=730">\r
808         <xsl:attribute name="type">other</xsl:attribute>\r
809       </xsl:when>\r
810       <xsl:otherwise>\r
811         <!-- 7xx -->\r
812         <xsl:attribute name="type">equivalent</xsl:attribute>\r
813       </xsl:otherwise>\r
814     </xsl:choose>\r
815     <xsl:apply-templates select="marc:subfield[@code='i']"/>\r
816   </xsl:template>\r
817 \r
818   <xsl:template name="variantTypeAttribute">\r
819     <xsl:choose>\r
820       <xsl:when 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
821         <xsl:if test="substring(marc:subfield[@code='w'],1,1)='d'">\r
822           <xsl:attribute name="type">acronym</xsl:attribute>\r
823         </xsl:if>\r
824         <xsl:if test="contains('fit', substring(marc:subfield[@code='w'],1,1))">\r
825           <xsl:attribute name="type">other</xsl:attribute>\r
826         </xsl:if>\r
827       </xsl:when>\r
828       <xsl:otherwise>\r
829         <!-- 430  -->\r
830         <xsl:attribute name="type">other</xsl:attribute>\r
831       </xsl:otherwise>\r
832     </xsl:choose>\r
833     <xsl:apply-templates select="marc:subfield[@code='i']"/>\r
834   </xsl:template>\r
835   <xsl:template name="setAuthority">\r
836     <xsl:choose>\r
837       <!-- can be called from the datafield or subfield level, so "..//@tag" means\r
838            the tag can be at the subfield's parent level or at the datafields own level -->\r
839       <xsl:when test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='a'">   \r
840         <xsl:attribute name="authority"><xsl:text>naf</xsl:text></xsl:attribute>\r
841       </xsl:when>\r
842       <xsl:when test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='a' and $controlField008-14='b'">   \r
843         <xsl:attribute name="authority"><xsl:text>lcsh</xsl:text></xsl:attribute>\r
844       </xsl:when>\r
845       <xsl:when test="ancestor-or-self::marc:datafield/@tag=100 and (@ind1=0 or @ind1=1) and $controlField008-11='k'">   \r
846         <xsl:attribute name="authority"><xsl:text>lacnaf</xsl:text></xsl:attribute>\r
847       </xsl:when>   \r
848       <xsl:when test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='a' and $controlField008-14='b'">\r
849         <xsl:attribute name="authority"><xsl:text>lcsh</xsl:text></xsl:attribute>\r
850       </xsl:when>   \r
851       <xsl:when test="ancestor-or-self::marc:datafield/@tag=100 and @ind1=3 and $controlField008-11='k' and $controlField008-14='b'">\r
852         <xsl:attribute name="authority">cash</xsl:attribute>\r
853       </xsl:when>\r
854       <xsl:when test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='a'">\r
855         <xsl:attribute name="authority">naf</xsl:attribute>\r
856       </xsl:when>\r
857       <xsl:when test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='a' and $controlField008-14='b'">\r
858         <xsl:attribute name="authority">lcsh</xsl:attribute>\r
859       </xsl:when>\r
860       <xsl:when test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='a'">\r
861         <xsl:attribute name="authority"><xsl:text>lacnaf</xsl:text></xsl:attribute>\r
862       </xsl:when>\r
863       <xsl:when test="ancestor-or-self::marc:datafield/@tag=110 and $controlField008-11='k' and $controlField008-14='b'">\r
864         <xsl:attribute name="authority"><xsl:text>cash</xsl:text></xsl:attribute>\r
865       </xsl:when>\r
866       <xsl:when test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='b'">\r
867         <xsl:attribute name="authority"><xsl:text>lcshcl</xsl:text></xsl:attribute>\r
868       </xsl:when>   \r
869       <xsl:when 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
870         <xsl:attribute name="authority"><xsl:text>nlmnaf</xsl:text></xsl:attribute>\r
871       </xsl:when>   \r
872       <xsl:when 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
873         <xsl:attribute name="authority"><xsl:text>nalnaf</xsl:text></xsl:attribute>\r
874       </xsl:when>   \r
875       <xsl:when test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='r'">\r
876         <xsl:attribute name="authority"><xsl:text>aat</xsl:text></xsl:attribute>\r
877       </xsl:when>\r
878       <xsl:when test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='s'">\r
879         <xsl:attribute name="authority">sears</xsl:attribute>\r
880       </xsl:when>\r
881       <xsl:when test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='v'">\r
882         <xsl:attribute name="authority">rvm</xsl:attribute>\r
883       </xsl:when>\r
884       <xsl:when test="100 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 155 and $controlField008-11='z'">\r
885         <xsl:attribute name="authority"><xsl:value-of select="../marc:datafield[ancestor-or-self::marc:datafield/@tag=040]/marc:subfield[@code='f']"/></xsl:attribute>\r
886       </xsl:when>\r
887       <xsl:when 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
888         <xsl:attribute name="authority"><xsl:text>naf</xsl:text></xsl:attribute>\r
889       </xsl:when>\r
890       <xsl:when 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
891         <xsl:attribute name="authority"><xsl:text>lcsh</xsl:text></xsl:attribute>\r
892       </xsl:when>\r
893       <xsl:when test="(ancestor-or-self::marc:datafield/@tag=111 or ancestor-or-self::marc:datafield/@tag=130) and $controlField008-11='k' ">\r
894         <xsl:attribute name="authority"><xsl:text>lacnaf</xsl:text></xsl:attribute>\r
895       </xsl:when>\r
896       <xsl:when 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
897         <xsl:attribute name="authority"><xsl:text>lcsh</xsl:text></xsl:attribute>\r
898       </xsl:when>\r
899       <xsl:when 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
900         <xsl:attribute name="authority"><xsl:text>lcsh</xsl:text></xsl:attribute>\r
901       </xsl:when>\r
902       <xsl:when 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
903         <xsl:attribute name="authority"><xsl:text>mesh</xsl:text></xsl:attribute>\r
904       </xsl:when>\r
905       <xsl:when 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
906         <xsl:attribute name="authority"><xsl:text>nal</xsl:text></xsl:attribute>\r
907       </xsl:when>\r
908       <xsl:when 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
909         <xsl:attribute name="authority"><xsl:text>cash</xsl:text></xsl:attribute>\r
910       </xsl:when>\r
911       <xsl:when test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='a'">\r
912         <xsl:attribute name="authority"><xsl:text>naf</xsl:text></xsl:attribute>\r
913       </xsl:when>\r
914       <xsl:when test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='a' and $controlField008-14='b'">\r
915         <xsl:attribute name="authority">lcsh</xsl:attribute>\r
916       </xsl:when>\r
917       <xsl:when test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='a'">\r
918         <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
919       </xsl:when>\r
920       <xsl:when test="ancestor-or-self::marc:datafield/@tag=151 and $controlField008-11='k' and $controlField008-14='b'">\r
921         <xsl:attribute name="authority">cash</xsl:attribute>\r
922       </xsl:when>\r
923       \r
924       <xsl:when 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
925         <xsl:attribute name="authority">lcsh</xsl:attribute>\r
926       </xsl:when>\r
927       \r
928       <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='0'">   \r
929         <xsl:attribute name="authority">naf</xsl:attribute>\r
930       </xsl:when>\r
931       <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and (@ind1='0' or @ind1='1') and @ind2='5'">   \r
932         <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
933       </xsl:when>\r
934       <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='0'">   \r
935         <xsl:attribute name="authority">lcsh</xsl:attribute>\r
936       </xsl:when>\r
937       <xsl:when test="ancestor-or-self::marc:datafield/@tag=700 and @ind1='3' and @ind2='5'">   \r
938         <xsl:attribute name="authority">cash</xsl:attribute>\r
939       </xsl:when>\r
940       <xsl:when test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='1'">   \r
941         <xsl:attribute name="authority">lcshcl</xsl:attribute>\r
942       </xsl:when>\r
943       <xsl:when 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
944         <xsl:attribute name="authority">nlmnaf</xsl:attribute>\r
945       </xsl:when>\r
946       <xsl:when 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
947         <xsl:attribute name="authority">nalnaf</xsl:attribute>\r
948       </xsl:when>   \r
949       <xsl:when test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='6'">\r
950         <xsl:attribute name="authority">rvm</xsl:attribute>\r
951       </xsl:when>\r
952       <xsl:when test="(700 &lt;= ancestor-or-self::marc:datafield/@tag and ancestor-or-self::marc:datafield/@tag &lt;= 755 ) and @ind2='7'">   \r
953         <xsl:attribute name="authority">\r
954           <xsl:value-of select="marc:subfield[@code='2']"/>\r
955         </xsl:attribute>\r
956       </xsl:when>\r
957       <xsl:when 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
958         <xsl:attribute name="authority">lacnaf</xsl:attribute>\r
959       </xsl:when>\r
960       <xsl:when 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
961         <xsl:attribute name="authority">naf</xsl:attribute>\r
962       </xsl:when>\r
963       <xsl:when 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
964         <xsl:attribute name="authority">lcsh</xsl:attribute>\r
965       </xsl:when>\r
966       <xsl:when 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
967         <xsl:attribute name="authority">mesh</xsl:attribute>\r
968       </xsl:when>\r
969       <xsl:when 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
970         <xsl:attribute name="authority">nal</xsl:attribute>\r
971       </xsl:when>\r
972       <xsl:when 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
973         <xsl:attribute name="authority">cash</xsl:attribute>\r
974       </xsl:when>\r
975     </xsl:choose>\r
976   </xsl:template>\r
977 \r
978   <!--<xsl:template name="oldsetAuth">\r
979       <xsl:param name="ind2"/>\r
980       <xsl:if test="100 &lt;= @tag and @tag &lt; 200">\r
981       <xsl:attribute name="authority">\r
982       <xsl:value-of select="$auth"/>\r
983       </xsl:attribute>\r
984       </xsl:if>\r
985       <xsl:if test="(700 &lt;= @tag and @tag &lt; 800) or /marc:datafield[700 &lt;=@tag and @tag &lt; 800]">\r
986       <xsl:attribute name="authority">\r
987       <xsl:choose>\r
988       <xsl:when test="$ind2='0'">naf</xsl:when>                                 \r
989       <xsl:when test="$ind2='2'">nlm</xsl:when>\r
990       <xsl:when test="$ind2='3'">nal</xsl:when>\r
991       <xsl:when test="$ind2='5'">lac</xsl:when>\r
992       <xsl:when test="$ind2='6'">rvm</xsl:when>                                 \r
993       <xsl:when test="$ind2='7'"><xsl:value-of select="../marc:subfield[@code='2']"/></xsl:when>                                                                        \r
994       </xsl:choose>\r
995       </xsl:attribute>\r
996       </xsl:if>\r
997       </xsl:template>\r
998   -->\r
999   <!--<xsl:template name="oldsetAuth2">\r
1000       <xsl:param name="ind2"/>\r
1001       <xsl:if test="(100 &lt;= @tag and @tag &lt; 200) or ../marc:datafield[100 &lt;=@tag and @tag &lt; 200]">\r
1002       <xsl:attribute name="authority">\r
1003       <xsl:choose>\r
1004       <xsl:when test="$controlField008-11='a'">lcsh</xsl:when>\r
1005       <xsl:when test="$controlField008-11='b'">lcac</xsl:when>\r
1006       <xsl:when test="$controlField008-11='c'">mesh</xsl:when>\r
1007       <xsl:when test="$controlField008-11='d'">nal</xsl:when>\r
1008       <xsl:when test="$controlField008-11='k'">cash</xsl:when>\r
1009       <xsl:when test="$controlField008-11='r'">aat</xsl:when>\r
1010       <xsl:when test="$controlField008-11='s'">sears</xsl:when>\r
1011       <xsl:when test="$controlField008-11='v'">rvm</xsl:when>\r
1012       <xsl:when test="$controlField008-11='z'"><xsl:value-of select="../marc:datafield[@tag=040]/marc:subfield[@code='f']"/></xsl:when>                         \r
1013       </xsl:choose>\r
1014       </xsl:attribute>\r
1015       </xsl:if>\r
1016       <xsl:if test="(500 &lt;= @tag and @tag &lt; 800) or /marc:datafield[500 &lt;=@tag and @tag &lt; 800]">\r
1017       <xsl:attribute name="authority">\r
1018       <xsl:choose>\r
1019       <xsl:when test="$ind2='0'">lcsh</xsl:when>\r
1020       <xsl:when test="$ind2='1'">lcac</xsl:when>\r
1021       <xsl:when test="$ind2='2'">mesh</xsl:when>\r
1022       <xsl:when test="$ind2='3'">nal</xsl:when>\r
1023       <xsl:when test="$ind2='5'">cash</xsl:when>\r
1024       <xsl:when test="$ind2='6'">rvm</xsl:when>                                 \r
1025       <xsl:when test="$ind2='7'"><xsl:value-of select="../marc:subfield[@code='2']"/></xsl:when>                                                                        \r
1026       </xsl:choose>\r
1027       </xsl:attribute>\r
1028       </xsl:if>\r
1029       </xsl:template>-->\r
1030   <!--<xsl:template match="marc:subfield[@code='0']">\r
1031       <xsl:attribute name="xlink:href">\r
1032       <xsl:value-of select="."/>\r
1033       </xsl:attribute>\r
1034       </xsl:template>\r
1035   -->\r
1036   <xsl:template match="*"/>\r
1037   <!--<xsl:template match="*">\r
1038       <n><xsl:attribute name="tag"><xsl:value-of select="@tag"/></xsl:attribute>\r
1039       <xsl:attribute name="code"><xsl:value-of select="@code"/></xsl:attribute>\r
1040       <xsl:value-of select="name()"/>\r
1041       \r
1042       <v><xsl:value-of select="."/></v></n>\r
1043       </xsl:template>-->\r
1044 </xsl:stylesheet><!-- Stylus Studio meta-information - (c)1998-2003 Copyright Sonic Software Corporation. All rights reserved.\r
1045                       <metaInformation>\r
1046                       <scenarios ><scenario default="yes" name="Scenario1" userelativepaths="yes" externalpreview="no" url="..\..\documents\mads_short.xml" htmlbaseurl="" outputurl="" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/></scenarios><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>\r
1047                       </metaInformation>\r
1048                  -->