bibframe_ruby 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -2
  3. data/docs/superpowers/plans/2026-09-09-marc-conversion.md +537 -0
  4. data/docs/superpowers/specs/2026-09-09-marc-conversion-design.md +110 -0
  5. data/lib/bibframe_ruby/marc_converter.rb +67 -0
  6. data/lib/bibframe_ruby/parser.rb +4 -2
  7. data/lib/bibframe_ruby/version.rb +1 -1
  8. data/lib/bibframe_ruby.rb +7 -0
  9. data/vendor/marc2bibframe2/xsl/ConvSpec-001-007.xsl +2276 -0
  10. data/vendor/marc2bibframe2/xsl/ConvSpec-006,008.xsl +1295 -0
  11. data/vendor/marc2bibframe2/xsl/ConvSpec-010-048.xsl +1712 -0
  12. data/vendor/marc2bibframe2/xsl/ConvSpec-050-088.xsl +713 -0
  13. data/vendor/marc2bibframe2/xsl/ConvSpec-1XX,7XX,8XX-names.xsl +1141 -0
  14. data/vendor/marc2bibframe2/xsl/ConvSpec-200-247not240-Titles.xsl +771 -0
  15. data/vendor/marc2bibframe2/xsl/ConvSpec-240andX30-UnifTitle.xsl +535 -0
  16. data/vendor/marc2bibframe2/xsl/ConvSpec-250-270.xsl +283 -0
  17. data/vendor/marc2bibframe2/xsl/ConvSpec-3XX.xsl +2245 -0
  18. data/vendor/marc2bibframe2/xsl/ConvSpec-460-468-SeriesTreat.xsl +135 -0
  19. data/vendor/marc2bibframe2/xsl/ConvSpec-490-510-Links.xsl +145 -0
  20. data/vendor/marc2bibframe2/xsl/ConvSpec-5XX.xsl +1448 -0
  21. data/vendor/marc2bibframe2/xsl/ConvSpec-600-662.xsl +1417 -0
  22. data/vendor/marc2bibframe2/xsl/ConvSpec-720+740to755.xsl +333 -0
  23. data/vendor/marc2bibframe2/xsl/ConvSpec-758.xsl +102 -0
  24. data/vendor/marc2bibframe2/xsl/ConvSpec-760-788-Links.xsl +771 -0
  25. data/vendor/marc2bibframe2/xsl/ConvSpec-841-887.xsl +328 -0
  26. data/vendor/marc2bibframe2/xsl/ConvSpec-880.xsl +119 -0
  27. data/vendor/marc2bibframe2/xsl/ConvSpec-ControlSubfields.xsl +495 -0
  28. data/vendor/marc2bibframe2/xsl/ConvSpec-LDR.xsl +183 -0
  29. data/vendor/marc2bibframe2/xsl/ConvSpec-Preprocess0-Splitting.xsl +765 -0
  30. data/vendor/marc2bibframe2/xsl/ConvSpec-Process6-Series.xsl +627 -0
  31. data/vendor/marc2bibframe2/xsl/ConvSpec-Process8-ProvAct.xsl +1021 -0
  32. data/vendor/marc2bibframe2/xsl/conf/abbreviations.xml +13 -0
  33. data/vendor/marc2bibframe2/xsl/conf/code-to-script.xml +399 -0
  34. data/vendor/marc2bibframe2/xsl/conf/codeMaps.xml +723 -0
  35. data/vendor/marc2bibframe2/xsl/conf/exclusions.xml +4 -0
  36. data/vendor/marc2bibframe2/xsl/conf/iso6392-to-1.xml +615 -0
  37. data/vendor/marc2bibframe2/xsl/conf/languageCrosswalk.xml +1503 -0
  38. data/vendor/marc2bibframe2/xsl/conf/map880.xml +175 -0
  39. data/vendor/marc2bibframe2/xsl/conf/scriptCrosswalk.xml +210 -0
  40. data/vendor/marc2bibframe2/xsl/conf/subjectThesaurus.xml +29 -0
  41. data/vendor/marc2bibframe2/xsl/marc2bibframe2.xsl +610 -0
  42. data/vendor/marc2bibframe2/xsl/naco-normalize.xsl +205 -0
  43. data/vendor/marc2bibframe2/xsl/utils.xsl +963 -0
  44. data/vendor/marc2bibframe2/xsl/variables.xsl +108 -0
  45. metadata +68 -1
@@ -0,0 +1,1295 @@
1
+ <?xml version='1.0'?>
2
+ <xsl:stylesheet version="1.0"
3
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
5
+ xmlns:marc="http://www.loc.gov/MARC21/slim"
6
+ xmlns:bf="http://id.loc.gov/ontologies/bibframe/"
7
+ xmlns:bflc="http://id.loc.gov/ontologies/bflc/"
8
+ xmlns:madsrdf="http://www.loc.gov/mads/rdf/v1#"
9
+ xmlns:local="local:"
10
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
11
+ exclude-result-prefixes="xsl marc local">
12
+
13
+ <!--
14
+ Conversion specs for 006,008
15
+ See lookup tables in conf/codeMaps.xml for code conversions
16
+ -->
17
+
18
+ <!--<xsl:template match="marc:controlfield[@tag='006']" mode="adminmetadata">
19
+ <xsl:param name="serialization" select="'rdfxml'"/>
20
+ <!-\- continuing resources -\->
21
+ <xsl:if test="substring(.,1,1) = 's'">
22
+ <xsl:if test="substring(.,18,1) != '|'">
23
+ <xsl:call-template name="entryConvention008">
24
+ <xsl:with-param name="serialization" select="$serialization"/>
25
+ <xsl:with-param name="code" select="substring(.,18,1)"/>
26
+ </xsl:call-template>
27
+ </xsl:if>
28
+ </xsl:if>
29
+ </xsl:template>-->
30
+
31
+ <!-- return the material type for the 008 from the leader -->
32
+ <xsl:template match="marc:leader" mode="mMaterialType008">
33
+ <xsl:choose>
34
+ <xsl:when test="(substring(.,7,1) = 'a' or substring(.,7,1 = 't')) and
35
+ (substring(.,8,1) = 'a' or substring(.,8,1) = 'c' or substring(.,8,1) = 'd' or substring(.,8,1) = 'm')">BK</xsl:when>
36
+ <xsl:when test="substring(.,7,1) = 'm'">CF</xsl:when>
37
+ <xsl:when test="substring(.,7,1) = 'e' or substring(.,7,1) = 'f'">MP</xsl:when>
38
+ <xsl:when test="substring(.,7,1) = 'c' or
39
+ substring(.,7,1) = 'd' or
40
+ substring(.,7,1) = 'i' or
41
+ substring(.,7,1) = 'j'">MU</xsl:when>
42
+ <xsl:when test="substring(.,7,1) = 'a' and
43
+ (substring(.,8,1) = 'b' or
44
+ substring(.,8,1) = 'i' or
45
+ substring(.,8,1) = 's')">CR</xsl:when>
46
+ <xsl:when test="substring(.,7,1) = 'g' or
47
+ substring(.,7,1) = 'k' or
48
+ substring(.,7,1) = 'o' or
49
+ substring(.,7,1) = 'r'">VM</xsl:when>
50
+ <xsl:when test="substring(.,7,1) = 'p'">MX</xsl:when>
51
+ </xsl:choose>
52
+ </xsl:template>
53
+
54
+ <!-- return the carrier URI from the 008 -->
55
+ <xsl:template match="marc:record" mode="mCarrier008URI">
56
+ <xsl:variable name="vMaterialType">
57
+ <xsl:apply-templates select="marc:leader" mode="mMaterialType008"/>
58
+ </xsl:variable>
59
+ <xsl:variable name="vCode">
60
+ <xsl:choose>
61
+ <xsl:when test="contains('BK CF MU CR MX',$vMaterialType)">
62
+ <xsl:value-of select="substring(marc:controlfield[@tag='008'],24,1)"/>
63
+ </xsl:when>
64
+ <xsl:when test="contains('MP VM',$vMaterialType)">
65
+ <xsl:value-of select="substring(marc:controlfield[@tag='008'],30,1)"/>
66
+ </xsl:when>
67
+ </xsl:choose>
68
+ </xsl:variable>
69
+ <xsl:variable name="vCodeLookup">
70
+ <xsl:choose>
71
+ <xsl:when test="$vMaterialType='CF' and ($vCode='o' or $vCode='q')">
72
+ <xsl:value-of select="$vCode"/>
73
+ </xsl:when>
74
+ <xsl:when test="$vMaterialType != 'CF' and $vCode=' '">r</xsl:when>
75
+ <xsl:otherwise><xsl:value-of select="$vCode"/></xsl:otherwise>
76
+ </xsl:choose>
77
+ </xsl:variable>
78
+ <xsl:for-each select="$codeMaps/maps/carrier/*[name() = $vCodeLookup]">
79
+ <xsl:value-of select="@href"/>
80
+ </xsl:for-each>
81
+ </xsl:template>
82
+
83
+ <xsl:template match="marc:controlfield[@tag='008']" mode="adminmetadata">
84
+ <xsl:param name="serialization" select="'rdfxml'"/>
85
+ <!--
86
+ <xsl:variable name="marcYear" select="substring(.,1,2)"/>
87
+ <xsl:variable name="creationYear">
88
+ <xsl:choose>
89
+ <xsl:when test="$marcYear &lt; 50"><xsl:value-of select="concat('20',$marcYear)"/></xsl:when>
90
+ <xsl:otherwise><xsl:value-of select="concat('19',$marcYear)"/></xsl:otherwise>
91
+ </xsl:choose>
92
+ </xsl:variable>
93
+ <xsl:choose>
94
+ <xsl:when test="$serialization= 'rdfxml'">
95
+ <bf:creationDate>
96
+ <xsl:attribute name="rdf:datatype"><xsl:value-of select="$xs"/>date</xsl:attribute>
97
+ <xsl:value-of select="concat($creationYear,'-',substring(.,3,2),'-',substring(.,5,2))"/>
98
+ </bf:creationDate>
99
+ </xsl:when>
100
+ </xsl:choose>
101
+ -->
102
+ <!-- continuing resources -->
103
+ <xsl:if test="substring(../marc:leader,7,1) = 'a' and
104
+ (substring(../marc:leader,8,1) = 'b' or
105
+ substring(../marc:leader,8,1) = 'i' or
106
+ substring(../marc:leader,8,1) = 's')">
107
+ <xsl:if test="substring(.,35,1) != '|'">
108
+ <xsl:call-template name="entryConvention008">
109
+ <xsl:with-param name="serialization" select="$serialization"/>
110
+ <xsl:with-param name="code" select="substring(.,35,1)"/>
111
+ </xsl:call-template>
112
+ </xsl:if>
113
+ </xsl:if>
114
+ </xsl:template>
115
+
116
+ <!-- create entry convention note from pos 34 of 008/continuing resources -->
117
+ <xsl:template name="entryConvention008">
118
+ <xsl:param name="serialization" select="'rdfxml'"/>
119
+ <xsl:param name="code"/>
120
+ <xsl:variable name="convention">
121
+ <xsl:choose>
122
+ <xsl:when test="$code='0'">0 - successive</xsl:when>
123
+ <xsl:when test="$code='1'">1 - latest</xsl:when>
124
+ <xsl:when test="$code='2'">2 - integrated</xsl:when>
125
+ </xsl:choose>
126
+ </xsl:variable>
127
+ <xsl:if test="$convention != ''">
128
+ <xsl:choose>
129
+ <xsl:when test="$serialization = 'rdfxml'">
130
+ <bf:note>
131
+ <bf:Note>
132
+ <rdf:type>
133
+ <xsl:attribute name="rdf:resource">http://id.loc.gov/vocabulary/mnotetype/metaentry</xsl:attribute>
134
+ </rdf:type>
135
+ <rdfs:label><xsl:value-of select="$convention"/></rdfs:label>
136
+ </bf:Note>
137
+ </bf:note>
138
+ </xsl:when>
139
+ </xsl:choose>
140
+ </xsl:if>
141
+ </xsl:template>
142
+
143
+ <!--<xsl:template match="marc:controlfield[@tag='006']" mode="work">
144
+ <xsl:param name="serialization" select="'rdfxml'"/>
145
+ <!-\- select call appropriate 008 template based on pos 0 -\->
146
+ <xsl:choose>
147
+ <!-\- books -\->
148
+ <xsl:when test="substring(.,1,1) = 'a' or
149
+ substring(.,1,1) = 't'">
150
+ <xsl:call-template name="work008books">
151
+ <xsl:with-param name="serialization" select="$serialization"/>
152
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
153
+ <xsl:with-param name="pTag" select="'006'"/>
154
+ </xsl:call-template>
155
+ </xsl:when>
156
+ <!-\- computer files -\->
157
+ <xsl:when test="substring(.,1,1) = 'm'">
158
+ <xsl:call-template name="work008computerfiles">
159
+ <xsl:with-param name="serialization" select="$serialization"/>
160
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
161
+ <xsl:with-param name="pTag" select="'006'"/>
162
+ </xsl:call-template>
163
+ </xsl:when>
164
+ <!-\- maps -\->
165
+ <xsl:when test="substring(.,1,1) = 'e' or
166
+ substring(.,1,1) = 'f'">
167
+ <xsl:call-template name="work008maps">
168
+ <xsl:with-param name="serialization" select="$serialization"/>
169
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
170
+ <xsl:with-param name="pTag" select="'006'"/>
171
+ </xsl:call-template>
172
+ </xsl:when>
173
+ <!-\- music -\->
174
+ <xsl:when test="substring(.,1,1) = 'c' or
175
+ substring(.,1,1) = 'd' or
176
+ substring(.,1,1) = 'i' or
177
+ substring(.,1,1) = 'j'">
178
+ <xsl:call-template name="work008music">
179
+ <xsl:with-param name="serialization" select="$serialization"/>
180
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
181
+ <xsl:with-param name="pTag" select="'006'"/>
182
+ </xsl:call-template>
183
+ </xsl:when>
184
+ <!-\- continuing resources -\->
185
+ <xsl:when test="substring(.,1,1) = 's'">
186
+ <xsl:call-template name="work008cr">
187
+ <xsl:with-param name="serialization" select="$serialization"/>
188
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
189
+ <xsl:with-param name="pTag" select="'006'"/>
190
+ </xsl:call-template>
191
+ </xsl:when>
192
+ <!-\- visual materials -\->
193
+ <xsl:when test="substring(.,1,1) = 'g' or
194
+ substring(.,1,1) = 'k' or
195
+ substring(.,1,1) = 'o' or
196
+ substring(.,1,1) = 'r'">
197
+ <xsl:call-template name="work008visual">
198
+ <xsl:with-param name="serialization" select="$serialization"/>
199
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
200
+ <xsl:with-param name="pTag" select="'006'"/>
201
+ </xsl:call-template>
202
+ </xsl:when>
203
+ </xsl:choose>
204
+ </xsl:template>-->
205
+
206
+ <xsl:template match="marc:controlfield[@tag='008']" mode="work">
207
+ <xsl:param name="serialization" select="'rdfxml'"/>
208
+ <xsl:variable name="language">
209
+ <xsl:choose>
210
+ <xsl:when test="substring(.,36,3) = ' '"/>
211
+ <xsl:when test="substring(.,36,3) = '|||'"/>
212
+ <xsl:otherwise>
213
+ <xsl:call-template name="url-encode">
214
+ <xsl:with-param name="str" select="normalize-space(substring(.,36,3))"/>
215
+ </xsl:call-template>
216
+ </xsl:otherwise>
217
+ </xsl:choose>
218
+ </xsl:variable>
219
+ <xsl:variable name="originDate">
220
+ <xsl:choose>
221
+ <xsl:when test="
222
+ substring(., 7, 1) = 'r' and
223
+ substring(., 12, 4) != ' ' and
224
+ substring(., 12, 4) != '||||'
225
+ ">
226
+ <xsl:value-of select="substring(., 12, 4)"/>
227
+ </xsl:when>
228
+ </xsl:choose>
229
+ </xsl:variable>
230
+ <xsl:choose>
231
+ <xsl:when test="$serialization = 'rdfxml'">
232
+ <xsl:if test="$language != ''">
233
+ <bf:language>
234
+ <xsl:attribute name="rdf:resource"><xsl:value-of select="concat($languages,$language)"/></xsl:attribute>
235
+ </bf:language>
236
+ </xsl:if>
237
+ <xsl:if test="$originDate != ''">
238
+ <bf:originDate>
239
+ <xsl:attribute name="rdf:datatype"><xsl:value-of select="concat($edtf,'edtf')"/></xsl:attribute>
240
+ <xsl:value-of select="$originDate"/>
241
+ </bf:originDate>
242
+ </xsl:if>
243
+ </xsl:when>
244
+ </xsl:choose>
245
+ <xsl:variable name="vMaterialType">
246
+ <xsl:apply-templates select="../marc:leader" mode="mMaterialType008"/>
247
+ </xsl:variable>
248
+ <xsl:choose>
249
+ <!-- books -->
250
+ <xsl:when test="$vMaterialType='BK'">
251
+ <xsl:call-template name="work008books">
252
+ <xsl:with-param name="serialization" select="$serialization"/>
253
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
254
+ </xsl:call-template>
255
+ </xsl:when>
256
+ <!-- computer files -->
257
+ <xsl:when test="$vMaterialType='CF'">
258
+ <xsl:call-template name="work008computerfiles">
259
+ <xsl:with-param name="serialization" select="$serialization"/>
260
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
261
+ </xsl:call-template>
262
+ </xsl:when>
263
+ <!-- maps -->
264
+ <xsl:when test="$vMaterialType='MP'">
265
+ <xsl:call-template name="work008maps">
266
+ <xsl:with-param name="serialization" select="$serialization"/>
267
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
268
+ </xsl:call-template>
269
+ </xsl:when>
270
+ <!-- music -->
271
+ <xsl:when test="$vMaterialType='MU'">
272
+ <xsl:call-template name="work008music">
273
+ <xsl:with-param name="serialization" select="$serialization"/>
274
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
275
+ </xsl:call-template>
276
+ </xsl:when>
277
+ <!-- continuing resources -->
278
+ <xsl:when test="$vMaterialType='CR'">
279
+ <xsl:call-template name="work008cr">
280
+ <xsl:with-param name="serialization" select="$serialization"/>
281
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
282
+ </xsl:call-template>
283
+ </xsl:when>
284
+ <!-- visual materials -->
285
+ <xsl:when test="$vMaterialType='VM'">
286
+ <xsl:call-template name="work008visual">
287
+ <xsl:with-param name="serialization" select="$serialization"/>
288
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
289
+ </xsl:call-template>
290
+ </xsl:when>
291
+ </xsl:choose>
292
+ </xsl:template>
293
+
294
+ <!-- data elements for books -->
295
+ <xsl:template name="work008books">
296
+ <xsl:param name="serialization" select="'rdfxml'"/>
297
+ <xsl:param name="dataElements"/>
298
+ <xsl:param name="pTag" select="'008'"/>
299
+ <xsl:call-template name="illustrativeContent008">
300
+ <xsl:with-param name="serialization" select="$serialization"/>
301
+ <xsl:with-param name="illustrations" select="substring($dataElements,1,4)"/>
302
+ </xsl:call-template>
303
+ <xsl:call-template name="intendedAudience008">
304
+ <xsl:with-param name="serialization" select="$serialization"/>
305
+ <xsl:with-param name="code" select="substring($dataElements,5,1)"/>
306
+ </xsl:call-template>
307
+ <xsl:call-template name="genreForm008">
308
+ <xsl:with-param name="serialization" select="$serialization"/>
309
+ <xsl:with-param name="contents" select="substring($dataElements,7,4)"/>
310
+ </xsl:call-template>
311
+ <xsl:call-template name="govdoc008">
312
+ <xsl:with-param name="serialization" select="$serialization"/>
313
+ <xsl:with-param name="code" select="substring($dataElements,11,1)"/>
314
+ </xsl:call-template>
315
+ <xsl:call-template name="conference008">
316
+ <xsl:with-param name="serialization" select="$serialization"/>
317
+ <xsl:with-param name="code" select="substring($dataElements,12,1)"/>
318
+ </xsl:call-template>
319
+ <xsl:choose>
320
+ <xsl:when test="$serialization = 'rdfxml'">
321
+ <xsl:if test="substring($dataElements,13,1) = '1'">
322
+ <bf:genreForm>
323
+ <bf:GenreForm>
324
+ <xsl:attribute name="rdf:about"><xsl:value-of select="concat($genreForms,'gf2016026082')"/></xsl:attribute>
325
+ <rdfs:label>Festschriften</rdfs:label>
326
+ </bf:GenreForm>
327
+ </bf:genreForm>
328
+ </xsl:if>
329
+ </xsl:when>
330
+ </xsl:choose>
331
+ <xsl:call-template name="index008">
332
+ <xsl:with-param name="serialization" select="$serialization"/>
333
+ <xsl:with-param name="code" select="substring($dataElements,14,1)"/>
334
+ </xsl:call-template>
335
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
336
+ <xsl:for-each select="$codeMaps/maps/litform/*[name() = substring($dataElements,16,1)] |
337
+ $codeMaps/maps/litform/*[name() = concat('x',substring($dataElements,16,1))]">
338
+ <xsl:variable name="vLitformTxt" select="." />
339
+ <xsl:choose>
340
+ <xsl:when test="not($v655[.=$vLitformTxt]) and not($v655[.=concat($vLitformTxt, '.')]) and $serialization = 'rdfxml'">
341
+ <bf:genreForm>
342
+ <bf:GenreForm>
343
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
344
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
345
+ </bf:GenreForm>
346
+ </bf:genreForm>
347
+ </xsl:when>
348
+ </xsl:choose>
349
+ </xsl:for-each>
350
+ <xsl:for-each select="$codeMaps/maps/bioform/*[name() = substring($dataElements,17,1)]">
351
+ <xsl:variable name="vBioformText" select="." />
352
+ <xsl:choose>
353
+ <xsl:when test="not($v655[.=$vBioformText]) and not($v655[.=concat($vBioformText, '.')]) and $serialization = 'rdfxml'">
354
+ <bf:genreForm>
355
+ <bf:GenreForm>
356
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
357
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
358
+ </bf:GenreForm>
359
+ </bf:genreForm>
360
+ </xsl:when>
361
+ </xsl:choose>
362
+ </xsl:for-each>
363
+ </xsl:template>
364
+
365
+ <!-- data elements for computer files -->
366
+ <xsl:template name="work008computerfiles">
367
+ <xsl:param name="serialization" select="'rdfxml'"/>
368
+ <xsl:param name="dataElements"/>
369
+ <xsl:param name="pTag" select="'008'"/>
370
+ <xsl:call-template name="intendedAudience008">
371
+ <xsl:with-param name="serialization" select="$serialization"/>
372
+ <xsl:with-param name="code" select="substring($dataElements,5,1)"/>
373
+ </xsl:call-template>
374
+ <xsl:for-each select="$codeMaps/maps/computerFileType/*[name() = substring($dataElements,9,1)]">
375
+ <xsl:choose>
376
+ <xsl:when test="$serialization = 'rdfxml'">
377
+ <bf:genreForm>
378
+ <bf:GenreForm>
379
+ <xsl:if test="@href">
380
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
381
+ </xsl:if>
382
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
383
+ </bf:GenreForm>
384
+ </bf:genreForm>
385
+ </xsl:when>
386
+ </xsl:choose>
387
+ </xsl:for-each>
388
+ <xsl:call-template name="govdoc008">
389
+ <xsl:with-param name="serialization" select="$serialization"/>
390
+ <xsl:with-param name="code" select="substring($dataElements,11,1)"/>
391
+ </xsl:call-template>
392
+ </xsl:template>
393
+
394
+ <!-- data elements for maps -->
395
+ <xsl:template name="work008maps">
396
+ <xsl:param name="serialization" select="'rdfxml'"/>
397
+ <xsl:param name="dataElements"/>
398
+ <xsl:param name="pTag" select="'008'"/>
399
+ <xsl:call-template name="cartographicAttributes008">
400
+ <xsl:with-param name="serialization" select="$serialization"/>
401
+ <xsl:with-param name="relief" select="substring($dataElements,1,4)"/>
402
+ </xsl:call-template>
403
+ <xsl:for-each select="$codeMaps/maps/projection/*[name() = substring($dataElements,5,2)]">
404
+ <xsl:choose>
405
+ <xsl:when test="$serialization = 'rdfxml'">
406
+ <bf:cartographicAttributes>
407
+ <bf:Cartographic>
408
+ <bf:projection>
409
+ <bf:Projection>
410
+ <xsl:if test="@href">
411
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
412
+ </xsl:if>
413
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
414
+ </bf:Projection>
415
+ </bf:projection>
416
+ </bf:Cartographic>
417
+ </bf:cartographicAttributes>
418
+ </xsl:when>
419
+ </xsl:choose>
420
+ </xsl:for-each>
421
+ <xsl:call-template name="govdoc008">
422
+ <xsl:with-param name="serialization" select="$serialization"/>
423
+ <xsl:with-param name="code" select="substring($dataElements,11,1)"/>
424
+ </xsl:call-template>
425
+ <xsl:call-template name="index008">
426
+ <xsl:with-param name="serialization" select="$serialization"/>
427
+ <xsl:with-param name="code" select="substring($dataElements,14,1)"/>
428
+ </xsl:call-template>
429
+ <xsl:call-template name="mapform008">
430
+ <xsl:with-param name="serialization" select="$serialization"/>
431
+ <xsl:with-param name="form" select="substring($dataElements,16,2)"/>
432
+ </xsl:call-template>
433
+ </xsl:template>
434
+
435
+ <!-- data elements for music -->
436
+ <xsl:template name="work008music">
437
+ <xsl:param name="serialization" select="'rdfxml'"/>
438
+ <xsl:param name="dataElements"/>
439
+ <xsl:param name="pTag" select="'008'"/>
440
+ <xsl:call-template name="intendedAudience008">
441
+ <xsl:with-param name="serialization" select="$serialization"/>
442
+ <xsl:with-param name="code" select="substring($dataElements,5,1)"/>
443
+ </xsl:call-template>
444
+ <xsl:call-template name="suppContentMusic008">
445
+ <xsl:with-param name="serialization" select="$serialization"/>
446
+ <xsl:with-param name="accomp" select="substring($dataElements,7,6)"/>
447
+ </xsl:call-template>
448
+ <xsl:call-template name="compForm008">
449
+ <xsl:with-param name="serialization" select="$serialization"/>
450
+ <xsl:with-param name="code" select="substring($dataElements,1,2)"/>
451
+ </xsl:call-template>
452
+ <xsl:call-template name="musicFormat008">
453
+ <xsl:with-param name="serialization" select="$serialization"/>
454
+ <xsl:with-param name="code" select="substring($dataElements,3,1)"/>
455
+ </xsl:call-template>
456
+ <xsl:call-template name="musicTextForm008">
457
+ <xsl:with-param name="serialization" select="$serialization"/>
458
+ <xsl:with-param name="litform" select="substring($dataElements,13,2)"/>
459
+ </xsl:call-template>
460
+ </xsl:template>
461
+
462
+ <!-- data elements for continuing resources -->
463
+ <xsl:template name="work008cr">
464
+ <xsl:param name="serialization" select="'rdfxml'"/>
465
+ <xsl:param name="dataElements"/>
466
+ <xsl:param name="pTag" select="'008'"/>
467
+ <xsl:for-each select="$codeMaps/maps/crtype/*[name() = substring($dataElements,4,1)]">
468
+ <xsl:choose>
469
+ <xsl:when test="$serialization = 'rdfxml'">
470
+ <bflc:serialPubType>
471
+ <bflc:SerialPubType>
472
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
473
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
474
+ </bflc:SerialPubType>
475
+ </bflc:serialPubType>
476
+ </xsl:when>
477
+ </xsl:choose>
478
+ </xsl:for-each>
479
+ <xsl:call-template name="genreForm008">
480
+ <xsl:with-param name="serialization" select="$serialization"/>
481
+ <xsl:with-param name="contents" select="substring($dataElements,7,4)"/>
482
+ </xsl:call-template>
483
+ <xsl:call-template name="govdoc008">
484
+ <xsl:with-param name="serialization" select="$serialization"/>
485
+ <xsl:with-param name="code" select="substring($dataElements,11,1)"/>
486
+ </xsl:call-template>
487
+ <xsl:call-template name="conference008">
488
+ <xsl:with-param name="serialization" select="$serialization"/>
489
+ <xsl:with-param name="code" select="substring($dataElements,12,1)"/>
490
+ </xsl:call-template>
491
+ <xsl:for-each select="$codeMaps/maps/crscript/*[name() = substring($dataElements,16,1)]">
492
+ <xsl:choose>
493
+ <xsl:when test="$serialization = 'rdfxml'">
494
+ <bf:notation>
495
+ <bf:Script>
496
+ <xsl:if test="@href">
497
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
498
+ </xsl:if>
499
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
500
+ </bf:Script>
501
+ </bf:notation>
502
+ </xsl:when>
503
+ </xsl:choose>
504
+ </xsl:for-each>
505
+ </xsl:template>
506
+
507
+ <!-- data elements for visual materials -->
508
+ <xsl:template name="work008visual">
509
+ <xsl:param name="serialization" select="'rdfxml'"/>
510
+ <xsl:param name="dataElements"/>
511
+ <xsl:param name="pTag" select="'008'"/>
512
+ <xsl:variable name="duration">
513
+ <xsl:choose>
514
+ <xsl:when test="substring($dataElements,1,3) = '000'">more than 999 minutes</xsl:when>
515
+ <xsl:when test="substring($dataElements,1,3) = '---'"/>
516
+ <xsl:when test="substring($dataElements,1,3) = 'nnn'"/>
517
+ <xsl:when test="substring($dataElements,1,3) = '|||'"/>
518
+ <xsl:when test="substring($dataElements,1,3) = ' '"/>
519
+ <xsl:when test="starts-with(substring($dataElements,1,3),'0')">
520
+ <xsl:call-template name="tChopPunct">
521
+ <xsl:with-param name="pString" select="substring($dataElements,1,3)"/>
522
+ <xsl:with-param name="pEndPunct" select="' '"/>
523
+ <xsl:with-param name="pLeadPunct" select="'0'"/>
524
+ </xsl:call-template>
525
+ </xsl:when>
526
+ <xsl:otherwise><xsl:value-of select="substring($dataElements,1,3)"/></xsl:otherwise>
527
+ </xsl:choose>
528
+ </xsl:variable>
529
+ <xsl:call-template name="intendedAudience008">
530
+ <xsl:with-param name="serialization" select="$serialization"/>
531
+ <xsl:with-param name="code" select="substring($dataElements,5,1)"/>
532
+ </xsl:call-template>
533
+ <xsl:call-template name="govdoc008">
534
+ <xsl:with-param name="serialization" select="$serialization"/>
535
+ <xsl:with-param name="code" select="substring($dataElements,11,1)"/>
536
+ </xsl:call-template>
537
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
538
+ <xsl:variable name="v380" select="../marc:datafield[@tag='380' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
539
+ <xsl:for-each select="$codeMaps/maps/visualtype/*[name() = substring($dataElements,16,1)]">
540
+ <xsl:variable name="vCodemapTxt" select="." />
541
+ <xsl:choose>
542
+ <xsl:when test="
543
+ not($v380[.=$vCodemapTxt]) and not($v380[.=concat($vCodemapTxt, '.')]) and
544
+ not($v655[.=$vCodemapTxt]) and not($v655[.=concat($vCodemapTxt, '.')]) and
545
+ $serialization = 'rdfxml'">
546
+ <bf:genreForm>
547
+ <bf:GenreForm>
548
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
549
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
550
+ </bf:GenreForm>
551
+ </bf:genreForm>
552
+ </xsl:when>
553
+ </xsl:choose>
554
+ </xsl:for-each>
555
+ <xsl:for-each select="$codeMaps/maps/technique/*[name() = substring($dataElements,17,1)]">
556
+ <xsl:choose>
557
+ <xsl:when test="$serialization = 'rdfxml'">
558
+ <bflc:movingImageTechnique>
559
+ <bflc:MovingImageTechnique>
560
+ <xsl:if test="@href != ''">
561
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
562
+ </xsl:if>
563
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
564
+ </bflc:MovingImageTechnique>
565
+ </bflc:movingImageTechnique>
566
+ </xsl:when>
567
+ </xsl:choose>
568
+ </xsl:for-each>
569
+ <xsl:choose>
570
+ <xsl:when test="$serialization = 'rdfxml'">
571
+ <xsl:if test="$duration != ''">
572
+ <bf:duration>
573
+ <xsl:choose>
574
+ <xsl:when test="substring($dataElements,1,3) = '000'">
575
+ <xsl:value-of select="$duration"/>
576
+ </xsl:when>
577
+ <xsl:otherwise>
578
+ <xsl:attribute name="rdf:datatype"><xsl:value-of select="concat($xs,'duration')"/></xsl:attribute>
579
+ <xsl:value-of select="concat('PT',$duration,'M')"/>
580
+ </xsl:otherwise>
581
+ </xsl:choose>
582
+ </bf:duration>
583
+ </xsl:if>
584
+ </xsl:when>
585
+ </xsl:choose>
586
+ </xsl:template>
587
+
588
+ <!-- create Work intendedAudience properties from 008 -->
589
+ <xsl:template name="intendedAudience008">
590
+ <xsl:param name="serialization" select="'rdfxml'"/>
591
+ <xsl:param name="code"/>
592
+ <xsl:for-each select="$codeMaps/maps/maudience/*[name() = $code]">
593
+ <xsl:choose>
594
+ <xsl:when test="$serialization = 'rdfxml'">
595
+ <bf:intendedAudience>
596
+ <bf:IntendedAudience>
597
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
598
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
599
+ </bf:IntendedAudience>
600
+ </bf:intendedAudience>
601
+ </xsl:when>
602
+ </xsl:choose>
603
+ </xsl:for-each>
604
+ </xsl:template>
605
+
606
+ <!-- create Work supplementaryContent properties from 008 -->
607
+ <!-- loop 4 times -->
608
+ <xsl:template name="genreForm008">
609
+ <xsl:param name="serialization" select="'rdfxml'"/>
610
+ <xsl:param name="contents"/>
611
+ <xsl:param name="i" select="1"/>
612
+ <xsl:if test="$i &lt; 5">
613
+ <xsl:variable name="vProperty">
614
+ <xsl:choose>
615
+ <xsl:when test="contains('bkq',substring($contents,$i,1))">bf:supplementaryContent</xsl:when>
616
+ <xsl:otherwise>bf:genreForm</xsl:otherwise>
617
+ </xsl:choose>
618
+ </xsl:variable>
619
+ <xsl:variable name="vResource">
620
+ <xsl:choose>
621
+ <xsl:when test="contains('bkq',substring($contents,$i,1))">bf:SupplementaryContent</xsl:when>
622
+ <xsl:otherwise>bf:GenreForm</xsl:otherwise>
623
+ </xsl:choose>
624
+ </xsl:variable>
625
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
626
+ <xsl:variable name="v353" select="../marc:datafield[@tag='353']/marc:subfield[@code='a']" />
627
+ <xsl:for-each select="$codeMaps/maps/marcgt/*[name() = substring($contents,$i,1)] |
628
+ $codeMaps/maps/marcgt/*[name() = concat('x',substring($contents,$i,1))]">
629
+ <xsl:variable name="vMarcgtText" select="." />
630
+ <xsl:choose>
631
+ <xsl:when test="
632
+ (
633
+ (
634
+ $vProperty='bf:supplementaryContent' and
635
+ not($v353[.=$vMarcgtText])
636
+ ) or
637
+ (
638
+ $vProperty='bf:genreForm' and
639
+ not($v655[.=$vMarcgtText]) and
640
+ not($v655[.=concat($vMarcgtText, '.')])
641
+ )
642
+ ) and
643
+ $serialization = 'rdfxml'">
644
+ <xsl:element name="{$vProperty}">
645
+ <xsl:element name="{$vResource}">
646
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
647
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
648
+ </xsl:element>
649
+ </xsl:element>
650
+ </xsl:when>
651
+ </xsl:choose>
652
+ </xsl:for-each>
653
+ <xsl:call-template name="genreForm008">
654
+ <xsl:with-param name="serialization" select="$serialization"/>
655
+ <xsl:with-param name="contents" select="$contents"/>
656
+ <xsl:with-param name="i" select="$i + 1"/>
657
+ </xsl:call-template>
658
+ </xsl:if>
659
+ </xsl:template>
660
+
661
+ <!-- create bflc:governmentPubType property for a gov doc -->
662
+ <xsl:template name="govdoc008">
663
+ <xsl:param name="serialization" select="'rdfxml'"/>
664
+ <xsl:param name="code"/>
665
+ <xsl:variable name="govdoc">
666
+ <xsl:choose>
667
+ <xsl:when test="$code = 'a'">autonomous</xsl:when>
668
+ <xsl:when test="$code = 'c'">multilocal</xsl:when>
669
+ <xsl:when test="$code = 'f'">federal</xsl:when>
670
+ <xsl:when test="$code = 'i'">international intergovernmental</xsl:when>
671
+ <xsl:when test="$code = 'l'">local</xsl:when>
672
+ <xsl:when test="$code = 'm'">multistate</xsl:when>
673
+ <xsl:when test="$code = 'o'">government</xsl:when>
674
+ <xsl:when test="$code = 's'">state</xsl:when>
675
+ </xsl:choose>
676
+ </xsl:variable>
677
+ <xsl:choose>
678
+ <xsl:when test="$serialization = 'rdfxml'">
679
+ <xsl:if test="$govdoc != ''">
680
+ <bflc:governmentPubType>
681
+ <bflc:GovernmentPubType>
682
+ <xsl:attribute name="rdf:about"><xsl:value-of select="concat($mgovtpubtype,$code)"/></xsl:attribute>
683
+ <rdfs:label><xsl:value-of select="$govdoc"/></rdfs:label>
684
+ </bflc:GovernmentPubType>
685
+ </bflc:governmentPubType>
686
+ </xsl:if>
687
+ </xsl:when>
688
+ </xsl:choose>
689
+ </xsl:template>
690
+
691
+ <!-- create genreForm property for a conference publication -->
692
+ <xsl:template name="conference008">
693
+ <xsl:param name="serialization" select="'rdfxml'"/>
694
+ <xsl:param name="code"/>
695
+ <xsl:if test="$code = '1'">
696
+ <xsl:choose>
697
+ <xsl:when test="$serialization = 'rdfxml'">
698
+ <xsl:if test="$genreForms != '' and count(../marc:datafield[@tag='655']/marc:subfield[. = $genreForms]) = 0">
699
+ <bf:genreForm>
700
+ <bf:GenreForm>
701
+ <xsl:attribute name="rdf:about"><xsl:value-of select="concat($genreForms,'gf2014026068')"/></xsl:attribute>
702
+ <rdfs:label>Conference papers and proceedings</rdfs:label>
703
+ </bf:GenreForm>
704
+ </bf:genreForm>
705
+ </xsl:if>
706
+ </xsl:when>
707
+ </xsl:choose>
708
+ </xsl:if>
709
+ </xsl:template>
710
+
711
+ <!-- genreForm properties for maps - loop 2 times -->
712
+ <xsl:template name="mapform008">
713
+ <xsl:param name="serialization" select="'rdfxml'"/>
714
+ <xsl:param name="form"/>
715
+ <xsl:param name="i" select="1"/>
716
+ <xsl:if test="$i &lt; 3">
717
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
718
+ <xsl:for-each select="$codeMaps/maps/mapform/*[name() = substring($form,$i,1)]">
719
+ <xsl:variable name="vCodemapTxt" select="." />
720
+ <xsl:choose>
721
+ <xsl:when test="not($v655[.=$vCodemapTxt]) and not($v655[.=concat($vCodemapTxt, '.')]) and $serialization = 'rdfxml'">
722
+ <bf:genreForm>
723
+ <bf:GenreForm>
724
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
725
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
726
+ </bf:GenreForm>
727
+ </bf:genreForm>
728
+ </xsl:when>
729
+ </xsl:choose>
730
+ </xsl:for-each>
731
+ <xsl:call-template name="mapform008">
732
+ <xsl:with-param name="serialization" select="$serialization"/>
733
+ <xsl:with-param name="form" select="$form"/>
734
+ <xsl:with-param name="i" select="$i + 1"/>
735
+ </xsl:call-template>
736
+ </xsl:if>
737
+ </xsl:template>
738
+
739
+ <!-- compForm properties for music -->
740
+ <xsl:template name="compForm008">
741
+ <xsl:param name="serialization" select="'rdfxml'"/>
742
+ <xsl:param name="code"/>
743
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
744
+ <xsl:for-each select="$codeMaps/maps/musicCompForm/*[name() = $code]">
745
+ <xsl:variable name="vCodemapTxt" select="." />
746
+ <xsl:choose>
747
+ <xsl:when test="not($v655[.=$vCodemapTxt]) and not($v655[.=concat($vCodemapTxt, '.')]) and $serialization = 'rdfxml'">
748
+ <bf:genreForm>
749
+ <bf:GenreForm>
750
+ <xsl:if test="@href != ''">
751
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
752
+ </xsl:if>
753
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
754
+ </bf:GenreForm>
755
+ </bf:genreForm>
756
+ </xsl:when>
757
+ </xsl:choose>
758
+ </xsl:for-each>
759
+ </xsl:template>
760
+
761
+ <!-- musicFormat properties for music -->
762
+ <xsl:template name="musicFormat008">
763
+ <xsl:param name="serialization" select="'rdfxml'"/>
764
+ <xsl:param name="code"/>
765
+ <xsl:variable name="df348-as" select="../marc:datafield[@tag = '348']/marc:subfield[@code = 'a']" />
766
+ <xsl:for-each select="$codeMaps/maps/musicFormat/*[name() = $code]">
767
+ <xsl:choose>
768
+ <xsl:when test="$serialization = 'rdfxml' and (count($df348-as)=0 or $df348-as[text() != .])">
769
+ <bf:musicFormat>
770
+ <bf:MusicFormat>
771
+ <xsl:if test="@href != ''">
772
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
773
+ </xsl:if>
774
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
775
+ </bf:MusicFormat>
776
+ </bf:musicFormat>
777
+ </xsl:when>
778
+ </xsl:choose>
779
+ </xsl:for-each>
780
+ </xsl:template>
781
+
782
+ <!-- supplementaryContent properties for music - loop 6 times -->
783
+ <xsl:template name="suppContentMusic008">
784
+ <xsl:param name="serialization" select="'rdfxml'"/>
785
+ <xsl:param name="accomp"/>
786
+ <xsl:param name="i" select="1"/>
787
+ <xsl:variable name="df353-bs" select="../marc:datafield[@tag = '348']/marc:subfield[@code = 'b']" />
788
+ <xsl:variable name="df353-0s" select="../marc:datafield[@tag = '348']/marc:subfield[@code = '0']" />
789
+ <xsl:if test="$i &lt; 7">
790
+ <xsl:for-each select="$codeMaps/maps/musicSuppContent/*[name() = substring($accomp,$i,1)]">
791
+ <xsl:choose>
792
+ <xsl:when test="$serialization = 'rdfxml' and (
793
+ (count($df353-0s)=0 and count($df353-bs)=0) or
794
+ ($df353-0s[text() != @href] and not(contains(@href, $df353-bs/text())))
795
+ )">
796
+ <bf:supplementaryContent>
797
+ <bf:SupplementaryContent>
798
+ <xsl:if test="@href">
799
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
800
+ </xsl:if>
801
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
802
+ </bf:SupplementaryContent>
803
+ </bf:supplementaryContent>
804
+ </xsl:when>
805
+ </xsl:choose>
806
+ </xsl:for-each>
807
+ <xsl:call-template name="suppContentMusic008">
808
+ <xsl:with-param name="serialization" select="$serialization"/>
809
+ <xsl:with-param name="accomp" select="$accomp"/>
810
+ <xsl:with-param name="i" select="$i + 1"/>
811
+ </xsl:call-template>
812
+ </xsl:if>
813
+ </xsl:template>
814
+
815
+ <!-- genreForm properties for text accompanying music - loop 2 times -->
816
+ <xsl:template name="musicTextForm008">
817
+ <xsl:param name="serialization" select="'rdfxml'"/>
818
+ <xsl:param name="litform"/>
819
+ <xsl:param name="i" select="1"/>
820
+ <xsl:if test="$i &lt; 3">
821
+ <xsl:variable name="v655" select="../marc:datafield[@tag='655' and marc:subfield[@code='2']='lcgft']/marc:subfield[@code='a']" />
822
+ <xsl:for-each select="$codeMaps/maps/musicTextForm/*[name() = substring($litform,$i,1)]">
823
+ <xsl:variable name="vCodemapTxt" select="." />
824
+ <xsl:choose>
825
+ <xsl:when test="not($v655[.=$vCodemapTxt]) and not($v655[.=concat($vCodemapTxt, '.')]) and $serialization = 'rdfxml'">
826
+ <bf:genreForm>
827
+ <bf:GenreForm>
828
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
829
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
830
+ </bf:GenreForm>
831
+ </bf:genreForm>
832
+ </xsl:when>
833
+ </xsl:choose>
834
+ </xsl:for-each>
835
+ <xsl:call-template name="musicTextForm008">
836
+ <xsl:with-param name="serialization" select="$serialization"/>
837
+ <xsl:with-param name="litform" select="$litform"/>
838
+ <xsl:with-param name="i" select="$i + 1"/>
839
+ </xsl:call-template>
840
+ </xsl:if>
841
+ </xsl:template>
842
+
843
+ <!--<xsl:template match="marc:controlfield[@tag='006']" mode="instance">
844
+ <xsl:param name="serialization" select="'rdfxml'"/>
845
+ <xsl:param name="pInstanceType"/>
846
+ <!-\- select call appropriate 008 template based on pos 0 -\->
847
+ <xsl:choose>
848
+ <!-\- books -\->
849
+ <xsl:when test="substring(.,1,1) = 'a' or
850
+ substring(.,1,1) = 't'">
851
+ <xsl:call-template name="instance008books">
852
+ <xsl:with-param name="serialization" select="$serialization"/>
853
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
854
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
855
+ <xsl:with-param name="pTag" select="'006'"/>
856
+ </xsl:call-template>
857
+ </xsl:when>
858
+ <!-\- computer files -\->
859
+ <xsl:when test="substring(.,1,1) = 'm'">
860
+ <xsl:call-template name="instance008computerfiles">
861
+ <xsl:with-param name="serialization" select="$serialization"/>
862
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
863
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
864
+ <xsl:with-param name="pTag" select="'006'"/>
865
+ </xsl:call-template>
866
+ </xsl:when>
867
+ <!-\- maps -\->
868
+ <xsl:when test="substring(.,1,1) = 'e' or
869
+ substring(.,1,1) = 'f'">
870
+ <xsl:call-template name="instance008maps">
871
+ <xsl:with-param name="serialization" select="$serialization"/>
872
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
873
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
874
+ <xsl:with-param name="pTag" select="'006'"/>
875
+ </xsl:call-template>
876
+ </xsl:when>
877
+ <!-\- mixed materials -\->
878
+ <xsl:when test="substring(.,1,1) = 'p'">
879
+ <xsl:call-template name="instance008mixed">
880
+ <xsl:with-param name="serialization" select="$serialization"/>
881
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
882
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
883
+ <xsl:with-param name="pTag" select="'006'"/>
884
+ </xsl:call-template>
885
+ </xsl:when>
886
+ <!-\- music -\->
887
+ <xsl:when test="substring(.,1,1) = 'c' or
888
+ substring(.,1,1) = 'd' or
889
+ substring(.,1,1) = 'i' or
890
+ substring(.,1,1) = 'j'">
891
+ <xsl:call-template name="instance008music">
892
+ <xsl:with-param name="serialization" select="$serialization"/>
893
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
894
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
895
+ <xsl:with-param name="pTag" select="'006'"/>
896
+ </xsl:call-template>
897
+ </xsl:when>
898
+ <!-\- continuing resources -\->
899
+ <xsl:when test="substring(.,1,1) = 's'">
900
+ <xsl:call-template name="instance008cr">
901
+ <xsl:with-param name="serialization" select="$serialization"/>
902
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
903
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
904
+ <xsl:with-param name="pTag" select="'006'"/>
905
+ </xsl:call-template>
906
+ </xsl:when>
907
+ <!-\- visual materials -\->
908
+ <xsl:when test="substring(.,1,1) = 'g' or
909
+ substring(.,1,1) = 'k' or
910
+ substring(.,1,1) = 'o' or
911
+ substring(.,1,1) = 'r'">
912
+ <xsl:call-template name="instance008visual">
913
+ <xsl:with-param name="serialization" select="$serialization"/>
914
+ <xsl:with-param name="dataElements" select="substring(.,2,17)"/>
915
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
916
+ <xsl:with-param name="pTag" select="'006'"/>
917
+ </xsl:call-template>
918
+ </xsl:when>
919
+ </xsl:choose>
920
+ </xsl:template>-->
921
+
922
+ <xsl:template match="marc:controlfield[@tag='008']" mode="instance">
923
+ <xsl:param name="serialization" select="'rdfxml'"/>
924
+ <xsl:param name="pInstanceType"/>
925
+ <!--
926
+ 008 date and place processing are part of process8. See ConvSpec-Process8-ProvAct.xsl.
927
+ But we will call the requisite template at this time.
928
+ -->
929
+ <xsl:if test="$pInstanceType != 'SecondaryInstance'">
930
+ <xsl:call-template name="process8" />
931
+ </xsl:if>
932
+ <xsl:variable name="vMaterialType">
933
+ <xsl:apply-templates select="../marc:leader" mode="mMaterialType008"/>
934
+ </xsl:variable>
935
+ <xsl:choose>
936
+ <!-- books -->
937
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='BK'">
938
+ <xsl:call-template name="instance008books">
939
+ <xsl:with-param name="serialization" select="$serialization"/>
940
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
941
+ <xsl:with-param name="leader" select="../marc:leader"/>
942
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
943
+ </xsl:call-template>
944
+ </xsl:when>
945
+ <!-- computer files -->
946
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='CF'">
947
+ <xsl:call-template name="instance008computerfiles">
948
+ <xsl:with-param name="serialization" select="$serialization"/>
949
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
950
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
951
+ </xsl:call-template>
952
+ </xsl:when>
953
+ <!-- maps -->
954
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='MP'">
955
+ <xsl:call-template name="instance008maps">
956
+ <xsl:with-param name="serialization" select="$serialization"/>
957
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
958
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
959
+ </xsl:call-template>
960
+ </xsl:when>
961
+ <!-- music -->
962
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='MU'">
963
+ <xsl:call-template name="instance008music">
964
+ <xsl:with-param name="serialization" select="$serialization"/>
965
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
966
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
967
+ </xsl:call-template>
968
+ </xsl:when>
969
+ <!-- continuing resources -->
970
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='CR'">
971
+ <xsl:call-template name="instance008cr">
972
+ <xsl:with-param name="serialization" select="$serialization"/>
973
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
974
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
975
+ </xsl:call-template>
976
+ </xsl:when>
977
+ <!-- visual materials -->
978
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='VM'">
979
+ <xsl:call-template name="instance008visual">
980
+ <xsl:with-param name="serialization" select="$serialization"/>
981
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
982
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
983
+ </xsl:call-template>
984
+ </xsl:when>
985
+ <!-- mixed materials -->
986
+ <xsl:when test="$pInstanceType != 'SecondaryInstance' and $vMaterialType='MX'">
987
+ <xsl:call-template name="instance008mixed">
988
+ <xsl:with-param name="serialization" select="$serialization"/>
989
+ <xsl:with-param name="dataElements" select="substring(.,19,17)"/>
990
+ <xsl:with-param name="pInstanceType" select="$pInstanceType"/>
991
+ </xsl:call-template>
992
+ </xsl:when>
993
+ </xsl:choose>
994
+ </xsl:template>
995
+
996
+ <!-- data elements for books -->
997
+ <xsl:template name="instance008books">
998
+ <xsl:param name="serialization" select="'rdfxml'"/>
999
+ <xsl:param name="dataElements"/>
1000
+ <xsl:param name="pInstanceType"/>
1001
+ <xsl:param name="pTag" select="'008'"/>
1002
+ <xsl:variable name="vPos23Code" select="substring($dataElements,6,1)" />
1003
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1004
+ <xsl:call-template name="carrier008">
1005
+ <xsl:with-param name="serialization" select="$serialization"/>
1006
+ <xsl:with-param name="code" select="$vPos23Code"/>
1007
+ </xsl:call-template>
1008
+ </xsl:if>
1009
+ <xsl:variable name="vMediaType">
1010
+ <xsl:if test="not(../marc:datafield[@tag='337'])">
1011
+ <xsl:choose>
1012
+ <xsl:when test="substring($dataElements,6,1) = ' ' or
1013
+ substring($dataElements,6,1) = 'd' or
1014
+ substring($dataElements,6,1) = 'f' or
1015
+ substring($dataElements,6,1) = 'r'">n</xsl:when>
1016
+ <xsl:when test="substring($dataElements,6,1) = 'o' or
1017
+ substring($dataElements,6,1) = 'q' or
1018
+ substring($dataElements,6,1) = 's'">c</xsl:when>
1019
+ </xsl:choose>
1020
+ </xsl:if>
1021
+ </xsl:variable>
1022
+ <xsl:choose>
1023
+ <xsl:when test="$serialization = 'rdfxml'">
1024
+ <xsl:if test="$vMediaType != ''">
1025
+ <bf:media>
1026
+ <bf:Media>
1027
+ <xsl:attribute name="rdf:about"><xsl:value-of select="concat($mediaType,$vMediaType)"/></xsl:attribute>
1028
+ <rdfs:label>
1029
+ <xsl:choose>
1030
+ <xsl:when test="$vMediaType = 'n'">unmediated</xsl:when>
1031
+ <xsl:when test="$vMediaType = 'c'">computer</xsl:when>
1032
+ </xsl:choose>
1033
+ </rdfs:label>
1034
+ </bf:Media>
1035
+ </bf:media>
1036
+ </xsl:if>
1037
+ <xsl:if test="$pTag='008'">
1038
+ <xsl:choose>
1039
+ <xsl:when test="substring($dataElements,6,1) = 'd'">
1040
+ <bf:fontSize>
1041
+ <bf:FontSize rdf:about="http://id.loc.gov/vocabulary/mfont/lp">
1042
+ <rdfs:label>large print</rdfs:label>
1043
+ </bf:FontSize>
1044
+ </bf:fontSize>
1045
+ </xsl:when>
1046
+ <xsl:when test="substring($dataElements,6,1) = 'f'">
1047
+ <bf:notation>
1048
+ <bf:TactileNotation rdf:about="http://id.loc.gov/vocabulary/mtactile/brail">
1049
+ <rdfs:label>braille code</rdfs:label>
1050
+ </bf:TactileNotation>
1051
+ </bf:notation>
1052
+ </xsl:when>
1053
+ </xsl:choose>
1054
+ </xsl:if>
1055
+ </xsl:when>
1056
+ </xsl:choose>
1057
+ </xsl:template>
1058
+
1059
+ <!-- dataElements for computer files -->
1060
+ <xsl:template name="instance008computerfiles">
1061
+ <xsl:param name="serialization" select="'rdfxml'"/>
1062
+ <xsl:param name="dataElements"/>
1063
+ <xsl:param name="pTag" select="'008'"/>
1064
+ <xsl:if test="$pTag='008'">
1065
+ <xsl:if test="substring($dataElements,6,1) = 'o' or substring($dataElements,6,1) = 'q'">
1066
+ <xsl:call-template name="carrier008">
1067
+ <xsl:with-param name="serialization" select="$serialization"/>
1068
+ <xsl:with-param name="code" select="substring($dataElements,6,1)"/>
1069
+ </xsl:call-template>
1070
+ </xsl:if>
1071
+ </xsl:if>
1072
+ </xsl:template>
1073
+
1074
+ <!-- data elements for maps -->
1075
+ <xsl:template name="instance008maps">
1076
+ <xsl:param name="serialization" select="'rdfxml'"/>
1077
+ <xsl:param name="dataElements"/>
1078
+ <xsl:param name="pTag" select="'008'"/>
1079
+ <xsl:variable name="vPos23Code" select="substring($dataElements,12,1)" />
1080
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1081
+ <xsl:call-template name="carrier008">
1082
+ <xsl:with-param name="serialization" select="$serialization"/>
1083
+ <xsl:with-param name="code" select="$vPos23Code"/>
1084
+ </xsl:call-template>
1085
+ </xsl:if>
1086
+ </xsl:template>
1087
+
1088
+ <!-- data elements for music -->
1089
+ <xsl:template name="instance008music">
1090
+ <xsl:param name="serialization" select="'rdfxml'"/>
1091
+ <xsl:param name="dataElements"/>
1092
+ <xsl:param name="pTag" select="'008'"/>
1093
+ <xsl:variable name="vPos23Code" select="substring($dataElements,6,1)" />
1094
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1095
+ <xsl:call-template name="carrier008">
1096
+ <xsl:with-param name="serialization" select="$serialization"/>
1097
+ <xsl:with-param name="code" select="$vPos23Code"/>
1098
+ </xsl:call-template>
1099
+ </xsl:if>
1100
+ </xsl:template>
1101
+
1102
+ <!-- data elements for continuing resources -->
1103
+ <xsl:template name="instance008cr">
1104
+ <xsl:param name="serialization" select="'rdfxml'"/>
1105
+ <xsl:param name="dataElements"/>
1106
+ <xsl:param name="pTag" select="'008'"/>
1107
+ <xsl:variable name="regularity">
1108
+ <xsl:value-of select="substring($dataElements,2,1)"/>
1109
+ </xsl:variable>
1110
+ <xsl:for-each select="$codeMaps/maps/frequency/*[name() = substring($dataElements,1,1)]">
1111
+ <xsl:choose>
1112
+ <xsl:when test="$serialization = 'rdfxml'">
1113
+ <bf:frequency>
1114
+ <bf:Frequency>
1115
+ <xsl:if test="@href != ''">
1116
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
1117
+ </xsl:if>
1118
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
1119
+ </bf:Frequency>
1120
+ </bf:frequency>
1121
+ </xsl:when>
1122
+ </xsl:choose>
1123
+ </xsl:for-each>
1124
+ <xsl:if test="$regularity='n' or $regularity='x'">
1125
+ <xsl:choose>
1126
+ <xsl:when test="$serialization = 'rdfxml'">
1127
+ <bf:frequency>
1128
+ <bf:Frequency>
1129
+ <xsl:attribute name="rdf:about">http://id.loc.gov/vocabulary/frequencies/irr</xsl:attribute>
1130
+ <rdfs:label>irregular</rdfs:label>
1131
+ </bf:Frequency>
1132
+ </bf:frequency>
1133
+ </xsl:when>
1134
+ </xsl:choose>
1135
+ </xsl:if>
1136
+ <xsl:variable name="vPos22Code">
1137
+ <xsl:choose>
1138
+ <xsl:when test="substring($dataElements,5,1) = ' '">skip</xsl:when>
1139
+ <xsl:otherwise><xsl:value-of select="substring($dataElements,5,1)"/></xsl:otherwise>
1140
+ </xsl:choose>
1141
+ </xsl:variable>
1142
+ <xsl:for-each select="$codeMaps/maps/crorigform/*[name() = $vPos22Code]">
1143
+ <xsl:choose>
1144
+ <xsl:when test="$serialization = 'rdfxml'">
1145
+ <bf:note>
1146
+ <bf:Note>
1147
+ <rdf:type>
1148
+ <xsl:attribute name="rdf:resource">http://id.loc.gov/vocabulary/mnotetype/orig</xsl:attribute>
1149
+ </rdf:type>
1150
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
1151
+ </bf:Note>
1152
+ </bf:note>
1153
+ </xsl:when>
1154
+ </xsl:choose>
1155
+ </xsl:for-each>
1156
+ <xsl:variable name="vPos23Code" select="substring($dataElements,6,1)" />
1157
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1158
+ <xsl:call-template name="carrier008">
1159
+ <xsl:with-param name="serialization" select="$serialization"/>
1160
+ <xsl:with-param name="code" select="$vPos23Code"/>
1161
+ </xsl:call-template>
1162
+ </xsl:if>
1163
+ </xsl:template>
1164
+
1165
+ <!-- data elements for visual materials -->
1166
+ <xsl:template name="instance008visual">
1167
+ <xsl:param name="serialization" select="'rdfxml'"/>
1168
+ <xsl:param name="dataElements"/>
1169
+ <xsl:param name="pTag" select="'008'"/>
1170
+ <xsl:variable name="vPos23Code" select="substring($dataElements,12,1)" />
1171
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1172
+ <xsl:call-template name="carrier008">
1173
+ <xsl:with-param name="serialization" select="$serialization"/>
1174
+ <xsl:with-param name="code" select="$vPos23Code"/>
1175
+ </xsl:call-template>
1176
+ </xsl:if>
1177
+ </xsl:template>
1178
+
1179
+ <!-- data elements for mixed materials -->
1180
+ <xsl:template name="instance008mixed">
1181
+ <xsl:param name="serialization" select="'rdfxml'"/>
1182
+ <xsl:param name="dataElements"/>
1183
+ <xsl:param name="pTag" select="'008'"/>
1184
+ <xsl:variable name="vPos23Code" select="substring($dataElements,6,1)" />
1185
+ <xsl:if test="$pTag='008' and $vPos23Code!=' '">
1186
+ <xsl:call-template name="carrier008">
1187
+ <xsl:with-param name="serialization" select="$serialization"/>
1188
+ <xsl:with-param name="code" select="$vPos23Code"/>
1189
+ </xsl:call-template>
1190
+ </xsl:if>
1191
+ </xsl:template>
1192
+
1193
+ <!-- illustrativeContent - loop over 4 times -->
1194
+ <xsl:template name="illustrativeContent008">
1195
+ <xsl:param name="serialization" select="'rdfxml'"/>
1196
+ <xsl:param name="illustrations"/>
1197
+ <xsl:param name="i" select="1"/>
1198
+ <xsl:if test="$i &lt; 5">
1199
+ <xsl:variable name="vMillus" select="$codeMaps/maps/millus/*[name() = substring($illustrations,$i,1)]" />
1200
+ <xsl:if test="not(../marc:datafield[@tag='340']/marc:subfield[@code='0']=$vMillus/@href)">
1201
+ <xsl:for-each select="$vMillus">
1202
+ <xsl:choose>
1203
+ <xsl:when test="$serialization = 'rdfxml'">
1204
+ <bf:illustrativeContent>
1205
+ <bf:Illustration>
1206
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
1207
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
1208
+ </bf:Illustration>
1209
+ </bf:illustrativeContent>
1210
+ </xsl:when>
1211
+ </xsl:choose>
1212
+ </xsl:for-each>
1213
+ </xsl:if>
1214
+ <xsl:call-template name="illustrativeContent008">
1215
+ <xsl:with-param name="serialization" select="$serialization"/>
1216
+ <xsl:with-param name="illustrations" select="$illustrations"/>
1217
+ <xsl:with-param name="i" select="$i + 1"/>
1218
+ </xsl:call-template>
1219
+ </xsl:if>
1220
+ </xsl:template>
1221
+
1222
+ <xsl:template name="carrier008">
1223
+ <xsl:param name="serialization" select="'rdfxml'"/>
1224
+ <xsl:param name="code"/>
1225
+ <xsl:variable name="vCarrierUris">
1226
+ <xsl:apply-templates select="ancestor::marc:record" mode="mURI33X">
1227
+ <xsl:with-param name="pTag" select="'338'"/>
1228
+ <xsl:with-param name="pCode" select = "'b'"/>
1229
+ <xsl:with-param name="pStem" select="$carriers"/>
1230
+ </xsl:apply-templates>
1231
+ </xsl:variable>
1232
+ <xsl:for-each select="$codeMaps/maps/carrier/*[name() = $code]">
1233
+ <xsl:if test="not(contains($vCarrierUris,@href))">
1234
+ <xsl:choose>
1235
+ <xsl:when test="$serialization = 'rdfxml'">
1236
+ <bf:carrier>
1237
+ <bf:Carrier>
1238
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
1239
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
1240
+ </bf:Carrier>
1241
+ </bf:carrier>
1242
+ </xsl:when>
1243
+ </xsl:choose>
1244
+ </xsl:if>
1245
+ </xsl:for-each>
1246
+ </xsl:template>
1247
+
1248
+ <!-- cartographicAttributes - loop over 4 characters -->
1249
+ <xsl:template name="cartographicAttributes008">
1250
+ <xsl:param name="serialization" select="'rdfxml'"/>
1251
+ <xsl:param name="relief"/>
1252
+ <xsl:param name="i" select="1"/>
1253
+ <xsl:if test="$i &lt; 5">
1254
+ <xsl:for-each select="$codeMaps/maps/relief/*[name() = substring($relief,$i,1)]">
1255
+ <xsl:choose>
1256
+ <xsl:when test="$serialization = 'rdfxml'">
1257
+ <bf:cartographicAttributes>
1258
+ <bf:Cartographic>
1259
+ <bf:relief>
1260
+ <bf:Relief>
1261
+ <xsl:attribute name="rdf:about"><xsl:value-of select="@href"/></xsl:attribute>
1262
+ <rdfs:label><xsl:value-of select="."/></rdfs:label>
1263
+ </bf:Relief>
1264
+ </bf:relief>
1265
+ </bf:Cartographic>
1266
+ </bf:cartographicAttributes>
1267
+ </xsl:when>
1268
+ </xsl:choose>
1269
+ </xsl:for-each>
1270
+ <xsl:call-template name="cartographicAttributes008">
1271
+ <xsl:with-param name="serialization" select="$serialization"/>
1272
+ <xsl:with-param name="relief" select="$relief"/>
1273
+ <xsl:with-param name="i" select="$i + 1"/>
1274
+ </xsl:call-template>
1275
+ </xsl:if>
1276
+ </xsl:template>
1277
+
1278
+ <xsl:template name="index008">
1279
+ <xsl:param name="serialization" select="'rdfxml'"/>
1280
+ <xsl:param name="code"/>
1281
+ <xsl:variable name="v353" select="../marc:datafield[@tag='353']/marc:subfield[@code='a']" />
1282
+ <xsl:if test="$code = '1' and not($v353[.='index'])">
1283
+ <xsl:choose>
1284
+ <xsl:when test="$serialization = 'rdfxml'">
1285
+ <bf:supplementaryContent>
1286
+ <bf:SupplementaryContent rdf:about="http://id.loc.gov/vocabulary/msupplcont/index">
1287
+ <rdfs:label>index</rdfs:label>
1288
+ </bf:SupplementaryContent>
1289
+ </bf:supplementaryContent>
1290
+ </xsl:when>
1291
+ </xsl:choose>
1292
+ </xsl:if>
1293
+ </xsl:template>
1294
+
1295
+ </xsl:stylesheet>