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