1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
3 <xsl:include href="MARC21slimUtils.xsl"/>
4 <xsl:output method="text"/>
6 <xsl:template match="marc:record">
7 <xsl:variable name="leader" select="marc:leader" />
8 <xsl:variable name="leader6" select="substring($leader,7,1)" />
9 <xsl:variable name="leader7" select="substring($leader,8,1)" />
11 <xsl:text> TY - </xsl:text>
13 <xsl:variable name="field008" select="marc:controlfield[@tag=008]"/>
16 <xsl:when test="$leader6='a' or $leader6='t'">
18 <xsl:when test="$leader6='a' and $leader7='b' or $leader7='i' or $leader7='s'">
19 <!-- Continuing Resource -->
20 <xsl:variable name="field008-21" select="substring($field008,22,1)"/>
22 <xsl:when test="$field008-21='p'">JOUR</xsl:when>
23 <xsl:when test="$field008-21='n'">NEWS</xsl:when>
24 <xsl:when test="$field008-21='m'">SER</xsl:when>
26 <!-- Default to Journal -->
27 <xsl:otherwise>JOUR</xsl:otherwise>
31 <!-- If not a CR, then a book (or book-type) item -->
32 <xsl:variable name="field008-24-27" select="substring($field008,25,4)"/>
33 <xsl:variable name="field008-29" select="substring($field008,30,1)"/>
36 <xsl:when test="$leader6='a' and $leader7='m'">BOOK</xsl:when>
37 <xsl:when test="$leader6='a' and $leader7='a'">CHAP</xsl:when>
38 <xsl:when test="$field008-29='1'">CONF</xsl:when>
39 <xsl:when test="$field008-24-27='m'">THES</xsl:when>
40 <xsl:when test="$field008-24-27='a'">ABST</xsl:when>
41 <xsl:when test="$field008-24-27='j'">PAT</xsl:when>
42 <xsl:when test="$field008-24-27='v'">CASE</xsl:when>
43 <xsl:when test="$field008-24-27='l'">STAT</xsl:when>
44 <xsl:when test="$field008-24-27='t'">RPRT</xsl:when>
45 <xsl:when test="$field008-24-27='c'">CTLG</xsl:when>
47 <!-- Default to BOOK -->
48 <xsl:otherwise>BOOK</xsl:otherwise>
54 <xsl:when test="$leader6='e' or $leader6='f'">MAP</xsl:when>
55 <xsl:when test="$leader6='i' or $leader6='j'">SOUND</xsl:when>
56 <xsl:when test="$leader6='c' or $leader6='d'">MUSIC</xsl:when>
58 <xsl:when test="$leader6='g'">
59 <xsl:variable name="field008-33" select="substring($field008,34,1)"/>
61 <xsl:when test="$field008-33='m' or $field008-33='f'">MPCT</xsl:when>
62 <xsl:when test="$field008-33='v'">VIDEO</xsl:when>
63 <xsl:when test="$field008-33='s'">SLIDE</xsl:when>
65 <!-- Default to Motion Picture -->
66 <xsl:otherwise>MPCT</xsl:otherwise>
69 <xsl:when test="$leader6='k' or $leader6='r'">
70 <xsl:variable name="field008-33" select="substring($field008,34,1)"/>
72 <xsl:when test="$field008-33='a' or $field008-33='c' or $field008-33='i' or $field008-33='k'">ART</xsl:when>
74 <!-- Default to Generic -->
75 <xsl:otherwise>GEN</xsl:otherwise>
79 <xsl:when test="$leader6='m'">
80 <xsl:variable name="field008-26" select="substring($field008,27,1)"/>
82 <xsl:when test="$field008-26='b'">COMP</xsl:when>
83 <xsl:when test="$field008-26='e'">ELEC</xsl:when>
84 <xsl:when test="$field008-26='a' or $field008-26='c' or $field008-26='d'">DATA</xsl:when>
86 <!-- Default to Computer File -->
87 <xsl:otherwise>COMP</xsl:otherwise>
91 <xsl:otherwise>GEN</xsl:otherwise>
93 </xsl:choose> <!-- End TY -->
96 <xsl:for-each select="marc:datafield[@tag=100]|marc:datafield[@tag=110]|marc:datafield[@tag=111]">
97 <xsl:text> A1 - </xsl:text>
98 <xsl:for-each select="marc:subfield[@code='a']">
99 <xsl:call-template name="chopPunctuation">
100 <xsl:with-param name="punctuation">
101 <xsl:text>,; </xsl:text>
103 <xsl:with-param name="chopString">
104 <xsl:value-of select="."/>
108 <xsl:if test="@tag = '110'">
109 <xsl:for-each select="marc:subfield[@code='b']">
110 <xsl:value-of select="."/>
113 <xsl:if test="@tag = '111'">
114 <xsl:for-each select="marc:subfield[@code='q']">
115 <xsl:value-of select="."/>
117 <xsl:for-each select="marc:subfield[@code='e']">
118 <xsl:value-of select="."/>
123 <xsl:for-each select="marc:datafield[@tag=245]">
124 <xsl:text> T1 - </xsl:text>
125 <xsl:for-each select="marc:subfield[@code='a']">
126 <xsl:call-template name="chopPunctuation">
127 <xsl:with-param name="punctuation">
128 <xsl:text>:/ </xsl:text>
130 <xsl:with-param name="chopString">
131 <xsl:value-of select="."/>
135 <xsl:for-each select="marc:subfield[@code='b']">
136 <xsl:text>: </xsl:text>
137 <xsl:call-template name="chopPunctuation">
138 <xsl:with-param name="punctuation">
139 <xsl:text>/ </xsl:text>
141 <xsl:with-param name="chopString">
142 <xsl:value-of select="."/>
148 <xsl:variable name="respStmt" select="marc:datafield[@tag=245]/marc:subfield[@code='c']"/>
150 <xsl:for-each select="marc:datafield[@tag=700]">
151 <xsl:for-each select="marc:subfield[@code='a']">
152 <xsl:variable name="addedAuthor" select="."/>
154 <xsl:when test="contains($respStmt, substring-before($addedAuthor, ', '))">
155 <xsl:text> A1 - </xsl:text>
156 <xsl:call-template name="chopPunctuation">
157 <xsl:with-param name="punctuation">
158 <xsl:text>,; </xsl:text>
160 <xsl:with-param name="chopString">
161 <xsl:value-of select="$addedAuthor"/>
166 <xsl:text> A2 - </xsl:text>
167 <xsl:call-template name="chopPunctuation">
168 <xsl:with-param name="punctuation">
169 <xsl:text>,; </xsl:text>
171 <xsl:with-param name="chopString">
172 <xsl:value-of select="$addedAuthor"/>
180 <xsl:for-each select="marc:datafield[@tag=710]">
181 <xsl:text> A2 - </xsl:text>
182 <xsl:for-each select="marc:subfield[@code='a']|marc:subfield[@code='b']">
183 <xsl:value-of select="."/>
187 <xsl:for-each select="marc:datafield[@tag=490]|marc:datafield[@tag=711]">
188 <xsl:for-each select="marc:subfield[@code='a']">
189 <xsl:text> T3 - </xsl:text>
190 <xsl:value-of select="."/>
192 <xsl:if test="@tag = '711'">
193 <xsl:for-each select="marc:subfield[@code='q']">
194 <xsl:value-of select="."/>
196 <xsl:for-each select="marc:subfield[@code='e']">
197 <xsl:value-of select="."/>
202 <xsl:for-each select="marc:datafield[@tag=210]">
203 <xsl:text> JO - </xsl:text>
204 <xsl:for-each select="marc:subfield[@code='a']">
205 <xsl:value-of select="."/>
209 <xsl:for-each select="marc:datafield[@tag=222]">
210 <xsl:text> JF - </xsl:text>
211 <xsl:for-each select="marc:subfield[@code='a']">
212 <xsl:value-of select="."/>
216 <xsl:for-each select="marc:datafield[@tag=260]">
217 <xsl:for-each select="marc:subfield[@code='a']">
218 <xsl:text> CY - </xsl:text>
219 <xsl:call-template name="chopPunctuation">
220 <xsl:with-param name="punctuation">
221 <xsl:text> :</xsl:text>
223 <xsl:with-param name="chopString">
224 <xsl:value-of select="."/>
228 <xsl:for-each select="marc:subfield[@code='b']">
229 <xsl:text> PB - </xsl:text>
230 <xsl:call-template name="chopPunctuation">
231 <xsl:with-param name="punctuation">
232 <xsl:text> ,</xsl:text>
234 <xsl:with-param name="chopString">
235 <xsl:value-of select="."/>
239 <xsl:for-each select="marc:subfield[@code='c']">
240 <xsl:text> PY - </xsl:text>
241 <xsl:call-template name="chopPunctuation">
242 <xsl:with-param name="punctuation">
243 <xsl:text> .</xsl:text>
245 <xsl:with-param name="chopString">
246 <xsl:value-of select="."/>
249 <xsl:text>///</xsl:text>
253 <xsl:for-each select="marc:datafield[@tag=520]">
254 <xsl:for-each select="marc:subfield[@code='a']">
255 <xsl:text> N2 - </xsl:text>
256 <xsl:value-of select="."/>
260 <xsl:for-each select="marc:datafield[@tag=650]|marc:datafield[@tag=651]">
261 <xsl:for-each select="marc:subfield">
262 <xsl:text> KW - </xsl:text>
263 <xsl:value-of select="."/>
267 <xsl:for-each select="marc:datafield[@tag=856]">
268 <xsl:for-each select="marc:subfield[@code='u']">
269 <xsl:text> UR - </xsl:text>
270 <xsl:value-of select="."/>
274 <xsl:for-each select="marc:datafield[@tag=020]|marc:datafield[@tag=022]">
275 <xsl:text> SN - </xsl:text>
276 <xsl:for-each select="marc:subfield[@code='a']">
277 <xsl:value-of select="."/>
281 <xsl:text> ER - </xsl:text>