Bug 10544: (follow-up) update MARC21 DOM index definitions
[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">
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">
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: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('9', @code)">
598         <z:index name="Koha-Auth-Number:w">
599           <xslo:value-of select="."/>
600         </z:index>
601       </xslo:if>
602     </xslo:for-each>
603   </xslo:template>
604   <xslo:template mode="index_subfields" match="marc:datafield[@tag='654']">
605     <xslo:for-each select="marc:subfield">
606       <xslo:if test="contains('9', @code)">
607         <z:index name="Koha-Auth-Number:w">
608           <xslo:value-of select="."/>
609         </z:index>
610       </xslo:if>
611     </xslo:for-each>
612   </xslo:template>
613   <xslo:template mode="index_subfields" match="marc:datafield[@tag='655']">
614     <xslo:for-each select="marc:subfield">
615       <xslo:if test="contains('9', @code)">
616         <z:index name="Koha-Auth-Number:w">
617           <xslo:value-of select="."/>
618         </z:index>
619       </xslo:if>
620     </xslo:for-each>
621   </xslo:template>
622   <xslo:template mode="index_subfields" match="marc:datafield[@tag='656']">
623     <xslo:for-each select="marc:subfield">
624       <xslo:if test="contains('9', @code)">
625         <z:index name="Koha-Auth-Number:w">
626           <xslo:value-of select="."/>
627         </z:index>
628       </xslo:if>
629     </xslo:for-each>
630   </xslo:template>
631   <xslo:template mode="index_subfields" match="marc:datafield[@tag='657']">
632     <xslo:for-each select="marc:subfield">
633       <xslo:if test="contains('9', @code)">
634         <z:index name="Koha-Auth-Number:w">
635           <xslo:value-of select="."/>
636         </z:index>
637       </xslo:if>
638     </xslo:for-each>
639   </xslo:template>
640   <xslo:template mode="index_subfields" match="marc:datafield[@tag='658']">
641     <xslo:for-each select="marc:subfield">
642       <xslo:if test="contains('a', @code)">
643         <z:index name="curriculum:w curriculum:p Subject:w Subject:p">
644           <xslo:value-of select="."/>
645         </z:index>
646       </xslo:if>
647     </xslo:for-each>
648     <xslo:for-each select="marc:subfield">
649       <xslo:if test="contains('b', @code)">
650         <z:index name="curriculum:w curriculum:p Subject:w Subject:p">
651           <xslo:value-of select="."/>
652         </z:index>
653       </xslo:if>
654     </xslo:for-each>
655     <xslo:for-each select="marc:subfield">
656       <xslo:if test="contains('c', @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:template>
663   <xslo:template mode="index_subfields" match="marc:datafield[@tag='690']">
664     <xslo:for-each select="marc:subfield">
665       <xslo:if test="contains('9', @code)">
666         <z:index name="Koha-Auth-Number:w">
667           <xslo:value-of select="."/>
668         </z:index>
669       </xslo:if>
670     </xslo:for-each>
671   </xslo:template>
672   <xslo:template mode="index_subfields" match="marc:datafield[@tag='700']">
673     <xslo:for-each select="marc:subfield">
674       <xslo:if test="contains('9', @code)">
675         <z:index name="Cross-Reference:w Koha-Auth-Number:w">
676           <xslo:value-of select="."/>
677         </z:index>
678       </xslo:if>
679     </xslo:for-each>
680     <xslo:for-each select="marc:subfield">
681       <xslo:if test="contains('a', @code)">
682         <z:index name="Author:w Author:p">
683           <xslo:value-of select="."/>
684         </z:index>
685       </xslo:if>
686     </xslo:for-each>
687     <xslo:for-each select="marc:subfield">
688       <xslo:if test="contains('n', @code)">
689         <z:index name="Thematic-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('r', @code)">
696         <z:index name="Music-key:w">
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('t', @code)">
703         <z:index name="Author-title:w Name-and-title:w Title:w Title-uniform:w">
704           <xslo:value-of select="."/>
705         </z:index>
706       </xslo:if>
707     </xslo:for-each>
708   </xslo:template>
709   <xslo:template mode="index_subfields" match="marc:datafield[@tag='710']">
710     <xslo:for-each select="marc:subfield">
711       <xslo:if test="contains('t', @code)">
712         <z:index name="Author-title:w Name-and-title:w Title:w Title-uniform:w">
713           <xslo:value-of select="."/>
714         </z:index>
715       </xslo:if>
716     </xslo:for-each>
717     <xslo:for-each select="marc:subfield">
718       <xslo:if test="contains('a', @code)">
719         <z:index name="Name-and-title:w">
720           <xslo:value-of select="."/>
721         </z:index>
722       </xslo:if>
723     </xslo:for-each>
724     <xslo:for-each select="marc:subfield">
725       <xslo:if test="contains('9', @code)">
726         <z:index name="Koha-Auth-Number:w">
727           <xslo:value-of select="."/>
728         </z:index>
729       </xslo:if>
730     </xslo:for-each>
731   </xslo:template>
732   <xslo:template mode="index_subfields" match="marc:datafield[@tag='711']">
733     <xslo:for-each select="marc:subfield">
734       <xslo:if test="contains('a', @code)">
735         <z:index name="Name-and-title:w">
736           <xslo:value-of select="."/>
737         </z:index>
738       </xslo:if>
739     </xslo:for-each>
740     <xslo:for-each select="marc:subfield">
741       <xslo:if test="contains('t', @code)">
742         <z:index name="Author-title:w Title:w Title-uniform:w">
743           <xslo:value-of select="."/>
744         </z:index>
745       </xslo:if>
746     </xslo:for-each>
747     <xslo:for-each select="marc:subfield">
748       <xslo:if test="contains('9', @code)">
749         <z:index name="Koha-Auth-Number:w">
750           <xslo:value-of select="."/>
751         </z:index>
752       </xslo:if>
753     </xslo:for-each>
754   </xslo:template>
755   <xslo:template mode="index_subfields" match="marc:datafield[@tag='730']">
756     <xslo:for-each select="marc:subfield">
757       <xslo:if test="contains('n', @code)">
758         <z:index name="Thematic-number:w">
759           <xslo:value-of select="."/>
760         </z:index>
761       </xslo:if>
762     </xslo:for-each>
763     <xslo:for-each select="marc:subfield">
764       <xslo:if test="contains('r', @code)">
765         <z:index name="Music-key:w">
766           <xslo:value-of select="."/>
767         </z:index>
768       </xslo:if>
769     </xslo:for-each>
770     <xslo:for-each select="marc:subfield">
771       <xslo:if test="contains('9', @code)">
772         <z:index name="Koha-Auth-Number:w">
773           <xslo:value-of select="."/>
774         </z:index>
775       </xslo:if>
776     </xslo:for-each>
777   </xslo:template>
778   <xslo:template mode="index_subfields" match="marc:datafield[@tag='751']">
779     <xslo:for-each select="marc:subfield">
780       <xslo:if test="contains('a', @code)">
781         <z:index name="Name-geographic:w">
782           <xslo:value-of select="."/>
783         </z:index>
784       </xslo:if>
785     </xslo:for-each>
786     <xslo:for-each select="marc:subfield">
787       <xslo:if test="contains('9', @code)">
788         <z:index name="Koha-Auth-Number:w">
789           <xslo:value-of select="."/>
790         </z:index>
791       </xslo:if>
792     </xslo:for-each>
793   </xslo:template>
794   <xslo:template mode="index_subfields" match="marc:datafield[@tag='770']">
795     <xslo:for-each select="marc:subfield">
796       <xslo:if test="contains('w', @code)">
797         <z:index name="Record-control-number:w">
798           <xslo:value-of select="."/>
799         </z:index>
800       </xslo:if>
801     </xslo:for-each>
802   </xslo:template>
803   <xslo:template mode="index_subfields" match="marc:datafield[@tag='772']">
804     <xslo:for-each select="marc:subfield">
805       <xslo:if test="contains('w', @code)">
806         <z:index name="Record-control-number:w">
807           <xslo:value-of select="."/>
808         </z:index>
809       </xslo:if>
810     </xslo:for-each>
811   </xslo:template>
812   <xslo:template mode="index_subfields" match="marc:datafield[@tag='773']">
813     <xslo:for-each select="marc:subfield">
814       <xslo:if test="contains('a', @code)">
815         <z:index name="Host-item:w">
816           <xslo:value-of select="."/>
817         </z:index>
818       </xslo:if>
819     </xslo:for-each>
820     <xslo:for-each select="marc:subfield">
821       <xslo:if test="contains('9', @code)">
822         <z:index name="Host-Item-Number:w">
823           <xslo:value-of select="."/>
824         </z:index>
825       </xslo:if>
826     </xslo:for-each>
827     <xslo:for-each select="marc:subfield">
828       <xslo:if test="contains('t', @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('w', @code)">
836         <z:index name="Record-control-number:w">
837           <xslo:value-of select="."/>
838         </z:index>
839       </xslo:if>
840     </xslo:for-each>
841   </xslo:template>
842   <xslo:template mode="index_subfields" match="marc:datafield[@tag='774']">
843     <xslo:for-each select="marc:subfield">
844       <xslo:if test="contains('w', @code)">
845         <z:index name="Record-control-number:w">
846           <xslo:value-of select="."/>
847         </z:index>
848       </xslo:if>
849     </xslo:for-each>
850   </xslo:template>
851   <xslo:template mode="index_subfields" match="marc:datafield[@tag='775']">
852     <xslo:for-each select="marc:subfield">
853       <xslo:if test="contains('w', @code)">
854         <z:index name="Record-control-number:w">
855           <xslo:value-of select="."/>
856         </z:index>
857       </xslo:if>
858     </xslo:for-each>
859   </xslo:template>
860   <xslo:template mode="index_subfields" match="marc:datafield[@tag='776']">
861     <xslo:for-each select="marc:subfield">
862       <xslo:if test="contains('w', @code)">
863         <z:index name="Record-control-number:w">
864           <xslo:value-of select="."/>
865         </z:index>
866       </xslo:if>
867     </xslo:for-each>
868   </xslo:template>
869   <xslo:template mode="index_subfields" match="marc:datafield[@tag='777']">
870     <xslo:for-each select="marc:subfield">
871       <xslo:if test="contains('w', @code)">
872         <z:index name="Record-control-number:w">
873           <xslo:value-of select="."/>
874         </z:index>
875       </xslo:if>
876     </xslo:for-each>
877   </xslo:template>
878   <xslo:template mode="index_subfields" match="marc:datafield[@tag='780']">
879     <xslo:for-each select="marc:subfield">
880       <xslo:if test="contains('t', @code)">
881         <z:index name="Title:w">
882           <xslo:value-of select="."/>
883         </z:index>
884       </xslo:if>
885     </xslo:for-each>
886     <xslo:for-each select="marc:subfield">
887       <xslo:if test="contains('w', @code)">
888         <z:index name="Record-control-number:w">
889           <xslo:value-of select="."/>
890         </z:index>
891       </xslo:if>
892     </xslo:for-each>
893   </xslo:template>
894   <xslo:template mode="index_subfields" match="marc:datafield[@tag='785']">
895     <xslo:for-each select="marc:subfield">
896       <xslo:if test="contains('w', @code)">
897         <z:index name="Record-control-number:w">
898           <xslo:value-of select="."/>
899         </z:index>
900       </xslo:if>
901     </xslo:for-each>
902   </xslo:template>
903   <xslo:template mode="index_subfields" match="marc:datafield[@tag='787']">
904     <xslo:for-each select="marc:subfield">
905       <xslo:if test="contains('w', @code)">
906         <z:index name="Record-control-number:w">
907           <xslo:value-of select="."/>
908         </z:index>
909       </xslo:if>
910     </xslo:for-each>
911   </xslo:template>
912   <xslo:template mode="index_subfields" match="marc:datafield[@tag='800']">
913     <xslo:for-each select="marc:subfield">
914       <xslo:if test="contains('a', @code)">
915         <z:index name="Name-and-title:w Title-series:w Title-series:p">
916           <xslo:value-of select="."/>
917         </z:index>
918       </xslo:if>
919     </xslo:for-each>
920     <xslo:for-each select="marc:subfield">
921       <xslo:if test="contains('t', @code)">
922         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w Title-series:p">
923           <xslo:value-of select="."/>
924         </z:index>
925       </xslo:if>
926     </xslo:for-each>
927     <xslo:for-each select="marc:subfield">
928       <xslo:if test="contains('9', @code)">
929         <z:index name="Koha-Auth-Number:w">
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('w', @code)">
936         <z:index name="Record-control-number:w">
937           <xslo:value-of select="."/>
938         </z:index>
939       </xslo:if>
940     </xslo:for-each>
941   </xslo:template>
942   <xslo:template mode="index_subfields" match="marc:datafield[@tag='810']">
943     <xslo:for-each select="marc:subfield">
944       <xslo:if test="contains('a', @code)">
945         <z:index name="Name-and-title:w Title-series:w Title-series:p">
946           <xslo:value-of select="."/>
947         </z:index>
948       </xslo:if>
949     </xslo:for-each>
950     <xslo:for-each select="marc:subfield">
951       <xslo:if test="contains('t', @code)">
952         <z:index name="Author-title:w Name-and-title:w Title:w Title-series:w Title-series:p">
953           <xslo:value-of select="."/>
954         </z:index>
955       </xslo:if>
956     </xslo:for-each>
957     <xslo:for-each select="marc:subfield">
958       <xslo:if test="contains('w', @code)">
959         <z:index name="Record-control-number:w">
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('9', @code)">
966         <z:index name="Koha-Auth-Number:w">
967           <xslo:value-of select="."/>
968         </z:index>
969       </xslo:if>
970     </xslo:for-each>
971   </xslo:template>
972   <xslo:template mode="index_subfields" match="marc:datafield[@tag='811']">
973     <xslo:for-each select="marc:subfield">
974       <xslo:if test="contains('a', @code)">
975         <z:index name="Name-and-title:w Title-series:w Title-series:p">
976           <xslo:value-of select="."/>
977         </z:index>
978       </xslo:if>
979     </xslo:for-each>
980     <xslo:for-each select="marc:subfield">
981       <xslo:if test="contains('9', @code)">
982         <z:index name="Koha-Auth-Number:w">
983           <xslo:value-of select="."/>
984         </z:index>
985       </xslo:if>
986     </xslo:for-each>
987     <xslo:for-each select="marc:subfield">
988       <xslo:if test="contains('t', @code)">
989         <z:index name="Author-title:w Name-and-title:w 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('w', @code)">
996         <z:index name="Record-control-number:w">
997           <xslo:value-of select="."/>
998         </z:index>
999       </xslo:if>
1000     </xslo:for-each>
1001   </xslo:template>
1002   <xslo:template mode="index_subfields" match="marc:datafield[@tag='830']">
1003     <xslo:for-each select="marc:subfield">
1004       <xslo:if test="contains('w', @code)">
1005         <z:index name="Record-control-number:w">
1006           <xslo:value-of select="."/>
1007         </z:index>
1008       </xslo:if>
1009     </xslo:for-each>
1010     <xslo:for-each select="marc:subfield">
1011       <xslo:if test="contains('9', @code)">
1012         <z:index name="Koha-Auth-Number:w">
1013           <xslo:value-of select="."/>
1014         </z:index>
1015       </xslo:if>
1016     </xslo:for-each>
1017   </xslo:template>
1018   <xslo:template mode="index_subfields" match="marc:datafield[@tag='999']">
1019     <xslo:for-each select="marc:subfield">
1020       <xslo:if test="contains('c', @code)">
1021         <z:index name="Local-Number:n Local-Number:w Local-Number:s">
1022           <xslo:value-of select="."/>
1023         </z:index>
1024       </xslo:if>
1025     </xslo:for-each>
1026     <xslo:for-each select="marc:subfield">
1027       <xslo:if test="contains('d', @code)">
1028         <z:index name="biblioitemnumber:n biblioitemnumber:w biblioitemnumber:s">
1029           <xslo:value-of select="."/>
1030         </z:index>
1031       </xslo:if>
1032     </xslo:for-each>
1033   </xslo:template>
1034   <xslo:template mode="index_subfields" match="marc:datafield[@tag='942']">
1035     <xslo:for-each select="marc:subfield">
1036       <xslo:if test="contains('0', @code)">
1037         <z:index name="totalissues:n totalissues:s">
1038           <xslo:value-of select="."/>
1039         </z:index>
1040       </xslo:if>
1041     </xslo:for-each>
1042     <xslo:for-each select="marc:subfield">
1043       <xslo:if test="contains('2', @code)">
1044         <z:index name="cn-bib-source:w">
1045           <xslo:value-of select="."/>
1046         </z:index>
1047       </xslo:if>
1048     </xslo:for-each>
1049     <xslo:for-each select="marc:subfield">
1050       <xslo:if test="contains('6', @code)">
1051         <z:index name="cn-bib-sort:n cn-bib-sort: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('c', @code)">
1058         <z:index name="itemtype:w itemtype:p itype:w itype:p">
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('n', @code)">
1065         <z:index name="Suppress:w Suppress:n">
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('h', @code)">
1072         <z:index name="cn-class:w">
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('i', @code)">
1079         <z:index name="cn-item:w">
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('k', @code)">
1086         <z:index name="cn-prefix: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('m', @code)">
1093         <z:index name="cn-suffix:w">
1094           <xslo:value-of select="."/>
1095         </z:index>
1096       </xslo:if>
1097     </xslo:for-each>
1098   </xslo:template>
1099   <xslo:template mode="index_subfields" match="marc:datafield[@tag='952']">
1100     <xslo:for-each select="marc:subfield">
1101       <xslo:if test="contains('0', @code)">
1102         <z:index name="withdrawn:n withdrawn:w">
1103           <xslo:value-of select="."/>
1104         </z:index>
1105       </xslo:if>
1106     </xslo:for-each>
1107     <xslo:for-each select="marc:subfield">
1108       <xslo:if test="contains('1', @code)">
1109         <z:index name="lost:w lost:n">
1110           <xslo:value-of select="."/>
1111         </z:index>
1112       </xslo:if>
1113     </xslo:for-each>
1114     <xslo:for-each select="marc:subfield">
1115       <xslo:if test="contains('2', @code)">
1116         <z:index name="classification-source: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('3', @code)">
1123         <z:index name="materials-specified:w">
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('4', @code)">
1130         <z:index name="damaged:n damaged: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('5', @code)">
1137         <z:index name="restricted:n restricted: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('6', @code)">
1144         <z:index name="cn-sort:n cn-sort:s">
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('7', @code)">
1151         <z:index name="notforloan:n notforloan: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('8', @code)">
1158         <z:index name="ccode:w ccode:p">
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('9', @code)">
1165         <z:index name="itemnumber:n itemnumber:s">
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('a', @code)">
1172         <z:index name="homebranch:w">
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('b', @code)">
1179         <z:index name="holdingbranch:w">
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('c', @code)">
1186         <z:index name="location: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('d', @code)">
1193         <z:index name="Date-of-acquisition:w Date-of-acquisition:d Date-of-acquisition:s">
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('e', @code)">
1200         <z:index name="acqsource: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('f', @code)">
1207         <z:index name="coded-location-qualifier:w">
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('g', @code)">
1214         <z:index name="price: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('i', @code)">
1221         <z:index name="Number-local-acquisition: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('j', @code)">
1228         <z:index name="stack:n stack: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('l', @code)">
1235         <z:index name="issues:n issues:w issues:s">
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('m', @code)">
1242         <z:index name="renewals:n renewals: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('n', @code)">
1249         <z:index name="reserves:n reserves:w">
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('o', @code)">
1256         <z:index name="Local-classification:w Local-classification:p Local-classification:s">
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('p', @code)">
1263         <z:index name="barcode:w barcode:n">
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('q', @code)">
1270         <z:index name="onloan:n onloan:w">
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('r', @code)">
1277         <z:index name="datelastseen:w">
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('s', @code)">
1284         <z:index name="datelastborrowed: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('t', @code)">
1291         <z:index name="copynumber: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('u', @code)">
1298         <z:index name="uri:u">
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('v', @code)">
1305         <z:index name="replacementprice: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('w', @code)">
1312         <z:index name="replacementpricedate:w">
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('y', @code)">
1319         <z:index name="itype:w itype:p">
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('z', @code)">
1326         <z:index name="Note:w Note:p">
1327           <xslo:value-of select="."/>
1328         </z:index>
1329       </xslo:if>
1330     </xslo:for-each>
1331   </xslo:template>
1332   <xslo:template mode="index_data_field" match="marc:datafield[@tag='010']">
1333     <z:index name="LC-card-number:w Identifier-standard:w">
1334       <xslo:variable name="raw_heading">
1335         <xslo:for-each select="marc:subfield">
1336           <xslo:if test="position() &gt; 1">
1337             <xslo:value-of select="substring(' ', 1, 1)"/>
1338           </xslo:if>
1339           <xslo:value-of select="."/>
1340         </xslo:for-each>
1341       </xslo:variable>
1342       <xslo:value-of select="normalize-space($raw_heading)"/>
1343     </z:index>
1344   </xslo:template>
1345   <xslo:template mode="index_data_field" match="marc:datafield[@tag='011']">
1346     <z:index name="LC-card-number:w Identifier-standard:w">
1347       <xslo:variable name="raw_heading">
1348         <xslo:for-each select="marc:subfield">
1349           <xslo:if test="position() &gt; 1">
1350             <xslo:value-of select="substring(' ', 1, 1)"/>
1351           </xslo:if>
1352           <xslo:value-of select="."/>
1353         </xslo:for-each>
1354       </xslo:variable>
1355       <xslo:value-of select="normalize-space($raw_heading)"/>
1356     </z:index>
1357   </xslo:template>
1358   <xslo:template mode="index_data_field" match="marc:datafield[@tag='015']">
1359     <z:index name="BNB-card-number:w BGF-number:w Number-db:w Number-natl-biblio:w Identifier-standard:w">
1360       <xslo:variable name="raw_heading">
1361         <xslo:for-each select="marc:subfield">
1362           <xslo:if test="position() &gt; 1">
1363             <xslo:value-of select="substring(' ', 1, 1)"/>
1364           </xslo:if>
1365           <xslo:value-of select="."/>
1366         </xslo:for-each>
1367       </xslo:variable>
1368       <xslo:value-of select="normalize-space($raw_heading)"/>
1369     </z:index>
1370   </xslo:template>
1371   <xslo:template mode="index_data_field" match="marc:datafield[@tag='017']">
1372     <z:index name="Number-legal-deposit:w Identifier-standard:w">
1373       <xslo:variable name="raw_heading">
1374         <xslo:for-each select="marc:subfield">
1375           <xslo:if test="position() &gt; 1">
1376             <xslo:value-of select="substring(' ', 1, 1)"/>
1377           </xslo:if>
1378           <xslo:value-of select="."/>
1379         </xslo:for-each>
1380       </xslo:variable>
1381       <xslo:value-of select="normalize-space($raw_heading)"/>
1382     </z:index>
1383   </xslo:template>
1384   <xslo:template mode="index_data_field" match="marc:datafield[@tag='018']">
1385     <z:index name="Identifier-standard:w">
1386       <xslo:variable name="raw_heading">
1387         <xslo:for-each select="marc:subfield">
1388           <xslo:if test="position() &gt; 1">
1389             <xslo:value-of select="substring(' ', 1, 1)"/>
1390           </xslo:if>
1391           <xslo:value-of select="."/>
1392         </xslo:for-each>
1393       </xslo:variable>
1394       <xslo:value-of select="normalize-space($raw_heading)"/>
1395     </z:index>
1396   </xslo:template>
1397   <xslo:template mode="index_data_field" match="marc:datafield[@tag='020']">
1398     <z:index name="Identifier-standard:w">
1399       <xslo:variable name="raw_heading">
1400         <xslo:for-each select="marc:subfield">
1401           <xslo:if test="position() &gt; 1">
1402             <xslo:value-of select="substring(' ', 1, 1)"/>
1403           </xslo:if>
1404           <xslo:value-of select="."/>
1405         </xslo:for-each>
1406       </xslo:variable>
1407       <xslo:value-of select="normalize-space($raw_heading)"/>
1408     </z:index>
1409   </xslo:template>
1410   <xslo:template mode="index_data_field" match="marc:datafield[@tag='022']">
1411     <z:index name="Identifier-standard:w">
1412       <xslo:variable name="raw_heading">
1413         <xslo:for-each select="marc:subfield">
1414           <xslo:if test="position() &gt; 1">
1415             <xslo:value-of select="substring(' ', 1, 1)"/>
1416           </xslo:if>
1417           <xslo:value-of select="."/>
1418         </xslo:for-each>
1419       </xslo:variable>
1420       <xslo:value-of select="normalize-space($raw_heading)"/>
1421     </z:index>
1422   </xslo:template>
1423   <xslo:template mode="index_data_field" match="marc:datafield[@tag='023']">
1424     <z:index name="Identifier-standard:w">
1425       <xslo:variable name="raw_heading">
1426         <xslo:for-each select="marc:subfield">
1427           <xslo:if test="position() &gt; 1">
1428             <xslo:value-of select="substring(' ', 1, 1)"/>
1429           </xslo:if>
1430           <xslo:value-of select="."/>
1431         </xslo:for-each>
1432       </xslo:variable>
1433       <xslo:value-of select="normalize-space($raw_heading)"/>
1434     </z:index>
1435   </xslo:template>
1436   <xslo:template mode="index_data_field" match="marc:datafield[@tag='024']">
1437     <z:index name="Identifier-standard:w">
1438       <xslo:variable name="raw_heading">
1439         <xslo:for-each select="marc:subfield">
1440           <xslo:if test="position() &gt; 1">
1441             <xslo:value-of select="substring(' ', 1, 1)"/>
1442           </xslo:if>
1443           <xslo:value-of select="."/>
1444         </xslo:for-each>
1445       </xslo:variable>
1446       <xslo:value-of select="normalize-space($raw_heading)"/>
1447     </z:index>
1448   </xslo:template>
1449   <xslo:template mode="index_data_field" match="marc:datafield[@tag='025']">
1450     <z:index name="Identifier-standard:w">
1451       <xslo:variable name="raw_heading">
1452         <xslo:for-each select="marc:subfield">
1453           <xslo:if test="position() &gt; 1">
1454             <xslo:value-of select="substring(' ', 1, 1)"/>
1455           </xslo:if>
1456           <xslo:value-of select="."/>
1457         </xslo:for-each>
1458       </xslo:variable>
1459       <xslo:value-of select="normalize-space($raw_heading)"/>
1460     </z:index>
1461   </xslo:template>
1462   <xslo:template mode="index_data_field" match="marc:datafield[@tag='027']">
1463     <z:index name="Report-number:w Identifier-standard:w">
1464       <xslo:variable name="raw_heading">
1465         <xslo:for-each select="marc:subfield">
1466           <xslo:if test="position() &gt; 1">
1467             <xslo:value-of select="substring(' ', 1, 1)"/>
1468           </xslo:if>
1469           <xslo:value-of select="."/>
1470         </xslo:for-each>
1471       </xslo:variable>
1472       <xslo:value-of select="normalize-space($raw_heading)"/>
1473     </z:index>
1474   </xslo:template>
1475   <xslo:template mode="index_data_field" match="marc:datafield[@tag='028']">
1476     <z:index name="Identifier-publisher-for-music:w Identifier-standard:w">
1477       <xslo:variable name="raw_heading">
1478         <xslo:for-each select="marc:subfield">
1479           <xslo:if test="position() &gt; 1">
1480             <xslo:value-of select="substring(' ', 1, 1)"/>
1481           </xslo:if>
1482           <xslo:value-of select="."/>
1483         </xslo:for-each>
1484       </xslo:variable>
1485       <xslo:value-of select="normalize-space($raw_heading)"/>
1486     </z:index>
1487   </xslo:template>
1488   <xslo:template mode="index_data_field" match="marc:datafield[@tag='030']">
1489     <z:index name="CODEN:w Identifier-standard:w">
1490       <xslo:variable name="raw_heading">
1491         <xslo:for-each select="marc:subfield">
1492           <xslo:if test="position() &gt; 1">
1493             <xslo:value-of select="substring(' ', 1, 1)"/>
1494           </xslo:if>
1495           <xslo:value-of select="."/>
1496         </xslo:for-each>
1497       </xslo:variable>
1498       <xslo:value-of select="normalize-space($raw_heading)"/>
1499     </z:index>
1500   </xslo:template>
1501   <xslo:template mode="index_data_field" match="marc:datafield[@tag='034']">
1502     <z:index name="Map-scale:w">
1503       <xslo:variable name="raw_heading">
1504         <xslo:for-each select="marc:subfield">
1505           <xslo:if test="position() &gt; 1">
1506             <xslo:value-of select="substring(' ', 1, 1)"/>
1507           </xslo:if>
1508           <xslo:value-of select="."/>
1509         </xslo:for-each>
1510       </xslo:variable>
1511       <xslo:value-of select="normalize-space($raw_heading)"/>
1512     </z:index>
1513   </xslo:template>
1514   <xslo:template mode="index_data_field" match="marc:datafield[@tag='037']">
1515     <z:index name="Identifier-standard:w Stock-number:w">
1516       <xslo:variable name="raw_heading">
1517         <xslo:for-each select="marc:subfield">
1518           <xslo:if test="position() &gt; 1">
1519             <xslo:value-of select="substring(' ', 1, 1)"/>
1520           </xslo:if>
1521           <xslo:value-of select="."/>
1522         </xslo:for-each>
1523       </xslo:variable>
1524       <xslo:value-of select="normalize-space($raw_heading)"/>
1525     </z:index>
1526   </xslo:template>
1527   <xslo:template mode="index_data_field" match="marc:datafield[@tag='040']">
1528     <z:index name="Code-institution:w Record-source:w">
1529       <xslo:variable name="raw_heading">
1530         <xslo:for-each select="marc:subfield">
1531           <xslo:if test="position() &gt; 1">
1532             <xslo:value-of select="substring(' ', 1, 1)"/>
1533           </xslo:if>
1534           <xslo:value-of select="."/>
1535         </xslo:for-each>
1536       </xslo:variable>
1537       <xslo:value-of select="normalize-space($raw_heading)"/>
1538     </z:index>
1539   </xslo:template>
1540   <xslo:template mode="index_data_field" match="marc:datafield[@tag='043']">
1541     <z:index name="Code-geographic:w">
1542       <xslo:variable name="raw_heading">
1543         <xslo:for-each select="marc:subfield">
1544           <xslo:if test="position() &gt; 1">
1545             <xslo:value-of select="substring(' ', 1, 1)"/>
1546           </xslo:if>
1547           <xslo:value-of select="."/>
1548         </xslo:for-each>
1549       </xslo:variable>
1550       <xslo:value-of select="normalize-space($raw_heading)"/>
1551     </z:index>
1552   </xslo:template>
1553   <xslo:template mode="index_data_field" match="marc:datafield[@tag='050']">
1554     <z:index name="LC-call-number:w LC-call-number:p LC-call-number:s">
1555       <xslo:variable name="raw_heading">
1556         <xslo:for-each select="marc:subfield">
1557           <xslo:if test="position() &gt; 1">
1558             <xslo:value-of select="substring(' ', 1, 1)"/>
1559           </xslo:if>
1560           <xslo:value-of select="."/>
1561         </xslo:for-each>
1562       </xslo:variable>
1563       <xslo:value-of select="normalize-space($raw_heading)"/>
1564     </z:index>
1565   </xslo:template>
1566   <xslo:template mode="index_data_field" match="marc:datafield[@tag='052']">
1567     <z:index name="Geographic-class:w">
1568       <xslo:variable name="raw_heading">
1569         <xslo:for-each select="marc:subfield">
1570           <xslo:if test="position() &gt; 1">
1571             <xslo:value-of select="substring(' ', 1, 1)"/>
1572           </xslo:if>
1573           <xslo:value-of select="."/>
1574         </xslo:for-each>
1575       </xslo:variable>
1576       <xslo:value-of select="normalize-space($raw_heading)"/>
1577     </z:index>
1578   </xslo:template>
1579   <xslo:template mode="index_data_field" match="marc:datafield[@tag='060']">
1580     <z:index name="NLM-call-number:w">
1581       <xslo:variable name="raw_heading">
1582         <xslo:for-each select="marc:subfield">
1583           <xslo:if test="position() &gt; 1">
1584             <xslo:value-of select="substring(' ', 1, 1)"/>
1585           </xslo:if>
1586           <xslo:value-of select="."/>
1587         </xslo:for-each>
1588       </xslo:variable>
1589       <xslo:value-of select="normalize-space($raw_heading)"/>
1590     </z:index>
1591   </xslo:template>
1592   <xslo:template mode="index_data_field" match="marc:datafield[@tag='070']">
1593     <z:index name="NAL-call-number:w">
1594       <xslo:variable name="raw_heading">
1595         <xslo:for-each select="marc:subfield">
1596           <xslo:if test="position() &gt; 1">
1597             <xslo:value-of select="substring(' ', 1, 1)"/>
1598           </xslo:if>
1599           <xslo:value-of select="."/>
1600         </xslo:for-each>
1601       </xslo:variable>
1602       <xslo:value-of select="normalize-space($raw_heading)"/>
1603     </z:index>
1604   </xslo:template>
1605   <xslo:template mode="index_data_field" match="marc:datafield[@tag='080']">
1606     <z:index name="UDC-classification:w">
1607       <xslo:variable name="raw_heading">
1608         <xslo:for-each select="marc:subfield">
1609           <xslo:if test="position() &gt; 1">
1610             <xslo:value-of select="substring(' ', 1, 1)"/>
1611           </xslo:if>
1612           <xslo:value-of select="."/>
1613         </xslo:for-each>
1614       </xslo:variable>
1615       <xslo:value-of select="normalize-space($raw_heading)"/>
1616     </z:index>
1617   </xslo:template>
1618   <xslo:template mode="index_data_field" match="marc:datafield[@tag='082']">
1619     <z:index name="Dewey-classification:w Dewey-classification:s">
1620       <xslo:variable name="raw_heading">
1621         <xslo:for-each select="marc:subfield">
1622           <xslo:if test="position() &gt; 1">
1623             <xslo:value-of select="substring(' ', 1, 1)"/>
1624           </xslo:if>
1625           <xslo:value-of select="."/>
1626         </xslo:for-each>
1627       </xslo:variable>
1628       <xslo:value-of select="normalize-space($raw_heading)"/>
1629     </z:index>
1630   </xslo:template>
1631   <xslo:template mode="index_data_field" match="marc:datafield[@tag='086']">
1632     <z:index name="Number-govt-pub:w">
1633       <xslo:variable name="raw_heading">
1634         <xslo:for-each select="marc:subfield">
1635           <xslo:if test="position() &gt; 1">
1636             <xslo:value-of select="substring(' ', 1, 1)"/>
1637           </xslo:if>
1638           <xslo:value-of select="."/>
1639         </xslo:for-each>
1640       </xslo:variable>
1641       <xslo:value-of select="normalize-space($raw_heading)"/>
1642     </z:index>
1643   </xslo:template>
1644   <xslo:template mode="index_data_field" match="marc:datafield[@tag='100']">
1645     <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">
1646       <xslo:variable name="raw_heading">
1647         <xslo:for-each select="marc:subfield">
1648           <xslo:if test="position() &gt; 1">
1649             <xslo:value-of select="substring(' ', 1, 1)"/>
1650           </xslo:if>
1651           <xslo:value-of select="."/>
1652         </xslo:for-each>
1653       </xslo:variable>
1654       <xslo:value-of select="normalize-space($raw_heading)"/>
1655     </z:index>
1656   </xslo:template>
1657   <xslo:template mode="index_data_field" match="marc:datafield[@tag='110']">
1658     <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">
1659       <xslo:variable name="raw_heading">
1660         <xslo:for-each select="marc:subfield">
1661           <xslo:if test="position() &gt; 1">
1662             <xslo:value-of select="substring(' ', 1, 1)"/>
1663           </xslo:if>
1664           <xslo:value-of select="."/>
1665         </xslo:for-each>
1666       </xslo:variable>
1667       <xslo:value-of select="normalize-space($raw_heading)"/>
1668     </z:index>
1669   </xslo:template>
1670   <xslo:template mode="index_data_field" match="marc:datafield[@tag='111']">
1671     <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">
1672       <xslo:variable name="raw_heading">
1673         <xslo:for-each select="marc:subfield">
1674           <xslo:if test="position() &gt; 1">
1675             <xslo:value-of select="substring(' ', 1, 1)"/>
1676           </xslo:if>
1677           <xslo:value-of select="."/>
1678         </xslo:for-each>
1679       </xslo:variable>
1680       <xslo:value-of select="normalize-space($raw_heading)"/>
1681     </z:index>
1682   </xslo:template>
1683   <xslo:template mode="index_data_field" match="marc:datafield[@tag='130']">
1684     <z:index name="Title:w Title:p Title-uniform:w">
1685       <xslo:variable name="raw_heading">
1686         <xslo:for-each select="marc:subfield">
1687           <xslo:if test="position() &gt; 1">
1688             <xslo:value-of select="substring(' ', 1, 1)"/>
1689           </xslo:if>
1690           <xslo:value-of select="."/>
1691         </xslo:for-each>
1692       </xslo:variable>
1693       <xslo:value-of select="normalize-space($raw_heading)"/>
1694     </z:index>
1695   </xslo:template>
1696   <xslo:template mode="index_data_field" match="marc:datafield[@tag='210']">
1697     <z:index name="Title:w Title:p Title-abbreviated:w">
1698       <xslo:variable name="raw_heading">
1699         <xslo:for-each select="marc:subfield">
1700           <xslo:if test="position() &gt; 1">
1701             <xslo:value-of select="substring(' ', 1, 1)"/>
1702           </xslo:if>
1703           <xslo:value-of select="."/>
1704         </xslo:for-each>
1705       </xslo:variable>
1706       <xslo:value-of select="normalize-space($raw_heading)"/>
1707     </z:index>
1708   </xslo:template>
1709   <xslo:template mode="index_data_field" match="marc:datafield[@tag='211']">
1710     <z:index name="Title:w Title:p Title-abbreviated:w">
1711       <xslo:variable name="raw_heading">
1712         <xslo:for-each select="marc:subfield">
1713           <xslo:if test="position() &gt; 1">
1714             <xslo:value-of select="substring(' ', 1, 1)"/>
1715           </xslo:if>
1716           <xslo:value-of select="."/>
1717         </xslo:for-each>
1718       </xslo:variable>
1719       <xslo:value-of select="normalize-space($raw_heading)"/>
1720     </z:index>
1721   </xslo:template>
1722   <xslo:template mode="index_data_field" match="marc:datafield[@tag='212']">
1723     <z:index name="Title:w Title:p Title-other-variant:w">
1724       <xslo:variable name="raw_heading">
1725         <xslo:for-each select="marc:subfield">
1726           <xslo:if test="position() &gt; 1">
1727             <xslo:value-of select="substring(' ', 1, 1)"/>
1728           </xslo:if>
1729           <xslo:value-of select="."/>
1730         </xslo:for-each>
1731       </xslo:variable>
1732       <xslo:value-of select="normalize-space($raw_heading)"/>
1733     </z:index>
1734   </xslo:template>
1735   <xslo:template mode="index_data_field" match="marc:datafield[@tag='214']">
1736     <z:index name="Title:w Title:p Title-expanded:w">
1737       <xslo:variable name="raw_heading">
1738         <xslo:for-each select="marc:subfield">
1739           <xslo:if test="position() &gt; 1">
1740             <xslo:value-of select="substring(' ', 1, 1)"/>
1741           </xslo:if>
1742           <xslo:value-of select="."/>
1743         </xslo:for-each>
1744       </xslo:variable>
1745       <xslo:value-of select="normalize-space($raw_heading)"/>
1746     </z:index>
1747   </xslo:template>
1748   <xslo:template mode="index_data_field" match="marc:datafield[@tag='222']">
1749     <z:index name="Title:w Title:p Title-key:w">
1750       <xslo:variable name="raw_heading">
1751         <xslo:for-each select="marc:subfield">
1752           <xslo:if test="position() &gt; 1">
1753             <xslo:value-of select="substring(' ', 1, 1)"/>
1754           </xslo:if>
1755           <xslo:value-of select="."/>
1756         </xslo:for-each>
1757       </xslo:variable>
1758       <xslo:value-of select="normalize-space($raw_heading)"/>
1759     </z:index>
1760   </xslo:template>
1761   <xslo:template mode="index_data_field" match="marc:datafield[@tag='240']">
1762     <z:index name="Title:w Title:p Title-uniform:w">
1763       <xslo:variable name="raw_heading">
1764         <xslo:for-each select="marc:subfield">
1765           <xslo:if test="position() &gt; 1">
1766             <xslo:value-of select="substring(' ', 1, 1)"/>
1767           </xslo:if>
1768           <xslo:value-of select="."/>
1769         </xslo:for-each>
1770       </xslo:variable>
1771       <xslo:value-of select="normalize-space($raw_heading)"/>
1772     </z:index>
1773   </xslo:template>
1774   <xslo:template mode="index_data_field" match="marc:datafield[@tag='243']">
1775     <z:index name="Title:w Title:p Title-collective:w">
1776       <xslo:variable name="raw_heading">
1777         <xslo:for-each select="marc:subfield">
1778           <xslo:if test="position() &gt; 1">
1779             <xslo:value-of select="substring(' ', 1, 1)"/>
1780           </xslo:if>
1781           <xslo:value-of select="."/>
1782         </xslo:for-each>
1783       </xslo:variable>
1784       <xslo:value-of select="normalize-space($raw_heading)"/>
1785     </z:index>
1786   </xslo:template>
1787   <xslo:template mode="index_data_field" match="marc:datafield[@tag='245']">
1788     <z:index name="Title:w Title:p">
1789       <xslo:variable name="raw_heading">
1790         <xslo:for-each select="marc:subfield">
1791           <xslo:if test="position() &gt; 1">
1792             <xslo:value-of select="substring(' ', 1, 1)"/>
1793           </xslo:if>
1794           <xslo:value-of select="."/>
1795         </xslo:for-each>
1796       </xslo:variable>
1797       <xslo:value-of select="normalize-space($raw_heading)"/>
1798     </z:index>
1799   </xslo:template>
1800   <xslo:template mode="index_data_field" match="marc:datafield[@tag='246']">
1801     <z:index name="Title:w Title:p Title-abbreviated:w Title-expanded:w Title-former:w">
1802       <xslo:variable name="raw_heading">
1803         <xslo:for-each select="marc:subfield">
1804           <xslo:if test="position() &gt; 1">
1805             <xslo:value-of select="substring(' ', 1, 1)"/>
1806           </xslo:if>
1807           <xslo:value-of select="."/>
1808         </xslo:for-each>
1809       </xslo:variable>
1810       <xslo:value-of select="normalize-space($raw_heading)"/>
1811     </z:index>
1812   </xslo:template>
1813   <xslo:template mode="index_data_field" match="marc:datafield[@tag='247']">
1814     <z:index name="Title:w Title:p Title-former:w Title-other-variant:w Related-periodical:w">
1815       <xslo:variable name="raw_heading">
1816         <xslo:for-each select="marc:subfield">
1817           <xslo:if test="position() &gt; 1">
1818             <xslo:value-of select="substring(' ', 1, 1)"/>
1819           </xslo:if>
1820           <xslo:value-of select="."/>
1821         </xslo:for-each>
1822       </xslo:variable>
1823       <xslo:value-of select="normalize-space($raw_heading)"/>
1824     </z:index>
1825   </xslo:template>
1826   <xslo:template mode="index_data_field" match="marc:datafield[@tag='260']">
1827     <z:index name="pl:w">
1828       <xslo:variable name="raw_heading">
1829         <xslo:for-each select="marc:subfield">
1830           <xslo:if test="position() &gt; 1">
1831             <xslo:value-of select="substring(' ', 1, 1)"/>
1832           </xslo:if>
1833           <xslo:value-of select="."/>
1834         </xslo:for-each>
1835       </xslo:variable>
1836       <xslo:value-of select="normalize-space($raw_heading)"/>
1837     </z:index>
1838   </xslo:template>
1839   <xslo:template mode="index_data_field" match="marc:datafield[@tag='300']">
1840     <z:index name="Extent:w Extent:p">
1841       <xslo:variable name="raw_heading">
1842         <xslo:for-each select="marc:subfield">
1843           <xslo:if test="position() &gt; 1">
1844             <xslo:value-of select="substring(' ', 1, 1)"/>
1845           </xslo:if>
1846           <xslo:value-of select="."/>
1847         </xslo:for-each>
1848       </xslo:variable>
1849       <xslo:value-of select="normalize-space($raw_heading)"/>
1850     </z:index>
1851   </xslo:template>
1852   <xslo:template mode="index_data_field" match="marc:datafield[@tag='400']">
1853     <z:index name="Author:w Author-name-personal:w Name:w Personal-name:w">
1854       <xslo:variable name="raw_heading">
1855         <xslo:for-each select="marc:subfield">
1856           <xslo:if test="position() &gt; 1">
1857             <xslo:value-of select="substring(' ', 1, 1)"/>
1858           </xslo:if>
1859           <xslo:value-of select="."/>
1860         </xslo:for-each>
1861       </xslo:variable>
1862       <xslo:value-of select="normalize-space($raw_heading)"/>
1863     </z:index>
1864   </xslo:template>
1865   <xslo:template mode="index_data_field" match="marc:datafield[@tag='410']">
1866     <z:index name="Author:w Corporate-name:w">
1867       <xslo:variable name="raw_heading">
1868         <xslo:for-each select="marc:subfield">
1869           <xslo:if test="position() &gt; 1">
1870             <xslo:value-of select="substring(' ', 1, 1)"/>
1871           </xslo:if>
1872           <xslo:value-of select="."/>
1873         </xslo:for-each>
1874       </xslo:variable>
1875       <xslo:value-of select="normalize-space($raw_heading)"/>
1876     </z:index>
1877   </xslo:template>
1878   <xslo:template mode="index_data_field" match="marc:datafield[@tag='411']">
1879     <z:index name="Author:w Conference-name:w">
1880       <xslo:variable name="raw_heading">
1881         <xslo:for-each select="marc:subfield">
1882           <xslo:if test="position() &gt; 1">
1883             <xslo:value-of select="substring(' ', 1, 1)"/>
1884           </xslo:if>
1885           <xslo:value-of select="."/>
1886         </xslo:for-each>
1887       </xslo:variable>
1888       <xslo:value-of select="normalize-space($raw_heading)"/>
1889     </z:index>
1890   </xslo:template>
1891   <xslo:template mode="index_data_field" match="marc:datafield[@tag='440']">
1892     <z:index name="Title-series:w Title-series:p Title:w Title-series:w">
1893       <xslo:variable name="raw_heading">
1894         <xslo:for-each select="marc:subfield">
1895           <xslo:if test="position() &gt; 1">
1896             <xslo:value-of select="substring(' ', 1, 1)"/>
1897           </xslo:if>
1898           <xslo:value-of select="."/>
1899         </xslo:for-each>
1900       </xslo:variable>
1901       <xslo:value-of select="normalize-space($raw_heading)"/>
1902     </z:index>
1903   </xslo:template>
1904   <xslo:template mode="index_data_field" match="marc:datafield[@tag='490']">
1905     <z:index name="Title:w Title-series:w">
1906       <xslo:variable name="raw_heading">
1907         <xslo:for-each select="marc:subfield">
1908           <xslo:if test="position() &gt; 1">
1909             <xslo:value-of select="substring(' ', 1, 1)"/>
1910           </xslo:if>
1911           <xslo:value-of select="."/>
1912         </xslo:for-each>
1913       </xslo:variable>
1914       <xslo:value-of select="normalize-space($raw_heading)"/>
1915     </z:index>
1916   </xslo:template>
1917   <xslo:template mode="index_data_field" match="marc:datafield[@tag='500']">
1918     <z:index name="Note:w Note:p">
1919       <xslo:variable name="raw_heading">
1920         <xslo:for-each select="marc:subfield">
1921           <xslo:if test="position() &gt; 1">
1922             <xslo:value-of select="substring(' ', 1, 1)"/>
1923           </xslo:if>
1924           <xslo:value-of select="."/>
1925         </xslo:for-each>
1926       </xslo:variable>
1927       <xslo:value-of select="normalize-space($raw_heading)"/>
1928     </z:index>
1929   </xslo:template>
1930   <xslo:template mode="index_data_field" match="marc:datafield[@tag='502']">
1931     <z:index name="Material-type:w">
1932       <xslo:variable name="raw_heading">
1933         <xslo:for-each select="marc:subfield">
1934           <xslo:if test="position() &gt; 1">
1935             <xslo:value-of select="substring(' ', 1, 1)"/>
1936           </xslo:if>
1937           <xslo:value-of select="."/>
1938         </xslo:for-each>
1939       </xslo:variable>
1940       <xslo:value-of select="normalize-space($raw_heading)"/>
1941     </z:index>
1942   </xslo:template>
1943   <xslo:template mode="index_data_field" match="marc:datafield[@tag='505']">
1944     <z:index name="Note:w Note:p">
1945       <xslo:variable name="raw_heading">
1946         <xslo:for-each select="marc:subfield">
1947           <xslo:if test="position() &gt; 1">
1948             <xslo:value-of select="substring(' ', 1, 1)"/>
1949           </xslo:if>
1950           <xslo:value-of select="."/>
1951         </xslo:for-each>
1952       </xslo:variable>
1953       <xslo:value-of select="normalize-space($raw_heading)"/>
1954     </z:index>
1955   </xslo:template>
1956   <xslo:template mode="index_data_field" match="marc:datafield[@tag='510']">
1957     <z:index name="Indexed-by:w">
1958       <xslo:variable name="raw_heading">
1959         <xslo:for-each select="marc:subfield">
1960           <xslo:if test="position() &gt; 1">
1961             <xslo:value-of select="substring(' ', 1, 1)"/>
1962           </xslo:if>
1963           <xslo:value-of select="."/>
1964         </xslo:for-each>
1965       </xslo:variable>
1966       <xslo:value-of select="normalize-space($raw_heading)"/>
1967     </z:index>
1968   </xslo:template>
1969   <xslo:template mode="index_data_field" match="marc:datafield[@tag='520']">
1970     <z:index name="Abstract:w Abstract:p">
1971       <xslo:variable name="raw_heading">
1972         <xslo:for-each select="marc:subfield">
1973           <xslo:if test="position() &gt; 1">
1974             <xslo:value-of select="substring(' ', 1, 1)"/>
1975           </xslo:if>
1976           <xslo:value-of select="."/>
1977         </xslo:for-each>
1978       </xslo:variable>
1979       <xslo:value-of select="normalize-space($raw_heading)"/>
1980     </z:index>
1981   </xslo:template>
1982   <xslo:template mode="index_data_field" match="marc:datafield[@tag='590']">
1983     <z:index name="Note:w Note:p">
1984       <xslo:variable name="raw_heading">
1985         <xslo:for-each select="marc:subfield">
1986           <xslo:if test="position() &gt; 1">
1987             <xslo:value-of select="substring(' ', 1, 1)"/>
1988           </xslo:if>
1989           <xslo:value-of select="."/>
1990         </xslo:for-each>
1991       </xslo:variable>
1992       <xslo:value-of select="normalize-space($raw_heading)"/>
1993     </z:index>
1994   </xslo:template>
1995   <xslo:template mode="index_data_field" match="marc:datafield[@tag='600']">
1996     <z:index name="Name:w Personal-name:w Subject-name-personal:w Subject:w Subject:p">
1997       <xslo:variable name="raw_heading">
1998         <xslo:for-each select="marc:subfield">
1999           <xslo:if test="position() &gt; 1">
2000             <xslo:value-of select="substring(' ', 1, 1)"/>
2001           </xslo:if>
2002           <xslo:value-of select="."/>
2003         </xslo:for-each>
2004       </xslo:variable>
2005       <xslo:value-of select="normalize-space($raw_heading)"/>
2006     </z:index>
2007   </xslo:template>
2008   <xslo:template mode="index_data_field" match="marc:datafield[@tag='610']">
2009     <z:index name="Name:w Subject:w Subject:p Corporate-name:w">
2010       <xslo:variable name="raw_heading">
2011         <xslo:for-each select="marc:subfield">
2012           <xslo:if test="position() &gt; 1">
2013             <xslo:value-of select="substring(' ', 1, 1)"/>
2014           </xslo:if>
2015           <xslo:value-of select="."/>
2016         </xslo:for-each>
2017       </xslo:variable>
2018       <xslo:value-of select="normalize-space($raw_heading)"/>
2019     </z:index>
2020   </xslo:template>
2021   <xslo:template mode="index_data_field" match="marc:datafield[@tag='611']">
2022     <z:index name="Conference-name:w Name:w Subject:w Subject:p">
2023       <xslo:variable name="raw_heading">
2024         <xslo:for-each select="marc:subfield">
2025           <xslo:if test="position() &gt; 1">
2026             <xslo:value-of select="substring(' ', 1, 1)"/>
2027           </xslo:if>
2028           <xslo:value-of select="."/>
2029         </xslo:for-each>
2030       </xslo:variable>
2031       <xslo:value-of select="normalize-space($raw_heading)"/>
2032     </z:index>
2033   </xslo:template>
2034   <xslo:template mode="index_data_field" match="marc:datafield[@tag='630']">
2035     <z:index name="Subject:w Subject:p">
2036       <xslo:variable name="raw_heading">
2037         <xslo:for-each select="marc:subfield">
2038           <xslo:if test="position() &gt; 1">
2039             <xslo:value-of select="substring(' ', 1, 1)"/>
2040           </xslo:if>
2041           <xslo:value-of select="."/>
2042         </xslo:for-each>
2043       </xslo:variable>
2044       <xslo:value-of select="normalize-space($raw_heading)"/>
2045     </z:index>
2046   </xslo:template>
2047   <xslo:template mode="index_data_field" match="marc:datafield[@tag='650']">
2048     <z:index name="Subject:w Subject:p">
2049       <xslo:variable name="raw_heading">
2050         <xslo:for-each select="marc:subfield">
2051           <xslo:if test="position() &gt; 1">
2052             <xslo:value-of select="substring(' ', 1, 1)"/>
2053           </xslo:if>
2054           <xslo:value-of select="."/>
2055         </xslo:for-each>
2056       </xslo:variable>
2057       <xslo:value-of select="normalize-space($raw_heading)"/>
2058     </z:index>
2059   </xslo:template>
2060   <xslo:template mode="index_data_field" match="marc:datafield[@tag='651']">
2061     <z:index name="Name-geographic:w Subject:w Subject:p">
2062       <xslo:variable name="raw_heading">
2063         <xslo:for-each select="marc:subfield">
2064           <xslo:if test="position() &gt; 1">
2065             <xslo:value-of select="substring(' ', 1, 1)"/>
2066           </xslo:if>
2067           <xslo:value-of select="."/>
2068         </xslo:for-each>
2069       </xslo:variable>
2070       <xslo:value-of select="normalize-space($raw_heading)"/>
2071     </z:index>
2072   </xslo:template>
2073   <xslo:template mode="index_data_field" match="marc:datafield[@tag='653']">
2074     <z:index name="Subject:w Subject:p">
2075       <xslo:variable name="raw_heading">
2076         <xslo:for-each select="marc:subfield">
2077           <xslo:if test="position() &gt; 1">
2078             <xslo:value-of select="substring(' ', 1, 1)"/>
2079           </xslo:if>
2080           <xslo:value-of select="."/>
2081         </xslo:for-each>
2082       </xslo:variable>
2083       <xslo:value-of select="normalize-space($raw_heading)"/>
2084     </z:index>
2085   </xslo:template>
2086   <xslo:template mode="index_data_field" match="marc:datafield[@tag='654']">
2087     <z:index name="Subject:w Subject:p">
2088       <xslo:variable name="raw_heading">
2089         <xslo:for-each select="marc:subfield">
2090           <xslo:if test="position() &gt; 1">
2091             <xslo:value-of select="substring(' ', 1, 1)"/>
2092           </xslo:if>
2093           <xslo:value-of select="."/>
2094         </xslo:for-each>
2095       </xslo:variable>
2096       <xslo:value-of select="normalize-space($raw_heading)"/>
2097     </z:index>
2098   </xslo:template>
2099   <xslo:template mode="index_data_field" match="marc:datafield[@tag='655']">
2100     <z:index name="Subject:w Subject:p">
2101       <xslo:variable name="raw_heading">
2102         <xslo:for-each select="marc:subfield">
2103           <xslo:if test="position() &gt; 1">
2104             <xslo:value-of select="substring(' ', 1, 1)"/>
2105           </xslo:if>
2106           <xslo:value-of select="."/>
2107         </xslo:for-each>
2108       </xslo:variable>
2109       <xslo:value-of select="normalize-space($raw_heading)"/>
2110     </z:index>
2111   </xslo:template>
2112   <xslo:template mode="index_data_field" match="marc:datafield[@tag='656']">
2113     <z:index name="Subject:w Subject:p">
2114       <xslo:variable name="raw_heading">
2115         <xslo:for-each select="marc:subfield">
2116           <xslo:if test="position() &gt; 1">
2117             <xslo:value-of select="substring(' ', 1, 1)"/>
2118           </xslo:if>
2119           <xslo:value-of select="."/>
2120         </xslo:for-each>
2121       </xslo:variable>
2122       <xslo:value-of select="normalize-space($raw_heading)"/>
2123     </z:index>
2124   </xslo:template>
2125   <xslo:template mode="index_data_field" match="marc:datafield[@tag='657']">
2126     <z:index name="Subject:w Subject:p">
2127       <xslo:variable name="raw_heading">
2128         <xslo:for-each select="marc:subfield">
2129           <xslo:if test="position() &gt; 1">
2130             <xslo:value-of select="substring(' ', 1, 1)"/>
2131           </xslo:if>
2132           <xslo:value-of select="."/>
2133         </xslo:for-each>
2134       </xslo:variable>
2135       <xslo:value-of select="normalize-space($raw_heading)"/>
2136     </z:index>
2137   </xslo:template>
2138   <xslo:template mode="index_data_field" match="marc:datafield[@tag='658']">
2139     <z:index name="Subject:w Subject:p">
2140       <xslo:variable name="raw_heading">
2141         <xslo:for-each select="marc:subfield">
2142           <xslo:if test="position() &gt; 1">
2143             <xslo:value-of select="substring(' ', 1, 1)"/>
2144           </xslo:if>
2145           <xslo:value-of select="."/>
2146         </xslo:for-each>
2147       </xslo:variable>
2148       <xslo:value-of select="normalize-space($raw_heading)"/>
2149     </z:index>
2150   </xslo:template>
2151   <xslo:template mode="index_data_field" match="marc:datafield[@tag='690']">
2152     <z:index name="Subject:w Subject:p">
2153       <xslo:variable name="raw_heading">
2154         <xslo:for-each select="marc:subfield">
2155           <xslo:if test="position() &gt; 1">
2156             <xslo:value-of select="substring(' ', 1, 1)"/>
2157           </xslo:if>
2158           <xslo:value-of select="."/>
2159         </xslo:for-each>
2160       </xslo:variable>
2161       <xslo:value-of select="normalize-space($raw_heading)"/>
2162     </z:index>
2163   </xslo:template>
2164   <xslo:template mode="index_data_field" match="marc:datafield[@tag='700']">
2165     <z:index name="Author:w Author:p Author-name-personal:w Name:w Editor:w Personal-name:w">
2166       <xslo:variable name="raw_heading">
2167         <xslo:for-each select="marc:subfield">
2168           <xslo:if test="position() &gt; 1">
2169             <xslo:value-of select="substring(' ', 1, 1)"/>
2170           </xslo:if>
2171           <xslo:value-of select="."/>
2172         </xslo:for-each>
2173       </xslo:variable>
2174       <xslo:value-of select="normalize-space($raw_heading)"/>
2175     </z:index>
2176   </xslo:template>
2177   <xslo:template mode="index_data_field" match="marc:datafield[@tag='710']">
2178     <z:index name="Author:w Author:p Corporate-name:w Name:w">
2179       <xslo:variable name="raw_heading">
2180         <xslo:for-each select="marc:subfield">
2181           <xslo:if test="position() &gt; 1">
2182             <xslo:value-of select="substring(' ', 1, 1)"/>
2183           </xslo:if>
2184           <xslo:value-of select="."/>
2185         </xslo:for-each>
2186       </xslo:variable>
2187       <xslo:value-of select="normalize-space($raw_heading)"/>
2188     </z:index>
2189   </xslo:template>
2190   <xslo:template mode="index_data_field" match="marc:datafield[@tag='711']">
2191     <z:index name="Author:w Author:p Author-name-corporate:w Name:w Conference-name:w">
2192       <xslo:variable name="raw_heading">
2193         <xslo:for-each select="marc:subfield">
2194           <xslo:if test="position() &gt; 1">
2195             <xslo:value-of select="substring(' ', 1, 1)"/>
2196           </xslo:if>
2197           <xslo:value-of select="."/>
2198         </xslo:for-each>
2199       </xslo:variable>
2200       <xslo:value-of select="normalize-space($raw_heading)"/>
2201     </z:index>
2202   </xslo:template>
2203   <xslo:template mode="index_data_field" match="marc:datafield[@tag='730']">
2204     <z:index name="Title:w Title:p Title-uniform:w">
2205       <xslo:variable name="raw_heading">
2206         <xslo:for-each select="marc:subfield">
2207           <xslo:if test="position() &gt; 1">
2208             <xslo:value-of select="substring(' ', 1, 1)"/>
2209           </xslo:if>
2210           <xslo:value-of select="."/>
2211         </xslo:for-each>
2212       </xslo:variable>
2213       <xslo:value-of select="normalize-space($raw_heading)"/>
2214     </z:index>
2215   </xslo:template>
2216   <xslo:template mode="index_data_field" match="marc:datafield[@tag='740']">
2217     <z:index name="Title:w Title:p Title-other-variant:w">
2218       <xslo:variable name="raw_heading">
2219         <xslo:for-each select="marc:subfield">
2220           <xslo:if test="position() &gt; 1">
2221             <xslo:value-of select="substring(' ', 1, 1)"/>
2222           </xslo:if>
2223           <xslo:value-of select="."/>
2224         </xslo:for-each>
2225       </xslo:variable>
2226       <xslo:value-of select="normalize-space($raw_heading)"/>
2227     </z:index>
2228   </xslo:template>
2229   <xslo:template mode="index_data_field" match="marc:datafield[@tag='751']">
2230     <z:index name="Name-geographic:w">
2231       <xslo:variable name="raw_heading">
2232         <xslo:for-each select="marc:subfield">
2233           <xslo:if test="position() &gt; 1">
2234             <xslo:value-of select="substring(' ', 1, 1)"/>
2235           </xslo:if>
2236           <xslo:value-of select="."/>
2237         </xslo:for-each>
2238       </xslo:variable>
2239       <xslo:value-of select="normalize-space($raw_heading)"/>
2240     </z:index>
2241   </xslo:template>
2242   <xslo:template mode="index_data_field" match="marc:datafield[@tag='780']">
2243     <z:index name="Title:w Title:p Title-former:w Related-periodical:w">
2244       <xslo:variable name="raw_heading">
2245         <xslo:for-each select="marc:subfield">
2246           <xslo:if test="position() &gt; 1">
2247             <xslo:value-of select="substring(' ', 1, 1)"/>
2248           </xslo:if>
2249           <xslo:value-of select="."/>
2250         </xslo:for-each>
2251       </xslo:variable>
2252       <xslo:value-of select="normalize-space($raw_heading)"/>
2253     </z:index>
2254   </xslo:template>
2255   <xslo:template mode="index_data_field" match="marc:datafield[@tag='785']">
2256     <z:index name="Title:w Title:p Title-later:w Related-periodical:w">
2257       <xslo:variable name="raw_heading">
2258         <xslo:for-each select="marc:subfield">
2259           <xslo:if test="position() &gt; 1">
2260             <xslo:value-of select="substring(' ', 1, 1)"/>
2261           </xslo:if>
2262           <xslo:value-of select="."/>
2263         </xslo:for-each>
2264       </xslo:variable>
2265       <xslo:value-of select="normalize-space($raw_heading)"/>
2266     </z:index>
2267   </xslo:template>
2268   <xslo:template mode="index_data_field" match="marc:datafield[@tag='800']">
2269     <z:index name="Author:w Author-name-personal:w Name:w Personal-name:w">
2270       <xslo:variable name="raw_heading">
2271         <xslo:for-each select="marc:subfield">
2272           <xslo:if test="position() &gt; 1">
2273             <xslo:value-of select="substring(' ', 1, 1)"/>
2274           </xslo:if>
2275           <xslo:value-of select="."/>
2276         </xslo:for-each>
2277       </xslo:variable>
2278       <xslo:value-of select="normalize-space($raw_heading)"/>
2279     </z:index>
2280   </xslo:template>
2281   <xslo:template mode="index_data_field" match="marc:datafield[@tag='810']">
2282     <z:index name="Author:w Corporate-name:w Author-name-corporate:w Name:w">
2283       <xslo:variable name="raw_heading">
2284         <xslo:for-each select="marc:subfield">
2285           <xslo:if test="position() &gt; 1">
2286             <xslo:value-of select="substring(' ', 1, 1)"/>
2287           </xslo:if>
2288           <xslo:value-of select="."/>
2289         </xslo:for-each>
2290       </xslo:variable>
2291       <xslo:value-of select="normalize-space($raw_heading)"/>
2292     </z:index>
2293   </xslo:template>
2294   <xslo:template mode="index_data_field" match="marc:datafield[@tag='811']">
2295     <z:index name="Author:w Author-name-corporate:w Name:w Conference-name:w">
2296       <xslo:variable name="raw_heading">
2297         <xslo:for-each select="marc:subfield">
2298           <xslo:if test="position() &gt; 1">
2299             <xslo:value-of select="substring(' ', 1, 1)"/>
2300           </xslo:if>
2301           <xslo:value-of select="."/>
2302         </xslo:for-each>
2303       </xslo:variable>
2304       <xslo:value-of select="normalize-space($raw_heading)"/>
2305     </z:index>
2306   </xslo:template>
2307   <xslo:template mode="index_data_field" match="marc:datafield[@tag='830']">
2308     <z:index name="Title:w Title-series:w Title-series:p">
2309       <xslo:variable name="raw_heading">
2310         <xslo:for-each select="marc:subfield">
2311           <xslo:if test="position() &gt; 1">
2312             <xslo:value-of select="substring(' ', 1, 1)"/>
2313           </xslo:if>
2314           <xslo:value-of select="."/>
2315         </xslo:for-each>
2316       </xslo:variable>
2317       <xslo:value-of select="normalize-space($raw_heading)"/>
2318     </z:index>
2319   </xslo:template>
2320   <xslo:template mode="index_data_field" match="marc:datafield[@tag='840']">
2321     <z:index name="Title:w Title-series:w Title-series:p">
2322       <xslo:variable name="raw_heading">
2323         <xslo:for-each select="marc:subfield">
2324           <xslo:if test="position() &gt; 1">
2325             <xslo:value-of select="substring(' ', 1, 1)"/>
2326           </xslo:if>
2327           <xslo:value-of select="."/>
2328         </xslo:for-each>
2329       </xslo:variable>
2330       <xslo:value-of select="normalize-space($raw_heading)"/>
2331     </z:index>
2332   </xslo:template>
2333   <xslo:template mode="index_all" match="text()">
2334     <z:index name="Any:w Any:p">
2335       <xslo:value-of select="."/>
2336     </z:index>
2337   </xslo:template>
2338   <xslo:template name="chopPunctuation">
2339     <xslo:param name="chopString"/>
2340     <xslo:variable name="length" select="string-length($chopString)"/>
2341     <xslo:choose>
2342       <xslo:when test="$length=0"/>
2343       <xslo:when test="contains('-,.:=;!%/', substring($chopString,$length,1))">
2344         <xslo:call-template name="chopPunctuation">
2345           <xslo:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
2346         </xslo:call-template>
2347       </xslo:when>
2348       <xslo:when test="not($chopString)"/>
2349       <xslo:otherwise>
2350         <xslo:value-of select="$chopString"/>
2351       </xslo:otherwise>
2352     </xslo:choose>
2353     <xslo:text/>
2354   </xslo:template>
2355 </xslo:stylesheet>