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