Bug 9972: Add/change some zebra indexes (MARC21)
[koha.git] / etc / zebradb / marc_defs / marc21 / biblios / biblio-zebra-indexdefs.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 This file has been automatically generated from a Koha index definition file
4 with the stylesheet koha-indexdefs-to-zebra.xsl. Do not manually edit this file,
5 as it may be overwritten. To regenerate, edit the appropriate Koha index
6 definition file (probably something like {biblio,authority}-koha-indexdefs.xml) and run:
7 `xsltproc koha-indexdefs-to-zebra.xsl {biblio,authority}-koha-indexdefs.xml >
8 {biblio,authority}-zebra-indexdefs.xsl` (substituting the appropriate file names).
9 -->
10 <xslo:stylesheet xmlns:xslo="http://www.w3.org/1999/XSL/Transform" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:z="http://indexdata.com/zebra-2.0" xmlns:kohaidx="http://www.koha-community.org/schemas/index-defs" version="1.0">
11   <xslo:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
12   <xslo:template match="text()"/>
13   <xslo:template match="text()" mode="index_subfields"/>
14   <xslo:template match="text()" mode="index_data_field"/>
15   <xslo:template match="text()" mode="index_heading"/>
16   <xslo:template match="text()" mode="index_heading_conditional"/>
17   <xslo:template match="text()" mode="index_match_heading"/>
18   <xslo:template match="text()" mode="index_subject_thesaurus"/>
19   <xslo:template match="/">
20     <xslo:if test="marc:collection">
21       <collection>
22         <xslo:apply-templates select="marc:collection/marc:record"/>
23       </collection>
24     </xslo:if>
25     <xslo:if test="marc:record">
26       <xslo:apply-templates select="marc:record"/>
27     </xslo:if>
28   </xslo:template>
29   <xslo:template match="marc:record">
30     <xslo:variable name="idfield" select="normalize-space(marc:datafield[@tag='999']/marc:subfield[@code='c'])"/>
31     <z:record type="update">
32       <xslo:attribute name="z:id">
33         <xslo:value-of select="$idfield"/>
34       </xslo:attribute>
35       <xslo:apply-templates/>
36       <xslo:apply-templates mode="index_subfields"/>
37       <xslo:apply-templates mode="index_data_field"/>
38       <xslo:apply-templates mode="index_heading"/>
39       <xslo:apply-templates mode="index_heading_conditional"/>
40       <xslo:apply-templates mode="index_match_heading"/>
41       <xslo:apply-templates mode="index_subject_thesaurus"/>
42       <xslo:apply-templates mode="index_all"/>
43     </z:record>
44   </xslo:template>
45   <xslo:template match="marc:leader">
46     <z:index name="llength:w">
47       <xslo:value-of select="substring(., 1, 5)"/>
48     </z:index>
49     <z:index name="rtype:w">
50       <xslo:value-of select="substring(., 7, 1)"/>
51     </z:index>
52     <z:index name="Bib-level:w">
53       <xslo:value-of select="substring(., 8, 1)"/>
54     </z:index>
55   </xslo:template>
56   <xslo:template match="marc:controlfield[@tag='001']">
57     <z:index name="Control-number:w">
58       <xslo:value-of select="."/>
59     </z:index>
60   </xslo:template>
61   <xslo:template match="marc:controlfield[@tag='005']">
62     <z:index name="Date/time-last-modified:w">
63       <xslo:value-of select="."/>
64     </z:index>
65   </xslo:template>
66   <xslo:template match="marc:controlfield[@tag='007']">
67     <z:index name="Microform-generation:n">
68       <xslo:value-of select="substring(., 12, 1)"/>
69     </z:index>
70     <z:index name="Material-type:w">
71       <xslo:value-of select="."/>
72     </z:index>
73     <z:index name="ff7-00:w">
74       <xslo:value-of select="substring(., 1, 1)"/>
75     </z:index>
76     <z:index name="ff7-01:w">
77       <xslo:value-of select="substring(., 2, 1)"/>
78     </z:index>
79     <z:index name="ff7-02:w">
80       <xslo:value-of select="substring(., 3, 1)"/>
81     </z:index>
82     <z:index name="ff7-01-02:w">
83       <xslo:value-of select="substring(., 1, 2)"/>
84     </z:index>
85   </xslo:template>
86   <xslo:template match="marc:controlfield[@tag='008']">
87     <z:index name="date-entered-on-file:n">
88       <xslo:value-of select="substring(., 1, 5)"/>
89     </z:index>
90     <z:index name="date-entered-on-file:s">
91       <xslo:value-of select="substring(., 1, 5)"/>
92     </z:index>
93     <z:index name="pubdate:w">
94       <xslo:value-of select="substring(., 8, 4)"/>
95     </z:index>
96     <z:index name="pubdate:n">
97       <xslo:value-of select="substring(., 8, 4)"/>
98     </z:index>
99     <z:index name="pubdate:y">
100       <xslo:value-of select="substring(., 8, 4)"/>
101     </z:index>
102     <z:index name="pubdate:s">
103       <xslo:value-of select="substring(., 8, 4)"/>
104     </z:index>
105     <z:index name="pl:w">
106       <xslo:value-of select="substring(., 16, 3)"/>
107     </z:index>
108     <z:index name="ta:w">
109       <xslo:value-of select="substring(., 23, 1)"/>
110     </z:index>
111     <z:index name="ff8-23:w">
112       <xslo:value-of select="substring(., 24, 1)"/>
113     </z:index>
114     <z:index name="ff8-29:w">
115       <xslo:value-of select="substring(., 30, 1)"/>
116     </z:index>
117     <z:index name="lf:w">
118       <xslo:value-of select="substring(., 34, 1)"/>
119     </z:index>
120     <z:index name="bio:w">
121       <xslo:value-of select="substring(., 35, 1)"/>
122     </z:index>
123     <z:index name="ln:n">
124       <xslo:value-of select="substring(., 36, 3)"/>
125     </z:index>
126     <z:index name="ctype:w">
127       <xslo:value-of select="substring(., 25, 4)"/>
128     </z:index>
129     <z:index name="Record-source:w">
130       <xslo:value-of select="substring(., 40, 0)"/>
131     </z:index>
132   </xslo:template>
133   <xslo:template mode="index_subfields" match="marc:datafield[@tag='020']">
134     <xslo:for-each select="marc:subfield">
135       <xslo:if test="contains('a', @code)">
136         <z:index name="ISBN:w Identifier-standard:w">
137           <xslo:value-of select="."/>
138         </z:index>
139       </xslo:if>
140     </xslo:for-each>
141   </xslo:template>
142   <xslo:template mode="index_subfields" match="marc:datafield[@tag='022']">
143     <xslo:for-each select="marc:subfield">
144       <xslo:if test="contains('a', @code)">
145         <z:index name="ISSN:w Identifier-standard:w">
146           <xslo:value-of select="."/>
147         </z:index>
148       </xslo:if>
149     </xslo:for-each>
150   </xslo:template>
151   <xslo:template mode="index_subfields" match="marc:datafield[@tag='024']">
152     <xslo:for-each select="marc:subfield">
153       <xslo:if test="contains('a', @code)">
154         <z:index name="Identifier-other:w">
155           <xslo:value-of select="."/>
156         </z:index>
157       </xslo:if>
158     </xslo:for-each>
159   </xslo:template>
160   <xslo:template mode="index_subfields" match="marc:datafield[@tag='041']">
161     <xslo:for-each select="marc:subfield">
162       <xslo:if test="contains('a', @code)">
163         <z:index name="ln:w ln-audio:w">
164           <xslo:value-of select="."/>
165         </z:index>
166       </xslo:if>
167     </xslo:for-each>
168     <xslo:for-each select="marc:subfield">
169       <xslo:if test="contains('d', @code)">
170         <z:index name="ln:w">
171           <xslo:value-of select="."/>
172         </z:index>
173       </xslo:if>
174     </xslo:for-each>
175     <xslo:for-each select="marc:subfield">
176       <xslo:if test="contains('e', @code)">
177         <z:index name="ln:w">
178           <xslo:value-of select="."/>
179         </z:index>
180       </xslo:if>
181     </xslo:for-each>
182     <xslo:for-each select="marc:subfield">
183       <xslo:if test="contains('h', @code)">
184         <z:index name="language-original:w">
185           <xslo:value-of select="."/>
186         </z:index>
187       </xslo:if>
188     </xslo:for-each>
189     <xslo:for-each select="marc:subfield">
190       <xslo:if test="contains('j', @code)">
191         <z:index name="ln:w ln-subtitle:w">
192           <xslo:value-of select="."/>
193         </z:index>
194       </xslo:if>
195     </xslo:for-each>
196   </xslo:template>
197   <xslo:template mode="index_subfields" match="marc:datafield[@tag='050']">
198     <xslo:for-each select="marc:subfield">
199       <xslo:if test="contains('b', @code)">
200         <z:index name="LC-call-number:w LC-call-number:p LC-call-number:s">
201           <xslo:value-of select="."/>
202         </z:index>
203       </xslo:if>
204     </xslo:for-each>
205   </xslo:template>
206   <xslo:template mode="index_subfields" match="marc:datafield[@tag='100']">
207     <xslo:for-each select="marc:subfield">
208       <xslo:if test="contains('9', @code)">
209         <z:index name="Cross-Reference:w Koha-Auth-Number:w">
210           <xslo:value-of select="."/>
211         </z:index>
212       </xslo:if>
213     </xslo:for-each>
214     <xslo:for-each select="marc:subfield">
215       <xslo:if test="contains('a', @code)">
216         <z:index name="Author:w Author:p Author:s Editor:w Author-personal-bibliography:w Author-personal-bibliography:p Author-personal-bibliography:s">
217           <xslo:value-of select="."/>
218         </z:index>
219       </xslo:if>
220     </xslo:for-each>
221   </xslo:template>
222   <xslo:template mode="index_subfields" match="marc:datafield[@tag='110']">
223     <xslo:for-each select="marc:subfield">
224       <xslo:if test="contains('9', @code)">
225         <z:index name="Koha-Auth-Number:w">
226           <xslo:value-of select="."/>
227         </z:index>
228       </xslo:if>
229     </xslo:for-each>
230   </xslo:template>
231   <xslo:template mode="index_subfields" match="marc:datafield[@tag='111']">
232     <xslo:for-each select="marc:subfield">
233       <xslo:if test="contains('9', @code)">
234         <z:index name="Koha-Auth-Number:w">
235           <xslo:value-of select="."/>
236         </z:index>
237       </xslo:if>
238     </xslo:for-each>
239   </xslo:template>
240   <xslo:template mode="index_subfields" match="marc:datafield[@tag='130']">
241     <xslo:for-each select="marc:subfield">
242       <xslo:if test="contains('n', @code)">
243         <z:index name="Thematic-number:w">
244           <xslo:value-of select="."/>
245         </z:index>
246       </xslo:if>
247     </xslo:for-each>
248     <xslo:for-each select="marc:subfield">
249       <xslo:if test="contains('r', @code)">
250         <z:index name="Music-key:w">
251           <xslo:value-of select="."/>
252         </z:index>
253       </xslo:if>
254     </xslo:for-each>
255     <xslo:for-each select="marc:subfield">
256       <xslo:if test="contains('9', @code)">
257         <z:index name="Koha-Auth-Number:w">
258           <xslo:value-of select="."/>
259         </z:index>
260       </xslo:if>
261     </xslo:for-each>
262   </xslo:template>
263   <xslo:template mode="index_subfields" match="marc:datafield[@tag='240']">
264     <xslo:for-each select="marc:subfield">
265       <xslo:if test="contains('r', @code)">
266         <z:index name="Music-key:w">
267           <xslo:value-of select="."/>
268         </z:index>
269       </xslo:if>
270     </xslo:for-each>
271     <xslo:for-each select="marc:subfield">
272       <xslo:if test="contains('n', @code)">
273         <z:index name="Thematic-number:w">
274           <xslo:value-of select="."/>
275         </z:index>
276       </xslo:if>
277     </xslo:for-each>
278   </xslo:template>
279   <xslo:template mode="index_subfields" match="marc:datafield[@tag='243']">
280     <xslo:for-each select="marc:subfield">
281       <xslo:if test="contains('n', @code)">
282         <z:index name="Thematic-number:w">
283           <xslo:value-of select="."/>
284         </z:index>
285       </xslo:if>
286     </xslo:for-each>
287     <xslo:for-each select="marc:subfield">
288       <xslo:if test="contains('r', @code)">
289         <z:index name="Music-key:w">
290           <xslo:value-of select="."/>
291         </z:index>
292       </xslo:if>
293     </xslo:for-each>
294   </xslo:template>
295   <xslo:template mode="index_subfields" match="marc:datafield[@tag='245']">
296     <xslo:for-each select="marc:subfield">
297       <xslo:if test="contains('a', @code)">
298         <z:index name="Title-cover:w Title-cover:p Title-cover:s Title:w Title:p Title:s">
299           <xslo:value-of select="."/>
300         </z:index>
301       </xslo:if>
302     </xslo:for-each>
303     <xslo:for-each select="marc:subfield">
304       <xslo:if test="contains('c', @code)">
305         <z:index name="Author:w Author-in-order:w Author-in-order:p Author-in-order:s">
306           <xslo:value-of select="."/>
307         </z:index>
308       </xslo:if>
309     </xslo:for-each>
310     <xslo:for-each select="marc:subfield">
311       <xslo:if test="contains('9', @code)">
312         <z:index name="Cross-Reference:w Koha-Auth-Number:w">
313           <xslo:value-of select="."/>
314         </z:index>
315       </xslo:if>
316     </xslo:for-each>
317   </xslo:template>
318   <xslo:template mode="index_subfields" match="marc:datafield[@tag='260']">
319     <xslo:for-each select="marc:subfield">
320       <xslo:if test="contains('a', @code)">
321         <z:index name="pl:w pl:p">
322           <xslo:value-of select="."/>
323         </z:index>
324       </xslo:if>
325     </xslo:for-each>
326     <xslo:for-each select="marc:subfield">
327       <xslo:if test="contains('b', @code)">
328         <z:index name="Publisher:w Publisher:p">
329           <xslo:value-of select="."/>
330         </z:index>
331       </xslo:if>
332     </xslo:for-each>
333     <xslo:for-each select="marc:subfield">
334       <xslo:if test="contains('c', @code)">
335         <z:index name="copydate:w copydate:s">
336           <xslo:value-of select="."/>
337         </z:index>
338       </xslo:if>
339     </xslo:for-each>
340   </xslo:template>
341   <xslo:template mode="index_subfields" match="marc:datafield[@tag='400']">
342     <xslo:for-each select="marc:subfield">
343       <xslo:if test="contains('a', @code)">
344         <z:index name="Name-and-title:w">
345           <xslo:value-of select="."/>
346         </z:index>
347       </xslo:if>
348     </xslo:for-each>
349     <xslo:for-each select="marc:subfield">
350       <xslo:if test="contains('t', @code)">
351         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w">
352           <xslo:value-of select="."/>
353         </z:index>
354       </xslo:if>
355     </xslo:for-each>
356     <xslo:for-each select="marc:subfield">
357       <xslo:if test="contains('9', @code)">
358         <z:index name="Koha-Auth-Number:w">
359           <xslo:value-of select="."/>
360         </z:index>
361       </xslo:if>
362     </xslo:for-each>
363   </xslo:template>
364   <xslo:template mode="index_subfields" match="marc:datafield[@tag='410']">
365     <xslo:for-each select="marc:subfield">
366       <xslo:if test="contains('a', @code)">
367         <z:index name="Name-and-title:w">
368           <xslo:value-of select="."/>
369         </z:index>
370       </xslo:if>
371     </xslo:for-each>
372     <xslo:for-each select="marc:subfield">
373       <xslo:if test="contains('t', @code)">
374         <z:index name="Author-title:w Title:w Title-series:w">
375           <xslo:value-of select="."/>
376         </z:index>
377       </xslo:if>
378     </xslo:for-each>
379     <xslo:for-each select="marc:subfield">
380       <xslo:if test="contains('9', @code)">
381         <z:index name="Koha-Auth-Number:w">
382           <xslo:value-of select="."/>
383         </z:index>
384       </xslo:if>
385     </xslo:for-each>
386   </xslo:template>
387   <xslo:template mode="index_subfields" match="marc:datafield[@tag='411']">
388     <xslo:for-each select="marc:subfield">
389       <xslo:if test="contains('a', @code)">
390         <z:index name="Name-and-title:w">
391           <xslo:value-of select="."/>
392         </z:index>
393       </xslo:if>
394     </xslo:for-each>
395     <xslo:for-each select="marc:subfield">
396       <xslo:if test="contains('t', @code)">
397         <z:index name="Author-title:w Title-series:w">
398           <xslo:value-of select="."/>
399         </z:index>
400       </xslo:if>
401     </xslo:for-each>
402   </xslo:template>
403   <xslo:template mode="index_subfields" match="marc:datafield[@tag='440']">
404     <xslo:for-each select="marc:subfield">
405       <xslo:if test="contains('a', @code)">
406         <z:index name="Title-series:w Title-series:p">
407           <xslo:value-of select="."/>
408         </z:index>
409       </xslo:if>
410     </xslo:for-each>
411     <xslo:for-each select="marc:subfield">
412       <xslo:if test="contains('9', @code)">
413         <z:index name="Koha-Auth-Number:w">
414           <xslo:value-of select="."/>
415         </z:index>
416       </xslo:if>
417     </xslo:for-each>
418   </xslo:template>
419   <xslo:template mode="index_subfields" match="marc:datafield[@tag='490']">
420     <xslo:for-each select="marc:subfield">
421       <xslo:if test="contains('a', @code)">
422         <z:index name="Title-series:w Title-series:p">
423           <xslo:value-of select="."/>
424         </z:index>
425       </xslo:if>
426     </xslo:for-each>
427     <xslo:for-each select="marc:subfield">
428       <xslo:if test="contains('9', @code)">
429         <z:index name="Koha-Auth-Number:w">
430           <xslo:value-of select="."/>
431         </z:index>
432       </xslo:if>
433     </xslo:for-each>
434   </xslo:template>
435   <xslo:template mode="index_subfields" match="marc:datafield[@tag='505']">
436     <xslo:for-each select="marc:subfield">
437       <xslo:if test="contains('r', @code)">
438         <z:index name="Author:w">
439           <xslo:value-of select="."/>
440         </z:index>
441       </xslo:if>
442     </xslo:for-each>
443     <xslo:for-each select="marc:subfield">
444       <xslo:if test="contains('t', @code)">
445         <z:index name="Title:w">
446           <xslo:value-of select="."/>
447         </z:index>
448       </xslo:if>
449     </xslo:for-each>
450   </xslo:template>
451   <xslo:template mode="index_subfields" match="marc:datafield[@tag='521']">
452     <xslo:for-each select="marc:subfield">
453       <xslo:if test="contains('a', @code)">
454         <z:index name="lex:w lex:p lex:n">
455           <xslo:value-of select="."/>
456         </z:index>
457       </xslo:if>
458     </xslo:for-each>
459   </xslo:template>
460   <xslo:template mode="index_subfields" match="marc:datafield[@tag='526']">
461     <xslo:for-each select="marc:subfield">
462       <xslo:if test="contains('c', @code)">
463         <z:index name="arl:w arl:n">
464           <xslo:value-of select="."/>
465         </z:index>
466       </xslo:if>
467     </xslo:for-each>
468     <xslo:for-each select="marc:subfield">
469       <xslo:if test="contains('d', @code)">
470         <z:index name="arp:w arp:n">
471           <xslo:value-of select="."/>
472         </z:index>
473       </xslo:if>
474     </xslo:for-each>
475   </xslo:template>
476   <xslo:template mode="index_subfields" match="marc:datafield[@tag='600']">
477     <xslo:for-each select="marc:subfield">
478       <xslo:if test="contains('a', @code)">
479         <z:index name="Name-and-title:w Name:w Personal-name:w Subject-name-personal:w Subject:w Subject:p">
480           <xslo:value-of select="."/>
481         </z:index>
482       </xslo:if>
483     </xslo:for-each>
484     <xslo:for-each select="marc:subfield">
485       <xslo:if test="contains('t', @code)">
486         <z:index name="Name-and-title:w Title:w Subject:w Subject:p">
487           <xslo:value-of select="."/>
488         </z:index>
489       </xslo:if>
490     </xslo:for-each>
491     <xslo:for-each select="marc:subfield">
492       <xslo:if test="contains('9', @code)">
493         <z:index name="Koha-Auth-Number:w">
494           <xslo:value-of select="."/>
495         </z:index>
496       </xslo:if>
497     </xslo:for-each>
498   </xslo:template>
499   <xslo:template mode="index_subfields" match="marc:datafield[@tag='610']">
500     <xslo:for-each select="marc:subfield">
501       <xslo:if test="contains('a', @code)">
502         <z:index name="Name-and-title:w Subject:w Subject:p">
503           <xslo:value-of select="."/>
504         </z:index>
505       </xslo:if>
506     </xslo:for-each>
507     <xslo:for-each select="marc:subfield">
508       <xslo:if test="contains('t', @code)">
509         <z:index name="Name-and-title:w Title:w Subject:w Subject:p">
510           <xslo:value-of select="."/>
511         </z:index>
512       </xslo:if>
513     </xslo:for-each>
514     <xslo:for-each select="marc:subfield">
515       <xslo:if test="contains('9', @code)">
516         <z:index name="Koha-Auth-Number:w">
517           <xslo:value-of select="."/>
518         </z:index>
519       </xslo:if>
520     </xslo:for-each>
521   </xslo:template>
522   <xslo:template mode="index_subfields" match="marc:datafield[@tag='611']">
523     <xslo:for-each select="marc:subfield">
524       <xslo:if test="contains('a', @code)">
525         <z:index name="Name-and-title:w Subject:w Subject:p">
526           <xslo:value-of select="."/>
527         </z:index>
528       </xslo:if>
529     </xslo:for-each>
530     <xslo:for-each select="marc:subfield">
531       <xslo:if test="contains('t', @code)">
532         <z:index name="Name-and-title:w Title:w Subject:w Subject:p">
533           <xslo:value-of select="."/>
534         </z:index>
535       </xslo:if>
536     </xslo:for-each>
537     <xslo:for-each select="marc:subfield">
538       <xslo:if test="contains('9', @code)">
539         <z:index name="Koha-Auth-Number:w">
540           <xslo:value-of select="."/>
541         </z:index>
542       </xslo:if>
543     </xslo:for-each>
544   </xslo:template>
545   <xslo:template mode="index_subfields" match="marc:datafield[@tag='630']">
546     <xslo:for-each select="marc:subfield">
547       <xslo:if test="contains('n', @code)">
548         <z:index name="Thematic-number:w Subject:w Subject:p">
549           <xslo:value-of select="."/>
550         </z:index>
551       </xslo:if>
552     </xslo:for-each>
553     <xslo:for-each select="marc:subfield">
554       <xslo:if test="contains('r', @code)">
555         <z:index name="Music-key:w Subject:w Subject:p">
556           <xslo:value-of select="."/>
557         </z:index>
558       </xslo:if>
559     </xslo:for-each>
560     <xslo:for-each select="marc:subfield">
561       <xslo:if test="contains('9', @code)">
562         <z:index name="Koha-Auth-Number:w">
563           <xslo:value-of select="."/>
564         </z:index>
565       </xslo:if>
566     </xslo:for-each>
567   </xslo:template>
568   <xslo:template mode="index_subfields" match="marc:datafield[@tag='650']">
569     <xslo:for-each select="marc:subfield">
570       <xslo:if test="contains('9', @code)">
571         <z:index name="Koha-Auth-Number:w">
572           <xslo:value-of select="."/>
573         </z:index>
574       </xslo:if>
575     </xslo:for-each>
576   </xslo:template>
577   <xslo:template mode="index_subfields" match="marc:datafield[@tag='651']">
578     <xslo:for-each select="marc:subfield">
579       <xslo:if test="contains('9', @code)">
580         <z:index name="Koha-Auth-Number:w">
581           <xslo:value-of select="."/>
582         </z:index>
583       </xslo:if>
584     </xslo:for-each>
585   </xslo:template>
586   <xslo:template mode="index_subfields" match="marc:datafield[@tag='652']">
587     <xslo:for-each select="marc:subfield">
588       <xslo:if test="contains('9', @code)">
589         <z:index name="Koha-Auth-Number:w">
590           <xslo:value-of select="."/>
591         </z:index>
592       </xslo:if>
593     </xslo:for-each>
594   </xslo:template>
595   <xslo:template mode="index_subfields" match="marc:datafield[@tag='653']">
596     <xslo:for-each select="marc:subfield">
597       <xslo:if test="contains('a', @code)">
598         <z:index name="Index-term-uncontrolled:w Index-term-uncontrolled:p Subject:w Subject:p">
599           <xslo:value-of select="."/>
600         </z:index>
601       </xslo:if>
602     </xslo:for-each>
603     <xslo:for-each select="marc:subfield">
604       <xslo:if test="contains('9', @code)">
605         <z:index name="Koha-Auth-Number:w">
606           <xslo:value-of select="."/>
607         </z:index>
608       </xslo:if>
609     </xslo:for-each>
610   </xslo:template>
611   <xslo:template mode="index_subfields" match="marc:datafield[@tag='654']">
612     <xslo:for-each select="marc:subfield">
613       <xslo:if test="contains('9', @code)">
614         <z:index name="Koha-Auth-Number:w">
615           <xslo:value-of select="."/>
616         </z:index>
617       </xslo:if>
618     </xslo:for-each>
619   </xslo:template>
620   <xslo:template mode="index_subfields" match="marc:datafield[@tag='655']">
621     <xslo:for-each select="marc:subfield">
622       <xslo:if test="contains('a', @code)">
623         <z:index name="Index-term-genre:w Index-term-genre:p Subject:w Subject:p">
624           <xslo:value-of select="."/>
625         </z:index>
626       </xslo:if>
627     </xslo:for-each>
628     <xslo:for-each select="marc:subfield">
629       <xslo:if test="contains('9', @code)">
630         <z:index name="Koha-Auth-Number:w">
631           <xslo:value-of select="."/>
632         </z:index>
633       </xslo:if>
634     </xslo:for-each>
635   </xslo:template>
636   <xslo:template mode="index_subfields" match="marc:datafield[@tag='656']">
637     <xslo:for-each select="marc:subfield">
638       <xslo:if test="contains('9', @code)">
639         <z:index name="Koha-Auth-Number:w">
640           <xslo:value-of select="."/>
641         </z:index>
642       </xslo:if>
643     </xslo:for-each>
644   </xslo:template>
645   <xslo:template mode="index_subfields" match="marc:datafield[@tag='657']">
646     <xslo:for-each select="marc:subfield">
647       <xslo:if test="contains('9', @code)">
648         <z:index name="Koha-Auth-Number:w">
649           <xslo:value-of select="."/>
650         </z:index>
651       </xslo:if>
652     </xslo:for-each>
653   </xslo:template>
654   <xslo:template mode="index_subfields" match="marc:datafield[@tag='658']">
655     <xslo:for-each select="marc:subfield">
656       <xslo:if test="contains('a', @code)">
657         <z:index name="curriculum:w curriculum:p Subject:w Subject:p">
658           <xslo:value-of select="."/>
659         </z:index>
660       </xslo:if>
661     </xslo:for-each>
662     <xslo:for-each select="marc:subfield">
663       <xslo:if test="contains('b', @code)">
664         <z:index name="curriculum:w curriculum:p Subject:w Subject:p">
665           <xslo:value-of select="."/>
666         </z:index>
667       </xslo:if>
668     </xslo:for-each>
669     <xslo:for-each select="marc:subfield">
670       <xslo:if test="contains('c', @code)">
671         <z:index name="curriculum:w curriculum:p Subject:w Subject:p">
672           <xslo:value-of select="."/>
673         </z:index>
674       </xslo:if>
675     </xslo:for-each>
676   </xslo:template>
677   <xslo:template mode="index_subfields" match="marc:datafield[@tag='690']">
678     <xslo:for-each select="marc:subfield">
679       <xslo:if test="contains('9', @code)">
680         <z:index name="Koha-Auth-Number:w">
681           <xslo:value-of select="."/>
682         </z:index>
683       </xslo:if>
684     </xslo:for-each>
685   </xslo:template>
686   <xslo:template mode="index_subfields" match="marc:datafield[@tag='700']">
687     <xslo:for-each select="marc:subfield">
688       <xslo:if test="contains('9', @code)">
689         <z:index name="Cross-Reference:w Koha-Auth-Number:w">
690           <xslo:value-of select="."/>
691         </z:index>
692       </xslo:if>
693     </xslo:for-each>
694     <xslo:for-each select="marc:subfield">
695       <xslo:if test="contains('a', @code)">
696         <z:index name="Author:w Author:p">
697           <xslo:value-of select="."/>
698         </z:index>
699       </xslo:if>
700     </xslo:for-each>
701     <xslo:for-each select="marc:subfield">
702       <xslo:if test="contains('n', @code)">
703         <z:index name="Thematic-number:w">
704           <xslo:value-of select="."/>
705         </z:index>
706       </xslo:if>
707     </xslo:for-each>
708     <xslo:for-each select="marc:subfield">
709       <xslo:if test="contains('r', @code)">
710         <z:index name="Music-key:w">
711           <xslo:value-of select="."/>
712         </z:index>
713       </xslo:if>
714     </xslo:for-each>
715     <xslo:for-each select="marc:subfield">
716       <xslo:if test="contains('t', @code)">
717         <z:index name="Author-title:w Name-and-title:w Title:w Title-uniform:w">
718           <xslo:value-of select="."/>
719         </z:index>
720       </xslo:if>
721     </xslo:for-each>
722   </xslo:template>
723   <xslo:template mode="index_subfields" match="marc:datafield[@tag='710']">
724     <xslo:for-each select="marc:subfield">
725       <xslo:if test="contains('t', @code)">
726         <z:index name="Author-title:w Name-and-title:w Title:w Title-uniform:w">
727           <xslo:value-of select="."/>
728         </z:index>
729       </xslo:if>
730     </xslo:for-each>
731     <xslo:for-each select="marc:subfield">
732       <xslo:if test="contains('a', @code)">
733         <z:index name="Name-and-title:w">
734           <xslo:value-of select="."/>
735         </z:index>
736       </xslo:if>
737     </xslo:for-each>
738     <xslo:for-each select="marc:subfield">
739       <xslo:if test="contains('9', @code)">
740         <z:index name="Koha-Auth-Number:w">
741           <xslo:value-of select="."/>
742         </z:index>
743       </xslo:if>
744     </xslo:for-each>
745   </xslo:template>
746   <xslo:template mode="index_subfields" match="marc:datafield[@tag='711']">
747     <xslo:for-each select="marc:subfield">
748       <xslo:if test="contains('a', @code)">
749         <z:index name="Name-and-title:w">
750           <xslo:value-of select="."/>
751         </z:index>
752       </xslo:if>
753     </xslo:for-each>
754     <xslo:for-each select="marc:subfield">
755       <xslo:if test="contains('t', @code)">
756         <z:index name="Author-title:w Title:w Title-uniform:w">
757           <xslo:value-of select="."/>
758         </z:index>
759       </xslo:if>
760     </xslo:for-each>
761     <xslo:for-each select="marc:subfield">
762       <xslo:if test="contains('9', @code)">
763         <z:index name="Koha-Auth-Number:w">
764           <xslo:value-of select="."/>
765         </z:index>
766       </xslo:if>
767     </xslo:for-each>
768   </xslo:template>
769   <xslo:template mode="index_subfields" match="marc:datafield[@tag='730']">
770     <xslo:for-each select="marc:subfield">
771       <xslo:if test="contains('n', @code)">
772         <z:index name="Thematic-number:w">
773           <xslo:value-of select="."/>
774         </z:index>
775       </xslo:if>
776     </xslo:for-each>
777     <xslo:for-each select="marc:subfield">
778       <xslo:if test="contains('r', @code)">
779         <z:index name="Music-key:w">
780           <xslo:value-of select="."/>
781         </z:index>
782       </xslo:if>
783     </xslo:for-each>
784     <xslo:for-each select="marc:subfield">
785       <xslo:if test="contains('9', @code)">
786         <z:index name="Koha-Auth-Number:w">
787           <xslo:value-of select="."/>
788         </z:index>
789       </xslo:if>
790     </xslo:for-each>
791   </xslo:template>
792   <xslo:template mode="index_subfields" match="marc:datafield[@tag='751']">
793     <xslo:for-each select="marc:subfield">
794       <xslo:if test="contains('a', @code)">
795         <z:index name="Name-geographic:w">
796           <xslo:value-of select="."/>
797         </z:index>
798       </xslo:if>
799     </xslo:for-each>
800     <xslo:for-each select="marc:subfield">
801       <xslo:if test="contains('9', @code)">
802         <z:index name="Koha-Auth-Number:w">
803           <xslo:value-of select="."/>
804         </z:index>
805       </xslo:if>
806     </xslo:for-each>
807   </xslo:template>
808   <xslo:template mode="index_subfields" match="marc:datafield[@tag='770']">
809     <xslo:for-each select="marc:subfield">
810       <xslo:if test="contains('w', @code)">
811         <z:index name="Record-control-number:w">
812           <xslo:value-of select="."/>
813         </z:index>
814       </xslo:if>
815     </xslo:for-each>
816   </xslo:template>
817   <xslo:template mode="index_subfields" match="marc:datafield[@tag='772']">
818     <xslo:for-each select="marc:subfield">
819       <xslo:if test="contains('w', @code)">
820         <z:index name="Record-control-number:w">
821           <xslo:value-of select="."/>
822         </z:index>
823       </xslo:if>
824     </xslo:for-each>
825   </xslo:template>
826   <xslo:template mode="index_subfields" match="marc:datafield[@tag='773']">
827     <xslo:for-each select="marc:subfield">
828       <xslo:if test="contains('a', @code)">
829         <z:index name="Host-item:w">
830           <xslo:value-of select="."/>
831         </z:index>
832       </xslo:if>
833     </xslo:for-each>
834     <xslo:for-each select="marc:subfield">
835       <xslo:if test="contains('9', @code)">
836         <z:index name="Host-Item-Number:w">
837           <xslo:value-of select="."/>
838         </z:index>
839       </xslo:if>
840     </xslo:for-each>
841     <xslo:for-each select="marc:subfield">
842       <xslo:if test="contains('t', @code)">
843         <z:index name="Host-item:w">
844           <xslo:value-of select="."/>
845         </z:index>
846       </xslo:if>
847     </xslo:for-each>
848     <xslo:for-each select="marc:subfield">
849       <xslo:if test="contains('w', @code)">
850         <z:index name="Record-control-number:w">
851           <xslo:value-of select="."/>
852         </z:index>
853       </xslo:if>
854     </xslo:for-each>
855   </xslo:template>
856   <xslo:template mode="index_subfields" match="marc:datafield[@tag='774']">
857     <xslo:for-each select="marc:subfield">
858       <xslo:if test="contains('w', @code)">
859         <z:index name="Record-control-number:w">
860           <xslo:value-of select="."/>
861         </z:index>
862       </xslo:if>
863     </xslo:for-each>
864   </xslo:template>
865   <xslo:template mode="index_subfields" match="marc:datafield[@tag='775']">
866     <xslo:for-each select="marc:subfield">
867       <xslo:if test="contains('w', @code)">
868         <z:index name="Record-control-number:w">
869           <xslo:value-of select="."/>
870         </z:index>
871       </xslo:if>
872     </xslo:for-each>
873   </xslo:template>
874   <xslo:template mode="index_subfields" match="marc:datafield[@tag='776']">
875     <xslo:for-each select="marc:subfield">
876       <xslo:if test="contains('w', @code)">
877         <z:index name="Record-control-number:w">
878           <xslo:value-of select="."/>
879         </z:index>
880       </xslo:if>
881     </xslo:for-each>
882   </xslo:template>
883   <xslo:template mode="index_subfields" match="marc:datafield[@tag='777']">
884     <xslo:for-each select="marc:subfield">
885       <xslo:if test="contains('w', @code)">
886         <z:index name="Record-control-number:w">
887           <xslo:value-of select="."/>
888         </z:index>
889       </xslo:if>
890     </xslo:for-each>
891   </xslo:template>
892   <xslo:template mode="index_subfields" match="marc:datafield[@tag='780']">
893     <xslo:for-each select="marc:subfield">
894       <xslo:if test="contains('t', @code)">
895         <z:index name="Title:w">
896           <xslo:value-of select="."/>
897         </z:index>
898       </xslo:if>
899     </xslo:for-each>
900     <xslo:for-each select="marc:subfield">
901       <xslo:if test="contains('w', @code)">
902         <z:index name="Record-control-number:w">
903           <xslo:value-of select="."/>
904         </z:index>
905       </xslo:if>
906     </xslo:for-each>
907   </xslo:template>
908   <xslo:template mode="index_subfields" match="marc:datafield[@tag='785']">
909     <xslo:for-each select="marc:subfield">
910       <xslo:if test="contains('w', @code)">
911         <z:index name="Record-control-number:w">
912           <xslo:value-of select="."/>
913         </z:index>
914       </xslo:if>
915     </xslo:for-each>
916   </xslo:template>
917   <xslo:template mode="index_subfields" match="marc:datafield[@tag='787']">
918     <xslo:for-each select="marc:subfield">
919       <xslo:if test="contains('w', @code)">
920         <z:index name="Record-control-number:w">
921           <xslo:value-of select="."/>
922         </z:index>
923       </xslo:if>
924     </xslo:for-each>
925   </xslo:template>
926   <xslo:template mode="index_subfields" match="marc:datafield[@tag='800']">
927     <xslo:for-each select="marc:subfield">
928       <xslo:if test="contains('a', @code)">
929         <z:index name="Name-and-title:w Title-series:w Title-series:p">
930           <xslo:value-of select="."/>
931         </z:index>
932       </xslo:if>
933     </xslo:for-each>
934     <xslo:for-each select="marc:subfield">
935       <xslo:if test="contains('t', @code)">
936         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w Title-series:p">
937           <xslo:value-of select="."/>
938         </z:index>
939       </xslo:if>
940     </xslo:for-each>
941     <xslo:for-each select="marc:subfield">
942       <xslo:if test="contains('9', @code)">
943         <z:index name="Koha-Auth-Number:w">
944           <xslo:value-of select="."/>
945         </z:index>
946       </xslo:if>
947     </xslo:for-each>
948     <xslo:for-each select="marc:subfield">
949       <xslo:if test="contains('w', @code)">
950         <z:index name="Record-control-number:w">
951           <xslo:value-of select="."/>
952         </z:index>
953       </xslo:if>
954     </xslo:for-each>
955   </xslo:template>
956   <xslo:template mode="index_subfields" match="marc:datafield[@tag='810']">
957     <xslo:for-each select="marc:subfield">
958       <xslo:if test="contains('a', @code)">
959         <z:index name="Name-and-title:w Title-series:w Title-series:p">
960           <xslo:value-of select="."/>
961         </z:index>
962       </xslo:if>
963     </xslo:for-each>
964     <xslo:for-each select="marc:subfield">
965       <xslo:if test="contains('t', @code)">
966         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w Title-series:p">
967           <xslo:value-of select="."/>
968         </z:index>
969       </xslo:if>
970     </xslo:for-each>
971     <xslo:for-each select="marc:subfield">
972       <xslo:if test="contains('w', @code)">
973         <z:index name="Record-control-number:w">
974           <xslo:value-of select="."/>
975         </z:index>
976       </xslo:if>
977     </xslo:for-each>
978     <xslo:for-each select="marc:subfield">
979       <xslo:if test="contains('9', @code)">
980         <z:index name="Koha-Auth-Number:w">
981           <xslo:value-of select="."/>
982         </z:index>
983       </xslo:if>
984     </xslo:for-each>
985   </xslo:template>
986   <xslo:template mode="index_subfields" match="marc:datafield[@tag='811']">
987     <xslo:for-each select="marc:subfield">
988       <xslo:if test="contains('a', @code)">
989         <z:index name="Name-and-title:w Title-series:w Title-series:p">
990           <xslo:value-of select="."/>
991         </z:index>
992       </xslo:if>
993     </xslo:for-each>
994     <xslo:for-each select="marc:subfield">
995       <xslo:if test="contains('9', @code)">
996         <z:index name="Koha-Auth-Number:w">
997           <xslo:value-of select="."/>
998         </z:index>
999       </xslo:if>
1000     </xslo:for-each>
1001     <xslo:for-each select="marc:subfield">
1002       <xslo:if test="contains('t', @code)">
1003         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w Title-series:p">
1004           <xslo:value-of select="."/>
1005         </z:index>
1006       </xslo:if>
1007     </xslo:for-each>
1008     <xslo:for-each select="marc:subfield">
1009       <xslo:if test="contains('w', @code)">
1010         <z:index name="Record-control-number:w">
1011           <xslo:value-of select="."/>
1012         </z:index>
1013       </xslo:if>
1014     </xslo:for-each>
1015   </xslo:template>
1016   <xslo:template mode="index_subfields" match="marc:datafield[@tag='830']">
1017     <xslo:for-each select="marc:subfield">
1018       <xslo:if test="contains('w', @code)">
1019         <z:index name="Record-control-number:w">
1020           <xslo:value-of select="."/>
1021         </z:index>
1022       </xslo:if>
1023     </xslo:for-each>
1024     <xslo:for-each select="marc:subfield">
1025       <xslo:if test="contains('9', @code)">
1026         <z:index name="Koha-Auth-Number:w">
1027           <xslo:value-of select="."/>
1028         </z:index>
1029       </xslo:if>
1030     </xslo:for-each>
1031   </xslo:template>
1032   <xslo:template mode="index_subfields" match="marc:datafield[@tag='999']">
1033     <xslo:for-each select="marc:subfield">
1034       <xslo:if test="contains('c', @code)">
1035         <z:index name="Local-Number:n Local-Number:w Local-Number:s">
1036           <xslo:value-of select="."/>
1037         </z:index>
1038       </xslo:if>
1039     </xslo:for-each>
1040     <xslo:for-each select="marc:subfield">
1041       <xslo:if test="contains('d', @code)">
1042         <z:index name="biblioitemnumber:n biblioitemnumber:w biblioitemnumber:s">
1043           <xslo:value-of select="."/>
1044         </z:index>
1045       </xslo:if>
1046     </xslo:for-each>
1047   </xslo:template>
1048   <xslo:template mode="index_subfields" match="marc:datafield[@tag='942']">
1049     <xslo:for-each select="marc:subfield">
1050       <xslo:if test="contains('0', @code)">
1051         <z:index name="totalissues:n totalissues:s">
1052           <xslo:value-of select="."/>
1053         </z:index>
1054       </xslo:if>
1055     </xslo:for-each>
1056     <xslo:for-each select="marc:subfield">
1057       <xslo:if test="contains('2', @code)">
1058         <z:index name="cn-bib-source:w">
1059           <xslo:value-of select="."/>
1060         </z:index>
1061       </xslo:if>
1062     </xslo:for-each>
1063     <xslo:for-each select="marc:subfield">
1064       <xslo:if test="contains('6', @code)">
1065         <z:index name="cn-bib-sort:n cn-bib-sort:s">
1066           <xslo:value-of select="."/>
1067         </z:index>
1068       </xslo:if>
1069     </xslo:for-each>
1070     <xslo:for-each select="marc:subfield">
1071       <xslo:if test="contains('c', @code)">
1072         <z:index name="itemtype:w itemtype:p itype:w itype:p">
1073           <xslo:value-of select="."/>
1074         </z:index>
1075       </xslo:if>
1076     </xslo:for-each>
1077     <xslo:for-each select="marc:subfield">
1078       <xslo:if test="contains('n', @code)">
1079         <z:index name="Suppress:w Suppress:n">
1080           <xslo:value-of select="."/>
1081         </z:index>
1082       </xslo:if>
1083     </xslo:for-each>
1084     <xslo:for-each select="marc:subfield">
1085       <xslo:if test="contains('h', @code)">
1086         <z:index name="cn-class:w">
1087           <xslo:value-of select="."/>
1088         </z:index>
1089       </xslo:if>
1090     </xslo:for-each>
1091     <xslo:for-each select="marc:subfield">
1092       <xslo:if test="contains('i', @code)">
1093         <z:index name="cn-item:w">
1094           <xslo:value-of select="."/>
1095         </z:index>
1096       </xslo:if>
1097     </xslo:for-each>
1098     <xslo:for-each select="marc:subfield">
1099       <xslo:if test="contains('k', @code)">
1100         <z:index name="cn-prefix:w">
1101           <xslo:value-of select="."/>
1102         </z:index>
1103       </xslo:if>
1104     </xslo:for-each>
1105     <xslo:for-each select="marc:subfield">
1106       <xslo:if test="contains('m', @code)">
1107         <z:index name="cn-suffix:w">
1108           <xslo:value-of select="."/>
1109         </z:index>
1110       </xslo:if>
1111     </xslo:for-each>
1112   </xslo:template>
1113   <xslo:template mode="index_subfields" match="marc:datafield[@tag='952']">
1114     <xslo:for-each select="marc:subfield">
1115       <xslo:if test="contains('0', @code)">
1116         <z:index name="withdrawn:n withdrawn:w">
1117           <xslo:value-of select="."/>
1118         </z:index>
1119       </xslo:if>
1120     </xslo:for-each>
1121     <xslo:for-each select="marc:subfield">
1122       <xslo:if test="contains('1', @code)">
1123         <z:index name="lost:w lost:n">
1124           <xslo:value-of select="."/>
1125         </z:index>
1126       </xslo:if>
1127     </xslo:for-each>
1128     <xslo:for-each select="marc:subfield">
1129       <xslo:if test="contains('2', @code)">
1130         <z:index name="classification-source:w">
1131           <xslo:value-of select="."/>
1132         </z:index>
1133       </xslo:if>
1134     </xslo:for-each>
1135     <xslo:for-each select="marc:subfield">
1136       <xslo:if test="contains('3', @code)">
1137         <z:index name="materials-specified:w">
1138           <xslo:value-of select="."/>
1139         </z:index>
1140       </xslo:if>
1141     </xslo:for-each>
1142     <xslo:for-each select="marc:subfield">
1143       <xslo:if test="contains('4', @code)">
1144         <z:index name="damaged:n damaged:w">
1145           <xslo:value-of select="."/>
1146         </z:index>
1147       </xslo:if>
1148     </xslo:for-each>
1149     <xslo:for-each select="marc:subfield">
1150       <xslo:if test="contains('5', @code)">
1151         <z:index name="restricted:n restricted:w">
1152           <xslo:value-of select="."/>
1153         </z:index>
1154       </xslo:if>
1155     </xslo:for-each>
1156     <xslo:for-each select="marc:subfield">
1157       <xslo:if test="contains('6', @code)">
1158         <z:index name="cn-sort:n cn-sort:s">
1159           <xslo:value-of select="."/>
1160         </z:index>
1161       </xslo:if>
1162     </xslo:for-each>
1163     <xslo:for-each select="marc:subfield">
1164       <xslo:if test="contains('7', @code)">
1165         <z:index name="notforloan:n notforloan:w">
1166           <xslo:value-of select="."/>
1167         </z:index>
1168       </xslo:if>
1169     </xslo:for-each>
1170     <xslo:for-each select="marc:subfield">
1171       <xslo:if test="contains('8', @code)">
1172         <z:index name="ccode:w ccode:p">
1173           <xslo:value-of select="."/>
1174         </z:index>
1175       </xslo:if>
1176     </xslo:for-each>
1177     <xslo:for-each select="marc:subfield">
1178       <xslo:if test="contains('9', @code)">
1179         <z:index name="itemnumber:n itemnumber:s">
1180           <xslo:value-of select="."/>
1181         </z:index>
1182       </xslo:if>
1183     </xslo:for-each>
1184     <xslo:for-each select="marc:subfield">
1185       <xslo:if test="contains('a', @code)">
1186         <z:index name="homebranch:w">
1187           <xslo:value-of select="."/>
1188         </z:index>
1189       </xslo:if>
1190     </xslo:for-each>
1191     <xslo:for-each select="marc:subfield">
1192       <xslo:if test="contains('b', @code)">
1193         <z:index name="holdingbranch:w">
1194           <xslo:value-of select="."/>
1195         </z:index>
1196       </xslo:if>
1197     </xslo:for-each>
1198     <xslo:for-each select="marc:subfield">
1199       <xslo:if test="contains('c', @code)">
1200         <z:index name="location:w">
1201           <xslo:value-of select="."/>
1202         </z:index>
1203       </xslo:if>
1204     </xslo:for-each>
1205     <xslo:for-each select="marc:subfield">
1206       <xslo:if test="contains('d', @code)">
1207         <z:index name="Date-of-acquisition:w Date-of-acquisition:d Date-of-acquisition:s">
1208           <xslo:value-of select="."/>
1209         </z:index>
1210       </xslo:if>
1211     </xslo:for-each>
1212     <xslo:for-each select="marc:subfield">
1213       <xslo:if test="contains('e', @code)">
1214         <z:index name="acqsource:w">
1215           <xslo:value-of select="."/>
1216         </z:index>
1217       </xslo:if>
1218     </xslo:for-each>
1219     <xslo:for-each select="marc:subfield">
1220       <xslo:if test="contains('f', @code)">
1221         <z:index name="coded-location-qualifier:w">
1222           <xslo:value-of select="."/>
1223         </z:index>
1224       </xslo:if>
1225     </xslo:for-each>
1226     <xslo:for-each select="marc:subfield">
1227       <xslo:if test="contains('g', @code)">
1228         <z:index name="price:w">
1229           <xslo:value-of select="."/>
1230         </z:index>
1231       </xslo:if>
1232     </xslo:for-each>
1233     <xslo:for-each select="marc:subfield">
1234       <xslo:if test="contains('i', @code)">
1235         <z:index name="Number-local-acquisition:w">
1236           <xslo:value-of select="."/>
1237         </z:index>
1238       </xslo:if>
1239     </xslo:for-each>
1240     <xslo:for-each select="marc:subfield">
1241       <xslo:if test="contains('j', @code)">
1242         <z:index name="stack:n stack:w">
1243           <xslo:value-of select="."/>
1244         </z:index>
1245       </xslo:if>
1246     </xslo:for-each>
1247     <xslo:for-each select="marc:subfield">
1248       <xslo:if test="contains('l', @code)">
1249         <z:index name="issues:n issues:w issues:s">
1250           <xslo:value-of select="."/>
1251         </z:index>
1252       </xslo:if>
1253     </xslo:for-each>
1254     <xslo:for-each select="marc:subfield">
1255       <xslo:if test="contains('m', @code)">
1256         <z:index name="renewals:n renewals:w">
1257           <xslo:value-of select="."/>
1258         </z:index>
1259       </xslo:if>
1260     </xslo:for-each>
1261     <xslo:for-each select="marc:subfield">
1262       <xslo:if test="contains('n', @code)">
1263         <z:index name="reserves:n reserves:w">
1264           <xslo:value-of select="."/>
1265         </z:index>
1266       </xslo:if>
1267     </xslo:for-each>
1268     <xslo:for-each select="marc:subfield">
1269       <xslo:if test="contains('o', @code)">
1270         <z:index name="Local-classification:w Local-classification:p Local-classification:s">
1271           <xslo:value-of select="."/>
1272         </z:index>
1273       </xslo:if>
1274     </xslo:for-each>
1275     <xslo:for-each select="marc:subfield">
1276       <xslo:if test="contains('p', @code)">
1277         <z:index name="barcode:w barcode:n">
1278           <xslo:value-of select="."/>
1279         </z:index>
1280       </xslo:if>
1281     </xslo:for-each>
1282     <xslo:for-each select="marc:subfield">
1283       <xslo:if test="contains('q', @code)">
1284         <z:index name="onloan:n onloan:w">
1285           <xslo:value-of select="."/>
1286         </z:index>
1287       </xslo:if>
1288     </xslo:for-each>
1289     <xslo:for-each select="marc:subfield">
1290       <xslo:if test="contains('r', @code)">
1291         <z:index name="datelastseen:w">
1292           <xslo:value-of select="."/>
1293         </z:index>
1294       </xslo:if>
1295     </xslo:for-each>
1296     <xslo:for-each select="marc:subfield">
1297       <xslo:if test="contains('s', @code)">
1298         <z:index name="datelastborrowed:w">
1299           <xslo:value-of select="."/>
1300         </z:index>
1301       </xslo:if>
1302     </xslo:for-each>
1303     <xslo:for-each select="marc:subfield">
1304       <xslo:if test="contains('t', @code)">
1305         <z:index name="copynumber:w">
1306           <xslo:value-of select="."/>
1307         </z:index>
1308       </xslo:if>
1309     </xslo:for-each>
1310     <xslo:for-each select="marc:subfield">
1311       <xslo:if test="contains('u', @code)">
1312         <z:index name="uri:u">
1313           <xslo:value-of select="."/>
1314         </z:index>
1315       </xslo:if>
1316     </xslo:for-each>
1317     <xslo:for-each select="marc:subfield">
1318       <xslo:if test="contains('v', @code)">
1319         <z:index name="replacementprice:w">
1320           <xslo:value-of select="."/>
1321         </z:index>
1322       </xslo:if>
1323     </xslo:for-each>
1324     <xslo:for-each select="marc:subfield">
1325       <xslo:if test="contains('w', @code)">
1326         <z:index name="replacementpricedate:w">
1327           <xslo:value-of select="."/>
1328         </z:index>
1329       </xslo:if>
1330     </xslo:for-each>
1331     <xslo:for-each select="marc:subfield">
1332       <xslo:if test="contains('y', @code)">
1333         <z:index name="itype:w itype:p">
1334           <xslo:value-of select="."/>
1335         </z:index>
1336       </xslo:if>
1337     </xslo:for-each>
1338     <xslo:for-each select="marc:subfield">
1339       <xslo:if test="contains('z', @code)">
1340         <z:index name="Note:w Note:p">
1341           <xslo:value-of select="."/>
1342         </z:index>
1343       </xslo:if>
1344     </xslo:for-each>
1345   </xslo:template>
1346   <xslo:template mode="index_data_field" match="marc:datafield[@tag='010']">
1347     <z:index name="LC-card-number:w Identifier-standard:w">
1348       <xslo:variable name="raw_heading">
1349         <xslo:for-each select="marc:subfield">
1350           <xslo:if test="position() &gt; 1">
1351             <xslo:value-of select="substring(' ', 1, 1)"/>
1352           </xslo:if>
1353           <xslo:value-of select="."/>
1354         </xslo:for-each>
1355       </xslo:variable>
1356       <xslo:value-of select="normalize-space($raw_heading)"/>
1357     </z:index>
1358   </xslo:template>
1359   <xslo:template mode="index_data_field" match="marc:datafield[@tag='011']">
1360     <z:index name="LC-card-number:w Identifier-standard:w">
1361       <xslo:variable name="raw_heading">
1362         <xslo:for-each select="marc:subfield">
1363           <xslo:if test="position() &gt; 1">
1364             <xslo:value-of select="substring(' ', 1, 1)"/>
1365           </xslo:if>
1366           <xslo:value-of select="."/>
1367         </xslo:for-each>
1368       </xslo:variable>
1369       <xslo:value-of select="normalize-space($raw_heading)"/>
1370     </z:index>
1371   </xslo:template>
1372   <xslo:template mode="index_data_field" match="marc:datafield[@tag='015']">
1373     <z:index name="BNB-card-number:w BGF-number:w Number-db:w Number-natl-biblio:w Identifier-standard:w">
1374       <xslo:variable name="raw_heading">
1375         <xslo:for-each select="marc:subfield">
1376           <xslo:if test="position() &gt; 1">
1377             <xslo:value-of select="substring(' ', 1, 1)"/>
1378           </xslo:if>
1379           <xslo:value-of select="."/>
1380         </xslo:for-each>
1381       </xslo:variable>
1382       <xslo:value-of select="normalize-space($raw_heading)"/>
1383     </z:index>
1384   </xslo:template>
1385   <xslo:template mode="index_data_field" match="marc:datafield[@tag='017']">
1386     <z:index name="Number-legal-deposit:w Identifier-standard:w">
1387       <xslo:variable name="raw_heading">
1388         <xslo:for-each select="marc:subfield">
1389           <xslo:if test="position() &gt; 1">
1390             <xslo:value-of select="substring(' ', 1, 1)"/>
1391           </xslo:if>
1392           <xslo:value-of select="."/>
1393         </xslo:for-each>
1394       </xslo:variable>
1395       <xslo:value-of select="normalize-space($raw_heading)"/>
1396     </z:index>
1397   </xslo:template>
1398   <xslo:template mode="index_data_field" match="marc:datafield[@tag='018']">
1399     <z:index name="Identifier-standard:w">
1400       <xslo:variable name="raw_heading">
1401         <xslo:for-each select="marc:subfield">
1402           <xslo:if test="position() &gt; 1">
1403             <xslo:value-of select="substring(' ', 1, 1)"/>
1404           </xslo:if>
1405           <xslo:value-of select="."/>
1406         </xslo:for-each>
1407       </xslo:variable>
1408       <xslo:value-of select="normalize-space($raw_heading)"/>
1409     </z:index>
1410   </xslo:template>
1411   <xslo:template mode="index_data_field" match="marc:datafield[@tag='020']">
1412     <z:index name="Identifier-standard:w">
1413       <xslo:variable name="raw_heading">
1414         <xslo:for-each select="marc:subfield">
1415           <xslo:if test="position() &gt; 1">
1416             <xslo:value-of select="substring(' ', 1, 1)"/>
1417           </xslo:if>
1418           <xslo:value-of select="."/>
1419         </xslo:for-each>
1420       </xslo:variable>
1421       <xslo:value-of select="normalize-space($raw_heading)"/>
1422     </z:index>
1423   </xslo:template>
1424   <xslo:template mode="index_data_field" match="marc:datafield[@tag='022']">
1425     <z:index name="Identifier-standard:w">
1426       <xslo:variable name="raw_heading">
1427         <xslo:for-each select="marc:subfield">
1428           <xslo:if test="position() &gt; 1">
1429             <xslo:value-of select="substring(' ', 1, 1)"/>
1430           </xslo:if>
1431           <xslo:value-of select="."/>
1432         </xslo:for-each>
1433       </xslo:variable>
1434       <xslo:value-of select="normalize-space($raw_heading)"/>
1435     </z:index>
1436   </xslo:template>
1437   <xslo:template mode="index_data_field" match="marc:datafield[@tag='023']">
1438     <z:index name="Identifier-standard:w">
1439       <xslo:variable name="raw_heading">
1440         <xslo:for-each select="marc:subfield">
1441           <xslo:if test="position() &gt; 1">
1442             <xslo:value-of select="substring(' ', 1, 1)"/>
1443           </xslo:if>
1444           <xslo:value-of select="."/>
1445         </xslo:for-each>
1446       </xslo:variable>
1447       <xslo:value-of select="normalize-space($raw_heading)"/>
1448     </z:index>
1449   </xslo:template>
1450   <xslo:template mode="index_data_field" match="marc:datafield[@tag='024']">
1451     <z:index name="Identifier-standard:w">
1452       <xslo:variable name="raw_heading">
1453         <xslo:for-each select="marc:subfield">
1454           <xslo:if test="position() &gt; 1">
1455             <xslo:value-of select="substring(' ', 1, 1)"/>
1456           </xslo:if>
1457           <xslo:value-of select="."/>
1458         </xslo:for-each>
1459       </xslo:variable>
1460       <xslo:value-of select="normalize-space($raw_heading)"/>
1461     </z:index>
1462   </xslo:template>
1463   <xslo:template mode="index_data_field" match="marc:datafield[@tag='025']">
1464     <z:index name="Identifier-standard:w">
1465       <xslo:variable name="raw_heading">
1466         <xslo:for-each select="marc:subfield">
1467           <xslo:if test="position() &gt; 1">
1468             <xslo:value-of select="substring(' ', 1, 1)"/>
1469           </xslo:if>
1470           <xslo:value-of select="."/>
1471         </xslo:for-each>
1472       </xslo:variable>
1473       <xslo:value-of select="normalize-space($raw_heading)"/>
1474     </z:index>
1475   </xslo:template>
1476   <xslo:template mode="index_data_field" match="marc:datafield[@tag='027']">
1477     <z:index name="Report-number:w Identifier-standard:w">
1478       <xslo:variable name="raw_heading">
1479         <xslo:for-each select="marc:subfield">
1480           <xslo:if test="position() &gt; 1">
1481             <xslo:value-of select="substring(' ', 1, 1)"/>
1482           </xslo:if>
1483           <xslo:value-of select="."/>
1484         </xslo:for-each>
1485       </xslo:variable>
1486       <xslo:value-of select="normalize-space($raw_heading)"/>
1487     </z:index>
1488   </xslo:template>
1489   <xslo:template mode="index_data_field" match="marc:datafield[@tag='028']">
1490     <z:index name="Identifier-publisher-for-music:w Identifier-standard:w">
1491       <xslo:variable name="raw_heading">
1492         <xslo:for-each select="marc:subfield">
1493           <xslo:if test="position() &gt; 1">
1494             <xslo:value-of select="substring(' ', 1, 1)"/>
1495           </xslo:if>
1496           <xslo:value-of select="."/>
1497         </xslo:for-each>
1498       </xslo:variable>
1499       <xslo:value-of select="normalize-space($raw_heading)"/>
1500     </z:index>
1501   </xslo:template>
1502   <xslo:template mode="index_data_field" match="marc:datafield[@tag='030']">
1503     <z:index name="CODEN:w Identifier-standard:w">
1504       <xslo:variable name="raw_heading">
1505         <xslo:for-each select="marc:subfield">
1506           <xslo:if test="position() &gt; 1">
1507             <xslo:value-of select="substring(' ', 1, 1)"/>
1508           </xslo:if>
1509           <xslo:value-of select="."/>
1510         </xslo:for-each>
1511       </xslo:variable>
1512       <xslo:value-of select="normalize-space($raw_heading)"/>
1513     </z:index>
1514   </xslo:template>
1515   <xslo:template mode="index_data_field" match="marc:datafield[@tag='034']">
1516     <z:index name="Map-scale:w">
1517       <xslo:variable name="raw_heading">
1518         <xslo:for-each select="marc:subfield">
1519           <xslo:if test="position() &gt; 1">
1520             <xslo:value-of select="substring(' ', 1, 1)"/>
1521           </xslo:if>
1522           <xslo:value-of select="."/>
1523         </xslo:for-each>
1524       </xslo:variable>
1525       <xslo:value-of select="normalize-space($raw_heading)"/>
1526     </z:index>
1527   </xslo:template>
1528   <xslo:template mode="index_data_field" match="marc:datafield[@tag='037']">
1529     <z:index name="Identifier-standard:w Stock-number:w">
1530       <xslo:variable name="raw_heading">
1531         <xslo:for-each select="marc:subfield">
1532           <xslo:if test="position() &gt; 1">
1533             <xslo:value-of select="substring(' ', 1, 1)"/>
1534           </xslo:if>
1535           <xslo:value-of select="."/>
1536         </xslo:for-each>
1537       </xslo:variable>
1538       <xslo:value-of select="normalize-space($raw_heading)"/>
1539     </z:index>
1540   </xslo:template>
1541   <xslo:template mode="index_data_field" match="marc:datafield[@tag='040']">
1542     <z:index name="Code-institution:w Record-source:w">
1543       <xslo:variable name="raw_heading">
1544         <xslo:for-each select="marc:subfield">
1545           <xslo:if test="position() &gt; 1">
1546             <xslo:value-of select="substring(' ', 1, 1)"/>
1547           </xslo:if>
1548           <xslo:value-of select="."/>
1549         </xslo:for-each>
1550       </xslo:variable>
1551       <xslo:value-of select="normalize-space($raw_heading)"/>
1552     </z:index>
1553   </xslo:template>
1554   <xslo:template mode="index_data_field" match="marc:datafield[@tag='043']">
1555     <z:index name="Code-geographic:w">
1556       <xslo:variable name="raw_heading">
1557         <xslo:for-each select="marc:subfield">
1558           <xslo:if test="position() &gt; 1">
1559             <xslo:value-of select="substring(' ', 1, 1)"/>
1560           </xslo:if>
1561           <xslo:value-of select="."/>
1562         </xslo:for-each>
1563       </xslo:variable>
1564       <xslo:value-of select="normalize-space($raw_heading)"/>
1565     </z:index>
1566   </xslo:template>
1567   <xslo:template mode="index_data_field" match="marc:datafield[@tag='050']">
1568     <z:index name="LC-call-number:w LC-call-number:p LC-call-number:s">
1569       <xslo:variable name="raw_heading">
1570         <xslo:for-each select="marc:subfield">
1571           <xslo:if test="position() &gt; 1">
1572             <xslo:value-of select="substring(' ', 1, 1)"/>
1573           </xslo:if>
1574           <xslo:value-of select="."/>
1575         </xslo:for-each>
1576       </xslo:variable>
1577       <xslo:value-of select="normalize-space($raw_heading)"/>
1578     </z:index>
1579   </xslo:template>
1580   <xslo:template mode="index_data_field" match="marc:datafield[@tag='052']">
1581     <z:index name="Geographic-class:w">
1582       <xslo:variable name="raw_heading">
1583         <xslo:for-each select="marc:subfield">
1584           <xslo:if test="position() &gt; 1">
1585             <xslo:value-of select="substring(' ', 1, 1)"/>
1586           </xslo:if>
1587           <xslo:value-of select="."/>
1588         </xslo:for-each>
1589       </xslo:variable>
1590       <xslo:value-of select="normalize-space($raw_heading)"/>
1591     </z:index>
1592   </xslo:template>
1593   <xslo:template mode="index_data_field" match="marc:datafield[@tag='060']">
1594     <z:index name="NLM-call-number:w">
1595       <xslo:variable name="raw_heading">
1596         <xslo:for-each select="marc:subfield">
1597           <xslo:if test="position() &gt; 1">
1598             <xslo:value-of select="substring(' ', 1, 1)"/>
1599           </xslo:if>
1600           <xslo:value-of select="."/>
1601         </xslo:for-each>
1602       </xslo:variable>
1603       <xslo:value-of select="normalize-space($raw_heading)"/>
1604     </z:index>
1605   </xslo:template>
1606   <xslo:template mode="index_data_field" match="marc:datafield[@tag='070']">
1607     <z:index name="NAL-call-number:w">
1608       <xslo:variable name="raw_heading">
1609         <xslo:for-each select="marc:subfield">
1610           <xslo:if test="position() &gt; 1">
1611             <xslo:value-of select="substring(' ', 1, 1)"/>
1612           </xslo:if>
1613           <xslo:value-of select="."/>
1614         </xslo:for-each>
1615       </xslo:variable>
1616       <xslo:value-of select="normalize-space($raw_heading)"/>
1617     </z:index>
1618   </xslo:template>
1619   <xslo:template mode="index_data_field" match="marc:datafield[@tag='080']">
1620     <z:index name="UDC-classification:w">
1621       <xslo:variable name="raw_heading">
1622         <xslo:for-each select="marc:subfield">
1623           <xslo:if test="position() &gt; 1">
1624             <xslo:value-of select="substring(' ', 1, 1)"/>
1625           </xslo:if>
1626           <xslo:value-of select="."/>
1627         </xslo:for-each>
1628       </xslo:variable>
1629       <xslo:value-of select="normalize-space($raw_heading)"/>
1630     </z:index>
1631   </xslo:template>
1632   <xslo:template mode="index_data_field" match="marc:datafield[@tag='082']">
1633     <z:index name="Dewey-classification:w Dewey-classification:s">
1634       <xslo:variable name="raw_heading">
1635         <xslo:for-each select="marc:subfield">
1636           <xslo:if test="position() &gt; 1">
1637             <xslo:value-of select="substring(' ', 1, 1)"/>
1638           </xslo:if>
1639           <xslo:value-of select="."/>
1640         </xslo:for-each>
1641       </xslo:variable>
1642       <xslo:value-of select="normalize-space($raw_heading)"/>
1643     </z:index>
1644   </xslo:template>
1645   <xslo:template mode="index_data_field" match="marc:datafield[@tag='086']">
1646     <z:index name="Number-govt-pub:w">
1647       <xslo:variable name="raw_heading">
1648         <xslo:for-each select="marc:subfield">
1649           <xslo:if test="position() &gt; 1">
1650             <xslo:value-of select="substring(' ', 1, 1)"/>
1651           </xslo:if>
1652           <xslo:value-of select="."/>
1653         </xslo:for-each>
1654       </xslo:variable>
1655       <xslo:value-of select="normalize-space($raw_heading)"/>
1656     </z:index>
1657   </xslo:template>
1658   <xslo:template mode="index_data_field" match="marc:datafield[@tag='100']">
1659     <z:index name="Author:w Author:p Author:s Author-title:w Author-name-personal:w Name:w Name-and-title:w Personal-name:w">
1660       <xslo:variable name="raw_heading">
1661         <xslo:for-each select="marc:subfield">
1662           <xslo:if test="position() &gt; 1">
1663             <xslo:value-of select="substring(' ', 1, 1)"/>
1664           </xslo:if>
1665           <xslo:value-of select="."/>
1666         </xslo:for-each>
1667       </xslo:variable>
1668       <xslo:value-of select="normalize-space($raw_heading)"/>
1669     </z:index>
1670   </xslo:template>
1671   <xslo:template mode="index_data_field" match="marc:datafield[@tag='110']">
1672     <z:index name="Author:w Author:p Author:s Author-title:w Author-name-corporate:w Name:w Name-and-title:w Corporate-name:w">
1673       <xslo:variable name="raw_heading">
1674         <xslo:for-each select="marc:subfield">
1675           <xslo:if test="position() &gt; 1">
1676             <xslo:value-of select="substring(' ', 1, 1)"/>
1677           </xslo:if>
1678           <xslo:value-of select="."/>
1679         </xslo:for-each>
1680       </xslo:variable>
1681       <xslo:value-of select="normalize-space($raw_heading)"/>
1682     </z:index>
1683   </xslo:template>
1684   <xslo:template mode="index_data_field" match="marc:datafield[@tag='111']">
1685     <z:index name="Author:w Author:p Author:s Author-title:w Author-name-corporate:w Name:w Name-and-title:w Conference-name:w">
1686       <xslo:variable name="raw_heading">
1687         <xslo:for-each select="marc:subfield">
1688           <xslo:if test="position() &gt; 1">
1689             <xslo:value-of select="substring(' ', 1, 1)"/>
1690           </xslo:if>
1691           <xslo:value-of select="."/>
1692         </xslo:for-each>
1693       </xslo:variable>
1694       <xslo:value-of select="normalize-space($raw_heading)"/>
1695     </z:index>
1696   </xslo:template>
1697   <xslo:template mode="index_data_field" match="marc:datafield[@tag='130']">
1698     <z:index name="Title:w Title:p Title-uniform:w">
1699       <xslo:variable name="raw_heading">
1700         <xslo:for-each select="marc:subfield">
1701           <xslo:if test="position() &gt; 1">
1702             <xslo:value-of select="substring(' ', 1, 1)"/>
1703           </xslo:if>
1704           <xslo:value-of select="."/>
1705         </xslo:for-each>
1706       </xslo:variable>
1707       <xslo:value-of select="normalize-space($raw_heading)"/>
1708     </z:index>
1709   </xslo:template>
1710   <xslo:template mode="index_data_field" match="marc:datafield[@tag='210']">
1711     <z:index name="Title:w Title:p Title-abbreviated:w">
1712       <xslo:variable name="raw_heading">
1713         <xslo:for-each select="marc:subfield">
1714           <xslo:if test="position() &gt; 1">
1715             <xslo:value-of select="substring(' ', 1, 1)"/>
1716           </xslo:if>
1717           <xslo:value-of select="."/>
1718         </xslo:for-each>
1719       </xslo:variable>
1720       <xslo:value-of select="normalize-space($raw_heading)"/>
1721     </z:index>
1722   </xslo:template>
1723   <xslo:template mode="index_data_field" match="marc:datafield[@tag='211']">
1724     <z:index name="Title:w Title:p Title-abbreviated:w">
1725       <xslo:variable name="raw_heading">
1726         <xslo:for-each select="marc:subfield">
1727           <xslo:if test="position() &gt; 1">
1728             <xslo:value-of select="substring(' ', 1, 1)"/>
1729           </xslo:if>
1730           <xslo:value-of select="."/>
1731         </xslo:for-each>
1732       </xslo:variable>
1733       <xslo:value-of select="normalize-space($raw_heading)"/>
1734     </z:index>
1735   </xslo:template>
1736   <xslo:template mode="index_data_field" match="marc:datafield[@tag='212']">
1737     <z:index name="Title:w Title:p Title-other-variant:w">
1738       <xslo:variable name="raw_heading">
1739         <xslo:for-each select="marc:subfield">
1740           <xslo:if test="position() &gt; 1">
1741             <xslo:value-of select="substring(' ', 1, 1)"/>
1742           </xslo:if>
1743           <xslo:value-of select="."/>
1744         </xslo:for-each>
1745       </xslo:variable>
1746       <xslo:value-of select="normalize-space($raw_heading)"/>
1747     </z:index>
1748   </xslo:template>
1749   <xslo:template mode="index_data_field" match="marc:datafield[@tag='214']">
1750     <z:index name="Title:w Title:p Title-expanded:w">
1751       <xslo:variable name="raw_heading">
1752         <xslo:for-each select="marc:subfield">
1753           <xslo:if test="position() &gt; 1">
1754             <xslo:value-of select="substring(' ', 1, 1)"/>
1755           </xslo:if>
1756           <xslo:value-of select="."/>
1757         </xslo:for-each>
1758       </xslo:variable>
1759       <xslo:value-of select="normalize-space($raw_heading)"/>
1760     </z:index>
1761   </xslo:template>
1762   <xslo:template mode="index_data_field" match="marc:datafield[@tag='222']">
1763     <z:index name="Title:w Title:p Title-key:w">
1764       <xslo:variable name="raw_heading">
1765         <xslo:for-each select="marc:subfield">
1766           <xslo:if test="position() &gt; 1">
1767             <xslo:value-of select="substring(' ', 1, 1)"/>
1768           </xslo:if>
1769           <xslo:value-of select="."/>
1770         </xslo:for-each>
1771       </xslo:variable>
1772       <xslo:value-of select="normalize-space($raw_heading)"/>
1773     </z:index>
1774   </xslo:template>
1775   <xslo:template mode="index_data_field" match="marc:datafield[@tag='240']">
1776     <z:index name="Title:w Title:p Title-uniform:w">
1777       <xslo:variable name="raw_heading">
1778         <xslo:for-each select="marc:subfield">
1779           <xslo:if test="position() &gt; 1">
1780             <xslo:value-of select="substring(' ', 1, 1)"/>
1781           </xslo:if>
1782           <xslo:value-of select="."/>
1783         </xslo:for-each>
1784       </xslo:variable>
1785       <xslo:value-of select="normalize-space($raw_heading)"/>
1786     </z:index>
1787   </xslo:template>
1788   <xslo:template mode="index_data_field" match="marc:datafield[@tag='243']">
1789     <z:index name="Title:w Title:p Title-collective:w">
1790       <xslo:variable name="raw_heading">
1791         <xslo:for-each select="marc:subfield">
1792           <xslo:if test="position() &gt; 1">
1793             <xslo:value-of select="substring(' ', 1, 1)"/>
1794           </xslo:if>
1795           <xslo:value-of select="."/>
1796         </xslo:for-each>
1797       </xslo:variable>
1798       <xslo:value-of select="normalize-space($raw_heading)"/>
1799     </z:index>
1800   </xslo:template>
1801   <xslo:template mode="index_data_field" match="marc:datafield[@tag='245']">
1802     <z:index name="Title:w Title:p">
1803       <xslo:variable name="raw_heading">
1804         <xslo:for-each select="marc:subfield">
1805           <xslo:if test="position() &gt; 1">
1806             <xslo:value-of select="substring(' ', 1, 1)"/>
1807           </xslo:if>
1808           <xslo:value-of select="."/>
1809         </xslo:for-each>
1810       </xslo:variable>
1811       <xslo:value-of select="normalize-space($raw_heading)"/>
1812     </z:index>
1813   </xslo:template>
1814   <xslo:template mode="index_data_field" match="marc:datafield[@tag='246']">
1815     <z:index name="Title:w Title:p Title-abbreviated:w Title-expanded:w Title-former:w">
1816       <xslo:variable name="raw_heading">
1817         <xslo:for-each select="marc:subfield">
1818           <xslo:if test="position() &gt; 1">
1819             <xslo:value-of select="substring(' ', 1, 1)"/>
1820           </xslo:if>
1821           <xslo:value-of select="."/>
1822         </xslo:for-each>
1823       </xslo:variable>
1824       <xslo:value-of select="normalize-space($raw_heading)"/>
1825     </z:index>
1826   </xslo:template>
1827   <xslo:template mode="index_data_field" match="marc:datafield[@tag='247']">
1828     <z:index name="Title:w Title:p Title-former:w Title-other-variant:w Related-periodical:w">
1829       <xslo:variable name="raw_heading">
1830         <xslo:for-each select="marc:subfield">
1831           <xslo:if test="position() &gt; 1">
1832             <xslo:value-of select="substring(' ', 1, 1)"/>
1833           </xslo:if>
1834           <xslo:value-of select="."/>
1835         </xslo:for-each>
1836       </xslo:variable>
1837       <xslo:value-of select="normalize-space($raw_heading)"/>
1838     </z:index>
1839   </xslo:template>
1840   <xslo:template mode="index_data_field" match="marc:datafield[@tag='260']">
1841     <z:index name="pl:w">
1842       <xslo:variable name="raw_heading">
1843         <xslo:for-each select="marc:subfield">
1844           <xslo:if test="position() &gt; 1">
1845             <xslo:value-of select="substring(' ', 1, 1)"/>
1846           </xslo:if>
1847           <xslo:value-of select="."/>
1848         </xslo:for-each>
1849       </xslo:variable>
1850       <xslo:value-of select="normalize-space($raw_heading)"/>
1851     </z:index>
1852   </xslo:template>
1853   <xslo:template mode="index_data_field" match="marc:datafield[@tag='300']">
1854     <z:index name="Extent:w Extent:p">
1855       <xslo:variable name="raw_heading">
1856         <xslo:for-each select="marc:subfield">
1857           <xslo:if test="position() &gt; 1">
1858             <xslo:value-of select="substring(' ', 1, 1)"/>
1859           </xslo:if>
1860           <xslo:value-of select="."/>
1861         </xslo:for-each>
1862       </xslo:variable>
1863       <xslo:value-of select="normalize-space($raw_heading)"/>
1864     </z:index>
1865   </xslo:template>
1866   <xslo:template mode="index_data_field" match="marc:datafield[@tag='400']">
1867     <z:index name="Author:w Author-name-personal:w Name:w Personal-name:w">
1868       <xslo:variable name="raw_heading">
1869         <xslo:for-each select="marc:subfield">
1870           <xslo:if test="position() &gt; 1">
1871             <xslo:value-of select="substring(' ', 1, 1)"/>
1872           </xslo:if>
1873           <xslo:value-of select="."/>
1874         </xslo:for-each>
1875       </xslo:variable>
1876       <xslo:value-of select="normalize-space($raw_heading)"/>
1877     </z:index>
1878   </xslo:template>
1879   <xslo:template mode="index_data_field" match="marc:datafield[@tag='410']">
1880     <z:index name="Author:w Corporate-name:w">
1881       <xslo:variable name="raw_heading">
1882         <xslo:for-each select="marc:subfield">
1883           <xslo:if test="position() &gt; 1">
1884             <xslo:value-of select="substring(' ', 1, 1)"/>
1885           </xslo:if>
1886           <xslo:value-of select="."/>
1887         </xslo:for-each>
1888       </xslo:variable>
1889       <xslo:value-of select="normalize-space($raw_heading)"/>
1890     </z:index>
1891   </xslo:template>
1892   <xslo:template mode="index_data_field" match="marc:datafield[@tag='411']">
1893     <z:index name="Author:w Conference-name:w">
1894       <xslo:variable name="raw_heading">
1895         <xslo:for-each select="marc:subfield">
1896           <xslo:if test="position() &gt; 1">
1897             <xslo:value-of select="substring(' ', 1, 1)"/>
1898           </xslo:if>
1899           <xslo:value-of select="."/>
1900         </xslo:for-each>
1901       </xslo:variable>
1902       <xslo:value-of select="normalize-space($raw_heading)"/>
1903     </z:index>
1904   </xslo:template>
1905   <xslo:template mode="index_data_field" match="marc:datafield[@tag='440']">
1906     <z:index name="Title-series:w Title-series:p Title:w Title-series:w">
1907       <xslo:variable name="raw_heading">
1908         <xslo:for-each select="marc:subfield">
1909           <xslo:if test="position() &gt; 1">
1910             <xslo:value-of select="substring(' ', 1, 1)"/>
1911           </xslo:if>
1912           <xslo:value-of select="."/>
1913         </xslo:for-each>
1914       </xslo:variable>
1915       <xslo:value-of select="normalize-space($raw_heading)"/>
1916     </z:index>
1917   </xslo:template>
1918   <xslo:template mode="index_data_field" match="marc:datafield[@tag='490']">
1919     <z:index name="Title:w Title-series:w">
1920       <xslo:variable name="raw_heading">
1921         <xslo:for-each select="marc:subfield">
1922           <xslo:if test="position() &gt; 1">
1923             <xslo:value-of select="substring(' ', 1, 1)"/>
1924           </xslo:if>
1925           <xslo:value-of select="."/>
1926         </xslo:for-each>
1927       </xslo:variable>
1928       <xslo:value-of select="normalize-space($raw_heading)"/>
1929     </z:index>
1930   </xslo:template>
1931   <xslo:template mode="index_data_field" match="marc:datafield[@tag='500']">
1932     <z:index name="Note:w Note:p">
1933       <xslo:variable name="raw_heading">
1934         <xslo:for-each select="marc:subfield">
1935           <xslo:if test="position() &gt; 1">
1936             <xslo:value-of select="substring(' ', 1, 1)"/>
1937           </xslo:if>
1938           <xslo:value-of select="."/>
1939         </xslo:for-each>
1940       </xslo:variable>
1941       <xslo:value-of select="normalize-space($raw_heading)"/>
1942     </z:index>
1943   </xslo:template>
1944   <xslo:template mode="index_data_field" match="marc:datafield[@tag='502']">
1945     <z:index name="Material-type:w">
1946       <xslo:variable name="raw_heading">
1947         <xslo:for-each select="marc:subfield">
1948           <xslo:if test="position() &gt; 1">
1949             <xslo:value-of select="substring(' ', 1, 1)"/>
1950           </xslo:if>
1951           <xslo:value-of select="."/>
1952         </xslo:for-each>
1953       </xslo:variable>
1954       <xslo:value-of select="normalize-space($raw_heading)"/>
1955     </z:index>
1956   </xslo:template>
1957   <xslo:template mode="index_data_field" match="marc:datafield[@tag='505']">
1958     <z:index name="Note:w Note:p">
1959       <xslo:variable name="raw_heading">
1960         <xslo:for-each select="marc:subfield">
1961           <xslo:if test="position() &gt; 1">
1962             <xslo:value-of select="substring(' ', 1, 1)"/>
1963           </xslo:if>
1964           <xslo:value-of select="."/>
1965         </xslo:for-each>
1966       </xslo:variable>
1967       <xslo:value-of select="normalize-space($raw_heading)"/>
1968     </z:index>
1969   </xslo:template>
1970   <xslo:template mode="index_data_field" match="marc:datafield[@tag='510']">
1971     <z:index name="Indexed-by:w">
1972       <xslo:variable name="raw_heading">
1973         <xslo:for-each select="marc:subfield">
1974           <xslo:if test="position() &gt; 1">
1975             <xslo:value-of select="substring(' ', 1, 1)"/>
1976           </xslo:if>
1977           <xslo:value-of select="."/>
1978         </xslo:for-each>
1979       </xslo:variable>
1980       <xslo:value-of select="normalize-space($raw_heading)"/>
1981     </z:index>
1982   </xslo:template>
1983   <xslo:template mode="index_data_field" match="marc:datafield[@tag='520']">
1984     <z:index name="Abstract:w Abstract:p">
1985       <xslo:variable name="raw_heading">
1986         <xslo:for-each select="marc:subfield">
1987           <xslo:if test="position() &gt; 1">
1988             <xslo:value-of select="substring(' ', 1, 1)"/>
1989           </xslo:if>
1990           <xslo:value-of select="."/>
1991         </xslo:for-each>
1992       </xslo:variable>
1993       <xslo:value-of select="normalize-space($raw_heading)"/>
1994     </z:index>
1995   </xslo:template>
1996   <xslo:template mode="index_data_field" match="marc:datafield[@tag='590']">
1997     <z:index name="Note:w Note:p">
1998       <xslo:variable name="raw_heading">
1999         <xslo:for-each select="marc:subfield">
2000           <xslo:if test="position() &gt; 1">
2001             <xslo:value-of select="substring(' ', 1, 1)"/>
2002           </xslo:if>
2003           <xslo:value-of select="."/>
2004         </xslo:for-each>
2005       </xslo:variable>
2006       <xslo:value-of select="normalize-space($raw_heading)"/>
2007     </z:index>
2008   </xslo:template>
2009   <xslo:template mode="index_data_field" match="marc:datafield[@tag='600']">
2010     <z:index name="Name:w Personal-name:w Subject-name-personal:w Subject:w Subject:p">
2011       <xslo:variable name="raw_heading">
2012         <xslo:for-each select="marc:subfield">
2013           <xslo:if test="position() &gt; 1">
2014             <xslo:value-of select="substring(' ', 1, 1)"/>
2015           </xslo:if>
2016           <xslo:value-of select="."/>
2017         </xslo:for-each>
2018       </xslo:variable>
2019       <xslo:value-of select="normalize-space($raw_heading)"/>
2020     </z:index>
2021   </xslo:template>
2022   <xslo:template mode="index_data_field" match="marc:datafield[@tag='610']">
2023     <z:index name="Name:w Subject:w Subject:p Corporate-name:w">
2024       <xslo:variable name="raw_heading">
2025         <xslo:for-each select="marc:subfield">
2026           <xslo:if test="position() &gt; 1">
2027             <xslo:value-of select="substring(' ', 1, 1)"/>
2028           </xslo:if>
2029           <xslo:value-of select="."/>
2030         </xslo:for-each>
2031       </xslo:variable>
2032       <xslo:value-of select="normalize-space($raw_heading)"/>
2033     </z:index>
2034   </xslo:template>
2035   <xslo:template mode="index_data_field" match="marc:datafield[@tag='611']">
2036     <z:index name="Conference-name:w Name:w Subject:w Subject:p">
2037       <xslo:variable name="raw_heading">
2038         <xslo:for-each select="marc:subfield">
2039           <xslo:if test="position() &gt; 1">
2040             <xslo:value-of select="substring(' ', 1, 1)"/>
2041           </xslo:if>
2042           <xslo:value-of select="."/>
2043         </xslo:for-each>
2044       </xslo:variable>
2045       <xslo:value-of select="normalize-space($raw_heading)"/>
2046     </z:index>
2047   </xslo:template>
2048   <xslo:template mode="index_data_field" match="marc:datafield[@tag='630']">
2049     <z:index name="Subject:w Subject:p">
2050       <xslo:variable name="raw_heading">
2051         <xslo:for-each select="marc:subfield">
2052           <xslo:if test="position() &gt; 1">
2053             <xslo:value-of select="substring(' ', 1, 1)"/>
2054           </xslo:if>
2055           <xslo:value-of select="."/>
2056         </xslo:for-each>
2057       </xslo:variable>
2058       <xslo:value-of select="normalize-space($raw_heading)"/>
2059     </z:index>
2060   </xslo:template>
2061   <xslo:template mode="index_data_field" match="marc:datafield[@tag='650']">
2062     <z:index name="Subject:w Subject:p">
2063       <xslo:variable name="raw_heading">
2064         <xslo:for-each select="marc:subfield">
2065           <xslo:if test="position() &gt; 1">
2066             <xslo:value-of select="substring(' ', 1, 1)"/>
2067           </xslo:if>
2068           <xslo:value-of select="."/>
2069         </xslo:for-each>
2070       </xslo:variable>
2071       <xslo:value-of select="normalize-space($raw_heading)"/>
2072     </z:index>
2073   </xslo:template>
2074   <xslo:template mode="index_data_field" match="marc:datafield[@tag='651']">
2075     <z:index name="Name-geographic:w Subject:w Subject:p">
2076       <xslo:variable name="raw_heading">
2077         <xslo:for-each select="marc:subfield">
2078           <xslo:if test="position() &gt; 1">
2079             <xslo:value-of select="substring(' ', 1, 1)"/>
2080           </xslo:if>
2081           <xslo:value-of select="."/>
2082         </xslo:for-each>
2083       </xslo:variable>
2084       <xslo:value-of select="normalize-space($raw_heading)"/>
2085     </z:index>
2086   </xslo:template>
2087   <xslo:template mode="index_data_field" match="marc:datafield[@tag='653']">
2088     <z:index name="Subject:w Subject:p">
2089       <xslo:variable name="raw_heading">
2090         <xslo:for-each select="marc:subfield">
2091           <xslo:if test="position() &gt; 1">
2092             <xslo:value-of select="substring(' ', 1, 1)"/>
2093           </xslo:if>
2094           <xslo:value-of select="."/>
2095         </xslo:for-each>
2096       </xslo:variable>
2097       <xslo:value-of select="normalize-space($raw_heading)"/>
2098     </z:index>
2099   </xslo:template>
2100   <xslo:template mode="index_data_field" match="marc:datafield[@tag='654']">
2101     <z:index name="Subject:w Subject:p">
2102       <xslo:variable name="raw_heading">
2103         <xslo:for-each select="marc:subfield">
2104           <xslo:if test="position() &gt; 1">
2105             <xslo:value-of select="substring(' ', 1, 1)"/>
2106           </xslo:if>
2107           <xslo:value-of select="."/>
2108         </xslo:for-each>
2109       </xslo:variable>
2110       <xslo:value-of select="normalize-space($raw_heading)"/>
2111     </z:index>
2112   </xslo:template>
2113   <xslo:template mode="index_data_field" match="marc:datafield[@tag='655']">
2114     <z:index name="Subject:w Subject:p">
2115       <xslo:variable name="raw_heading">
2116         <xslo:for-each select="marc:subfield">
2117           <xslo:if test="position() &gt; 1">
2118             <xslo:value-of select="substring(' ', 1, 1)"/>
2119           </xslo:if>
2120           <xslo:value-of select="."/>
2121         </xslo:for-each>
2122       </xslo:variable>
2123       <xslo:value-of select="normalize-space($raw_heading)"/>
2124     </z:index>
2125   </xslo:template>
2126   <xslo:template mode="index_data_field" match="marc:datafield[@tag='656']">
2127     <z:index name="Subject:w Subject:p">
2128       <xslo:variable name="raw_heading">
2129         <xslo:for-each select="marc:subfield">
2130           <xslo:if test="position() &gt; 1">
2131             <xslo:value-of select="substring(' ', 1, 1)"/>
2132           </xslo:if>
2133           <xslo:value-of select="."/>
2134         </xslo:for-each>
2135       </xslo:variable>
2136       <xslo:value-of select="normalize-space($raw_heading)"/>
2137     </z:index>
2138   </xslo:template>
2139   <xslo:template mode="index_data_field" match="marc:datafield[@tag='657']">
2140     <z:index name="Subject:w Subject:p">
2141       <xslo:variable name="raw_heading">
2142         <xslo:for-each select="marc:subfield">
2143           <xslo:if test="position() &gt; 1">
2144             <xslo:value-of select="substring(' ', 1, 1)"/>
2145           </xslo:if>
2146           <xslo:value-of select="."/>
2147         </xslo:for-each>
2148       </xslo:variable>
2149       <xslo:value-of select="normalize-space($raw_heading)"/>
2150     </z:index>
2151   </xslo:template>
2152   <xslo:template mode="index_data_field" match="marc:datafield[@tag='658']">
2153     <z:index name="Subject:w Subject:p">
2154       <xslo:variable name="raw_heading">
2155         <xslo:for-each select="marc:subfield">
2156           <xslo:if test="position() &gt; 1">
2157             <xslo:value-of select="substring(' ', 1, 1)"/>
2158           </xslo:if>
2159           <xslo:value-of select="."/>
2160         </xslo:for-each>
2161       </xslo:variable>
2162       <xslo:value-of select="normalize-space($raw_heading)"/>
2163     </z:index>
2164   </xslo:template>
2165   <xslo:template mode="index_data_field" match="marc:datafield[@tag='690']">
2166     <z:index name="Subject:w Subject:p">
2167       <xslo:variable name="raw_heading">
2168         <xslo:for-each select="marc:subfield">
2169           <xslo:if test="position() &gt; 1">
2170             <xslo:value-of select="substring(' ', 1, 1)"/>
2171           </xslo:if>
2172           <xslo:value-of select="."/>
2173         </xslo:for-each>
2174       </xslo:variable>
2175       <xslo:value-of select="normalize-space($raw_heading)"/>
2176     </z:index>
2177   </xslo:template>
2178   <xslo:template mode="index_data_field" match="marc:datafield[@tag='700']">
2179     <z:index name="Author:w Author:p Author-name-personal:w Name:w Editor:w Personal-name:w">
2180       <xslo:variable name="raw_heading">
2181         <xslo:for-each select="marc:subfield">
2182           <xslo:if test="position() &gt; 1">
2183             <xslo:value-of select="substring(' ', 1, 1)"/>
2184           </xslo:if>
2185           <xslo:value-of select="."/>
2186         </xslo:for-each>
2187       </xslo:variable>
2188       <xslo:value-of select="normalize-space($raw_heading)"/>
2189     </z:index>
2190   </xslo:template>
2191   <xslo:template mode="index_data_field" match="marc:datafield[@tag='710']">
2192     <z:index name="Author:w Author:p Corporate-name:w Name:w">
2193       <xslo:variable name="raw_heading">
2194         <xslo:for-each select="marc:subfield">
2195           <xslo:if test="position() &gt; 1">
2196             <xslo:value-of select="substring(' ', 1, 1)"/>
2197           </xslo:if>
2198           <xslo:value-of select="."/>
2199         </xslo:for-each>
2200       </xslo:variable>
2201       <xslo:value-of select="normalize-space($raw_heading)"/>
2202     </z:index>
2203   </xslo:template>
2204   <xslo:template mode="index_data_field" match="marc:datafield[@tag='711']">
2205     <z:index name="Author:w Author:p Author-name-corporate:w Name:w Conference-name:w">
2206       <xslo:variable name="raw_heading">
2207         <xslo:for-each select="marc:subfield">
2208           <xslo:if test="position() &gt; 1">
2209             <xslo:value-of select="substring(' ', 1, 1)"/>
2210           </xslo:if>
2211           <xslo:value-of select="."/>
2212         </xslo:for-each>
2213       </xslo:variable>
2214       <xslo:value-of select="normalize-space($raw_heading)"/>
2215     </z:index>
2216   </xslo:template>
2217   <xslo:template mode="index_data_field" match="marc:datafield[@tag='730']">
2218     <z:index name="Title:w Title:p Title-uniform:w">
2219       <xslo:variable name="raw_heading">
2220         <xslo:for-each select="marc:subfield">
2221           <xslo:if test="position() &gt; 1">
2222             <xslo:value-of select="substring(' ', 1, 1)"/>
2223           </xslo:if>
2224           <xslo:value-of select="."/>
2225         </xslo:for-each>
2226       </xslo:variable>
2227       <xslo:value-of select="normalize-space($raw_heading)"/>
2228     </z:index>
2229   </xslo:template>
2230   <xslo:template mode="index_data_field" match="marc:datafield[@tag='740']">
2231     <z:index name="Title:w Title:p Title-other-variant:w">
2232       <xslo:variable name="raw_heading">
2233         <xslo:for-each select="marc:subfield">
2234           <xslo:if test="position() &gt; 1">
2235             <xslo:value-of select="substring(' ', 1, 1)"/>
2236           </xslo:if>
2237           <xslo:value-of select="."/>
2238         </xslo:for-each>
2239       </xslo:variable>
2240       <xslo:value-of select="normalize-space($raw_heading)"/>
2241     </z:index>
2242   </xslo:template>
2243   <xslo:template mode="index_data_field" match="marc:datafield[@tag='751']">
2244     <z:index name="Name-geographic:w">
2245       <xslo:variable name="raw_heading">
2246         <xslo:for-each select="marc:subfield">
2247           <xslo:if test="position() &gt; 1">
2248             <xslo:value-of select="substring(' ', 1, 1)"/>
2249           </xslo:if>
2250           <xslo:value-of select="."/>
2251         </xslo:for-each>
2252       </xslo:variable>
2253       <xslo:value-of select="normalize-space($raw_heading)"/>
2254     </z:index>
2255   </xslo:template>
2256   <xslo:template mode="index_data_field" match="marc:datafield[@tag='780']">
2257     <z:index name="Title:w Title:p Title-former:w Related-periodical:w">
2258       <xslo:variable name="raw_heading">
2259         <xslo:for-each select="marc:subfield">
2260           <xslo:if test="position() &gt; 1">
2261             <xslo:value-of select="substring(' ', 1, 1)"/>
2262           </xslo:if>
2263           <xslo:value-of select="."/>
2264         </xslo:for-each>
2265       </xslo:variable>
2266       <xslo:value-of select="normalize-space($raw_heading)"/>
2267     </z:index>
2268   </xslo:template>
2269   <xslo:template mode="index_data_field" match="marc:datafield[@tag='785']">
2270     <z:index name="Title:w Title:p Title-later:w Related-periodical:w">
2271       <xslo:variable name="raw_heading">
2272         <xslo:for-each select="marc:subfield">
2273           <xslo:if test="position() &gt; 1">
2274             <xslo:value-of select="substring(' ', 1, 1)"/>
2275           </xslo:if>
2276           <xslo:value-of select="."/>
2277         </xslo:for-each>
2278       </xslo:variable>
2279       <xslo:value-of select="normalize-space($raw_heading)"/>
2280     </z:index>
2281   </xslo:template>
2282   <xslo:template mode="index_data_field" match="marc:datafield[@tag='800']">
2283     <z:index name="Author:w Author-name-personal:w Name:w Personal-name:w">
2284       <xslo:variable name="raw_heading">
2285         <xslo:for-each select="marc:subfield">
2286           <xslo:if test="position() &gt; 1">
2287             <xslo:value-of select="substring(' ', 1, 1)"/>
2288           </xslo:if>
2289           <xslo:value-of select="."/>
2290         </xslo:for-each>
2291       </xslo:variable>
2292       <xslo:value-of select="normalize-space($raw_heading)"/>
2293     </z:index>
2294   </xslo:template>
2295   <xslo:template mode="index_data_field" match="marc:datafield[@tag='810']">
2296     <z:index name="Author:w Corporate-name:w Author-name-corporate:w Name:w">
2297       <xslo:variable name="raw_heading">
2298         <xslo:for-each select="marc:subfield">
2299           <xslo:if test="position() &gt; 1">
2300             <xslo:value-of select="substring(' ', 1, 1)"/>
2301           </xslo:if>
2302           <xslo:value-of select="."/>
2303         </xslo:for-each>
2304       </xslo:variable>
2305       <xslo:value-of select="normalize-space($raw_heading)"/>
2306     </z:index>
2307   </xslo:template>
2308   <xslo:template mode="index_data_field" match="marc:datafield[@tag='811']">
2309     <z:index name="Author:w Author-name-corporate:w Name:w Conference-name:w">
2310       <xslo:variable name="raw_heading">
2311         <xslo:for-each select="marc:subfield">
2312           <xslo:if test="position() &gt; 1">
2313             <xslo:value-of select="substring(' ', 1, 1)"/>
2314           </xslo:if>
2315           <xslo:value-of select="."/>
2316         </xslo:for-each>
2317       </xslo:variable>
2318       <xslo:value-of select="normalize-space($raw_heading)"/>
2319     </z:index>
2320   </xslo:template>
2321   <xslo:template mode="index_data_field" match="marc:datafield[@tag='830']">
2322     <z:index name="Title:w Title-series:w Title-series:p">
2323       <xslo:variable name="raw_heading">
2324         <xslo:for-each select="marc:subfield">
2325           <xslo:if test="position() &gt; 1">
2326             <xslo:value-of select="substring(' ', 1, 1)"/>
2327           </xslo:if>
2328           <xslo:value-of select="."/>
2329         </xslo:for-each>
2330       </xslo:variable>
2331       <xslo:value-of select="normalize-space($raw_heading)"/>
2332     </z:index>
2333   </xslo:template>
2334   <xslo:template mode="index_data_field" match="marc:datafield[@tag='840']">
2335     <z:index name="Title:w Title-series:w Title-series:p">
2336       <xslo:variable name="raw_heading">
2337         <xslo:for-each select="marc:subfield">
2338           <xslo:if test="position() &gt; 1">
2339             <xslo:value-of select="substring(' ', 1, 1)"/>
2340           </xslo:if>
2341           <xslo:value-of select="."/>
2342         </xslo:for-each>
2343       </xslo:variable>
2344       <xslo:value-of select="normalize-space($raw_heading)"/>
2345     </z:index>
2346   </xslo:template>
2347   <xslo:template mode="index_all" match="text()">
2348     <z:index name="Any:w Any:p">
2349       <xslo:value-of select="."/>
2350     </z:index>
2351   </xslo:template>
2352   <xslo:template name="chopPunctuation">
2353     <xslo:param name="chopString"/>
2354     <xslo:variable name="length" select="string-length($chopString)"/>
2355     <xslo:choose>
2356       <xslo:when test="$length=0"/>
2357       <xslo:when test="contains('-,.:=;!%/', substring($chopString,$length,1))">
2358         <xslo:call-template name="chopPunctuation">
2359           <xslo:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
2360         </xslo:call-template>
2361       </xslo:when>
2362       <xslo:when test="not($chopString)"/>
2363       <xslo:otherwise>
2364         <xslo:value-of select="$chopString"/>
2365       </xslo:otherwise>
2366     </xslo:choose>
2367     <xslo:text/>
2368   </xslo:template>
2369 </xslo:stylesheet>