Bug 10037: fix item index in UNIMARC DOM indexing
[koha.git] / etc / zebradb / marc_defs / unimarc / biblios / biblio-zebra-indexdefs.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 This file has been automatically generated from a Koha index definition file
4 with the stylesheet koha-indexdefs-to-zebra.xsl. Do not manually edit this file,
5 as it may be overwritten. To regenerate, edit the appropriate Koha index
6 definition file (probably something like {biblio,authority}-koha-indexdefs.xml) and run:
7 `xsltproc koha-indexdefs-to-zebra.xsl {biblio,authority}-koha-indexdefs.xml >
8 {biblio,authority}-zebra-indexdefs.xsl` (substituting the appropriate file names).
9 -->
10 <xslo:stylesheet xmlns:xslo="http://www.w3.org/1999/XSL/Transform" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:z="http://indexdata.com/zebra-2.0" xmlns:kohaidx="http://www.koha-community.org/schemas/index-defs" version="1.0">
11   <xslo:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
12   <xslo:template match="text()"/>
13   <xslo:template match="text()" mode="index_subfields"/>
14   <xslo:template match="text()" mode="index_data_field"/>
15   <xslo:template match="text()" mode="index_heading"/>
16   <xslo:template match="text()" mode="index_heading_conditional"/>
17   <xslo:template match="text()" mode="index_match_heading"/>
18   <xslo:template match="text()" mode="index_subject_thesaurus"/>
19   <xslo:template match="/">
20     <xslo:if test="marc:collection">
21       <collection>
22         <xslo:apply-templates select="marc:collection/marc:record"/>
23       </collection>
24     </xslo:if>
25     <xslo:if test="marc:record">
26       <xslo:apply-templates select="marc:record"/>
27     </xslo:if>
28   </xslo:template>
29   <xslo:template match="marc:record">
30     <xslo:variable name="idfield" select="normalize-space(marc:controlfield[@tag='001'])"/>
31     <z:record type="update">
32       <xslo:attribute name="z:id">
33         <xslo:value-of select="$idfield"/>
34       </xslo:attribute>
35       <xslo:apply-templates/>
36       <xslo:apply-templates mode="index_subfields"/>
37       <xslo:apply-templates mode="index_data_field"/>
38       <xslo:apply-templates mode="index_heading"/>
39       <xslo:apply-templates mode="index_heading_conditional"/>
40       <xslo:apply-templates mode="index_match_heading"/>
41       <xslo:apply-templates mode="index_subject_thesaurus"/>
42       <xslo:apply-templates mode="index_all"/>
43     </z:record>
44   </xslo:template>
45   <xslo:template match="marc:controlfield[@tag='001']">
46     <z:index name="Local-number:w">
47       <xslo:value-of select="."/>
48     </z:index>
49     <z:index name="Local-number:n">
50       <xslo:value-of select="."/>
51     </z:index>
52   </xslo:template>
53   <xslo:template match="marc:controlfield[@tag='009']">
54     <z:index name="Identifier-standard:w">
55       <xslo:value-of select="."/>
56     </z:index>
57     <z:index name="Identifier-standard:n">
58       <xslo:value-of select="."/>
59     </z:index>
60   </xslo:template>
61   <xslo:template mode="index_subfields" match="marc:datafield[@tag='090']">
62     <xslo:for-each select="marc:subfield">
63       <xslo:if test="contains('9', @code)">
64         <z:index name="Local-number:w Local-number:n">
65           <xslo:value-of select="."/>
66         </z:index>
67       </xslo:if>
68     </xslo:for-each>
69   </xslo:template>
70   <xslo:template mode="index_subfields" match="marc:datafield[@tag='099']">
71     <xslo:for-each select="marc:subfield">
72       <xslo:if test="contains('c', @code)">
73         <z:index name="date-entered-on-file:s date-entered-on-file:n date-entered-on-file:y Date-of-acquisition:w Date-of-acquisition:d Date-of-acquisition:s">
74           <xslo:value-of select="."/>
75         </z:index>
76       </xslo:if>
77     </xslo:for-each>
78     <xslo:for-each select="marc:subfield">
79       <xslo:if test="contains('d', @code)">
80         <z:index name="Date/time-last-modified:s Date/time-last-modified:n Date/time-last-modified:y">
81           <xslo:value-of select="."/>
82         </z:index>
83       </xslo:if>
84     </xslo:for-each>
85     <xslo:for-each select="marc:subfield">
86       <xslo:if test="contains('t', @code)">
87         <z:index name="ccode:w">
88           <xslo:value-of select="."/>
89         </z:index>
90       </xslo:if>
91     </xslo:for-each>
92   </xslo:template>
93   <xslo:template mode="index_subfields" match="marc:datafield[@tag='010']">
94     <xslo:for-each select="marc:subfield">
95       <xslo:if test="contains('a', @code)">
96         <z:index name="ISBN:w">
97           <xslo:value-of select="."/>
98         </z:index>
99       </xslo:if>
100     </xslo:for-each>
101     <xslo:for-each select="marc:subfield">
102       <xslo:if test="contains('z', @code)">
103         <z:index name="ISBN:w Identifier-standard:w">
104           <xslo:value-of select="."/>
105         </z:index>
106       </xslo:if>
107     </xslo:for-each>
108   </xslo:template>
109   <xslo:template mode="index_subfields" match="marc:datafield[@tag='011']">
110     <xslo:for-each select="marc:subfield">
111       <xslo:if test="contains('a', @code)">
112         <z:index name="ISSN:w Identifier-standard:w">
113           <xslo:value-of select="."/>
114         </z:index>
115       </xslo:if>
116     </xslo:for-each>
117     <xslo:for-each select="marc:subfield">
118       <xslo:if test="contains('y', @code)">
119         <z:index name="ISSN:w Identifier-standard:w">
120           <xslo:value-of select="."/>
121         </z:index>
122       </xslo:if>
123     </xslo:for-each>
124     <xslo:for-each select="marc:subfield">
125       <xslo:if test="contains('z', @code)">
126         <z:index name="ISSN:w Identifier-standard:w">
127           <xslo:value-of select="."/>
128         </z:index>
129       </xslo:if>
130     </xslo:for-each>
131     <xslo:for-each select="marc:subfield">
132       <xslo:if test="contains('f', @code)">
133         <z:index name="Identifier-standard:w">
134           <xslo:value-of select="."/>
135         </z:index>
136       </xslo:if>
137     </xslo:for-each>
138     <xslo:for-each select="marc:subfield">
139       <xslo:if test="contains('g', @code)">
140         <z:index name="Identifier-standard:w">
141           <xslo:value-of select="."/>
142         </z:index>
143       </xslo:if>
144     </xslo:for-each>
145   </xslo:template>
146   <xslo:template mode="index_subfields" match="marc:datafield[@tag='012']">
147     <xslo:for-each select="marc:subfield">
148       <xslo:if test="contains('a', @code)">
149         <z:index name="Identifier-standard:w">
150           <xslo:value-of select="."/>
151         </z:index>
152       </xslo:if>
153     </xslo:for-each>
154   </xslo:template>
155   <xslo:template mode="index_subfields" match="marc:datafield[@tag='013']">
156     <xslo:for-each select="marc:subfield">
157       <xslo:if test="contains('a', @code)">
158         <z:index name="Identifier-standard:w">
159           <xslo:value-of select="."/>
160         </z:index>
161       </xslo:if>
162     </xslo:for-each>
163     <xslo:for-each select="marc:subfield">
164       <xslo:if test="contains('z', @code)">
165         <z:index name="Identifier-standard:w">
166           <xslo:value-of select="."/>
167         </z:index>
168       </xslo:if>
169     </xslo:for-each>
170   </xslo:template>
171   <xslo:template mode="index_subfields" match="marc:datafield[@tag='014']">
172     <xslo:for-each select="marc:subfield">
173       <xslo:if test="contains('a', @code)">
174         <z:index name="Identifier-standard:w">
175           <xslo:value-of select="."/>
176         </z:index>
177       </xslo:if>
178     </xslo:for-each>
179     <xslo:for-each select="marc:subfield">
180       <xslo:if test="contains('z', @code)">
181         <z:index name="Identifier-standard:w">
182           <xslo:value-of select="."/>
183         </z:index>
184       </xslo:if>
185     </xslo:for-each>
186   </xslo:template>
187   <xslo:template mode="index_subfields" match="marc:datafield[@tag='015']">
188     <xslo:for-each select="marc:subfield">
189       <xslo:if test="contains('a', @code)">
190         <z:index name="Identifier-standard:w">
191           <xslo:value-of select="."/>
192         </z:index>
193       </xslo:if>
194     </xslo:for-each>
195     <xslo:for-each select="marc:subfield">
196       <xslo:if test="contains('z', @code)">
197         <z:index name="Identifier-standard:w">
198           <xslo:value-of select="."/>
199         </z:index>
200       </xslo:if>
201     </xslo:for-each>
202   </xslo:template>
203   <xslo:template mode="index_subfields" match="marc:datafield[@tag='016']">
204     <xslo:for-each select="marc:subfield">
205       <xslo:if test="contains('a', @code)">
206         <z:index name="Identifier-standard:w">
207           <xslo:value-of select="."/>
208         </z:index>
209       </xslo:if>
210     </xslo:for-each>
211     <xslo:for-each select="marc:subfield">
212       <xslo:if test="contains('z', @code)">
213         <z:index name="Identifier-standard:w">
214           <xslo:value-of select="."/>
215         </z:index>
216       </xslo:if>
217     </xslo:for-each>
218   </xslo:template>
219   <xslo:template mode="index_subfields" match="marc:datafield[@tag='017']">
220     <xslo:for-each select="marc:subfield">
221       <xslo:if test="contains('a', @code)">
222         <z:index name="Identifier-standard:w">
223           <xslo:value-of select="."/>
224         </z:index>
225       </xslo:if>
226     </xslo:for-each>
227     <xslo:for-each select="marc:subfield">
228       <xslo:if test="contains('z', @code)">
229         <z:index name="Identifier-standard:w">
230           <xslo:value-of select="."/>
231         </z:index>
232       </xslo:if>
233     </xslo:for-each>
234   </xslo:template>
235   <xslo:template mode="index_subfields" match="marc:datafield[@tag='040']">
236     <xslo:for-each select="marc:subfield">
237       <xslo:if test="contains('a', @code)">
238         <z:index name="Identifier-standard:w">
239           <xslo:value-of select="."/>
240         </z:index>
241       </xslo:if>
242     </xslo:for-each>
243     <xslo:for-each select="marc:subfield">
244       <xslo:if test="contains('z', @code)">
245         <z:index name="Identifier-standard:w">
246           <xslo:value-of select="."/>
247         </z:index>
248       </xslo:if>
249     </xslo:for-each>
250   </xslo:template>
251   <xslo:template mode="index_subfields" match="marc:datafield[@tag='071']">
252     <xslo:for-each select="marc:subfield">
253       <xslo:if test="contains('a', @code)">
254         <z:index name="Identifier-publisher-for-music:w Identifier-standard:w">
255           <xslo:value-of select="."/>
256         </z:index>
257       </xslo:if>
258     </xslo:for-each>
259     <xslo:for-each select="marc:subfield">
260       <xslo:if test="contains('z', @code)">
261         <z:index name="Identifier-publisher-for-music:w Identifier-standard:w">
262           <xslo:value-of select="."/>
263         </z:index>
264       </xslo:if>
265     </xslo:for-each>
266     <xslo:for-each select="marc:subfield">
267       <xslo:if test="contains('b', @code)">
268         <z:index name="Publisher:w Publisher:p">
269           <xslo:value-of select="."/>
270         </z:index>
271       </xslo:if>
272     </xslo:for-each>
273   </xslo:template>
274   <xslo:template mode="index_subfields" match="marc:datafield[@tag='072']">
275     <xslo:for-each select="marc:subfield">
276       <xslo:if test="contains('a', @code)">
277         <z:index name="UPC:w Identifier-standard:w">
278           <xslo:value-of select="."/>
279         </z:index>
280       </xslo:if>
281     </xslo:for-each>
282     <xslo:for-each select="marc:subfield">
283       <xslo:if test="contains('z', @code)">
284         <z:index name="UPC:w Identifier-standard:w">
285           <xslo:value-of select="."/>
286         </z:index>
287       </xslo:if>
288     </xslo:for-each>
289   </xslo:template>
290   <xslo:template mode="index_subfields" match="marc:datafield[@tag='073']">
291     <xslo:for-each select="marc:subfield">
292       <xslo:if test="contains('a', @code)">
293         <z:index name="EAN:w Identifier-standard:w">
294           <xslo:value-of select="."/>
295         </z:index>
296       </xslo:if>
297     </xslo:for-each>
298     <xslo:for-each select="marc:subfield">
299       <xslo:if test="contains('z', @code)">
300         <z:index name="EAN:w Identifier-standard:w">
301           <xslo:value-of select="."/>
302         </z:index>
303       </xslo:if>
304     </xslo:for-each>
305   </xslo:template>
306   <xslo:template mode="index_subfields" match="marc:datafield[@tag='200']">
307     <xslo:for-each select="marc:subfield">
308       <xslo:if test="contains('b', @code)">
309         <z:index name="itemtype:w itemtype:p itype:w itype:p Material-type:w Material-type:p">
310           <xslo:value-of select="."/>
311         </z:index>
312       </xslo:if>
313     </xslo:for-each>
314     <xslo:for-each select="marc:subfield">
315       <xslo:if test="contains('f', @code)">
316         <z:index name="Author:w Author:p">
317           <xslo:value-of select="."/>
318         </z:index>
319       </xslo:if>
320     </xslo:for-each>
321     <xslo:for-each select="marc:subfield">
322       <xslo:if test="contains('g', @code)">
323         <z:index name="Author:w Author: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('a', @code)">
330         <z:index name="Title:w Title:p Title:s Title-cover:w Title-cover:p Title-cover: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('c', @code)">
337         <z:index name="Title:w Title:p">
338           <xslo:value-of select="."/>
339         </z:index>
340       </xslo:if>
341     </xslo:for-each>
342     <xslo:for-each select="marc:subfield">
343       <xslo:if test="contains('d', @code)">
344         <z:index name="Title:w Title:p">
345           <xslo:value-of select="."/>
346         </z:index>
347       </xslo:if>
348     </xslo:for-each>
349     <xslo:for-each select="marc:subfield">
350       <xslo:if test="contains('e', @code)">
351         <z:index name="Title:w Title:p Title-cover:w Title-cover:p">
352           <xslo:value-of select="."/>
353         </z:index>
354       </xslo:if>
355     </xslo:for-each>
356     <xslo:for-each select="marc:subfield">
357       <xslo:if test="contains('i', @code)">
358         <z:index name="Title:w Title:p Title-cover:w Title-cover:p">
359           <xslo:value-of select="."/>
360         </z:index>
361       </xslo:if>
362     </xslo:for-each>
363   </xslo:template>
364   <xslo:template mode="index_subfields" match="marc:datafield[@tag='995']">
365     <xslo:for-each select="marc:subfield">
366       <xslo:if test="contains('r', @code)">
367         <z:index name="itemtype:w itemtype:p itype:w itype:p">
368           <xslo:value-of select="."/>
369         </z:index>
370       </xslo:if>
371     </xslo:for-each>
372     <xslo:for-each select="marc:subfield">
373       <xslo:if test="contains('2', @code)">
374         <z:index name="lost:w lost:n item:w">
375           <xslo:value-of select="."/>
376         </z:index>
377       </xslo:if>
378     </xslo:for-each>
379     <xslo:for-each select="marc:subfield">
380       <xslo:if test="contains('a', @code)">
381         <z:index name="homebranch:w Host-item:w item:w">
382           <xslo:value-of select="."/>
383         </z:index>
384       </xslo:if>
385     </xslo:for-each>
386     <xslo:for-each select="marc:subfield">
387       <xslo:if test="contains('b', @code)">
388         <z:index name="homebranch:w Host-item:w item:w">
389           <xslo:value-of select="."/>
390         </z:index>
391       </xslo:if>
392     </xslo:for-each>
393     <xslo:for-each select="marc:subfield">
394       <xslo:if test="contains('c', @code)">
395         <z:index name="holdingbranch:w Record-Source:w item:w">
396           <xslo:value-of select="."/>
397         </z:index>
398       </xslo:if>
399     </xslo:for-each>
400     <xslo:for-each select="marc:subfield">
401       <xslo:if test="contains('d', @code)">
402         <z:index name="holdingbranch:w Record-Source:w item:w">
403           <xslo:value-of select="."/>
404         </z:index>
405       </xslo:if>
406     </xslo:for-each>
407     <xslo:for-each select="marc:subfield">
408       <xslo:if test="contains('e', @code)">
409         <z:index name="location:w item:w">
410           <xslo:value-of select="."/>
411         </z:index>
412       </xslo:if>
413     </xslo:for-each>
414     <xslo:for-each select="marc:subfield">
415       <xslo:if test="contains('f', @code)">
416         <z:index name="barcode:w item:w">
417           <xslo:value-of select="."/>
418         </z:index>
419       </xslo:if>
420     </xslo:for-each>
421     <xslo:for-each select="marc:subfield">
422       <xslo:if test="contains('h', @code)">
423         <z:index name="ccode:w item:w">
424           <xslo:value-of select="."/>
425         </z:index>
426       </xslo:if>
427     </xslo:for-each>
428     <xslo:for-each select="marc:subfield">
429       <xslo:if test="contains('j', @code)">
430         <z:index name="LC-card-number:s item:w">
431           <xslo:value-of select="."/>
432         </z:index>
433       </xslo:if>
434     </xslo:for-each>
435     <xslo:for-each select="marc:subfield">
436       <xslo:if test="contains('k', @code)">
437         <z:index name="Call-Number:w Local-classification:w lcn:w Call-Number:p Local-classification:p lcn:p item:w Local-classification:s">
438           <xslo:value-of select="."/>
439         </z:index>
440       </xslo:if>
441     </xslo:for-each>
442     <xslo:for-each select="marc:subfield">
443       <xslo:if test="contains('n', @code)">
444         <z:index name="onloan:d onloan:n onloan:s onloan:w item:w">
445           <xslo:value-of select="."/>
446         </z:index>
447       </xslo:if>
448     </xslo:for-each>
449     <xslo:for-each select="marc:subfield">
450       <xslo:if test="contains('u', @code)">
451         <z:index name="Note:w Note:p item:w">
452           <xslo:value-of select="."/>
453         </z:index>
454       </xslo:if>
455     </xslo:for-each>
456   </xslo:template>
457   <xslo:template mode="index_subfields" match="marc:datafield[@tag='100']">
458     <xslo:for-each select="marc:subfield">
459       <xslo:if test="contains('a', @code)">
460         <z:index name="tpubdate:s">
461           <xslo:value-of select="substring(., 9, 1)"/>
462         </z:index>
463       </xslo:if>
464     </xslo:for-each>
465     <xslo:for-each select="marc:subfield">
466       <xslo:if test="contains('a', @code)">
467         <z:index name="ta:w">
468           <xslo:value-of select="substring(., 18, 1)"/>
469         </z:index>
470       </xslo:if>
471     </xslo:for-each>
472     <xslo:for-each select="marc:subfield">
473       <xslo:if test="contains('a', @code)">
474         <z:index name="ta:w">
475           <xslo:value-of select="substring(., 19, 1)"/>
476         </z:index>
477       </xslo:if>
478     </xslo:for-each>
479     <xslo:for-each select="marc:subfield">
480       <xslo:if test="contains('a', @code)">
481         <z:index name="ta:w">
482           <xslo:value-of select="substring(., 20, 1)"/>
483         </z:index>
484       </xslo:if>
485     </xslo:for-each>
486     <xslo:for-each select="marc:subfield">
487       <xslo:if test="contains('a', @code)">
488         <z:index name="Modified-code:n">
489           <xslo:value-of select="substring(., 22, 1)"/>
490         </z:index>
491       </xslo:if>
492     </xslo:for-each>
493     <xslo:for-each select="marc:subfield">
494       <xslo:if test="contains('a', @code)">
495         <z:index name="char-encoding:n">
496           <xslo:value-of select="substring(., 27, 2)"/>
497         </z:index>
498       </xslo:if>
499     </xslo:for-each>
500     <xslo:for-each select="marc:subfield">
501       <xslo:if test="contains('a', @code)">
502         <z:index name="char-encoding:n">
503           <xslo:value-of select="substring(., 29, 2)"/>
504         </z:index>
505       </xslo:if>
506     </xslo:for-each>
507     <xslo:for-each select="marc:subfield">
508       <xslo:if test="contains('a', @code)">
509         <z:index name="char-encoding:n">
510           <xslo:value-of select="substring(., 31, 2)"/>
511         </z:index>
512       </xslo:if>
513     </xslo:for-each>
514     <xslo:for-each select="marc:subfield">
515       <xslo:if test="contains('a', @code)">
516         <z:index name="script-Title:n">
517           <xslo:value-of select="substring(., 35, 2)"/>
518         </z:index>
519       </xslo:if>
520     </xslo:for-each>
521   </xslo:template>
522   <xslo:template mode="index_subfields" match="marc:datafield[@tag='101']">
523     <xslo:for-each select="marc:subfield">
524       <xslo:if test="contains('a', @code)">
525         <z:index name="ln:w">
526           <xslo:value-of select="."/>
527         </z:index>
528       </xslo:if>
529     </xslo:for-each>
530   </xslo:template>
531   <xslo:template mode="index_subfields" match="marc:datafield[@tag='102']">
532     <xslo:for-each select="marc:subfield">
533       <xslo:if test="contains('a', @code)">
534         <z:index name="Country-publication:w">
535           <xslo:value-of select="."/>
536         </z:index>
537       </xslo:if>
538     </xslo:for-each>
539   </xslo:template>
540   <xslo:template mode="index_subfields" match="marc:datafield[@tag='105']">
541     <xslo:for-each select="marc:subfield">
542       <xslo:if test="contains('a', @code)">
543         <z:index name="ff8-18-21:w">
544           <xslo:value-of select="substring(., 1, 1)"/>
545         </z:index>
546       </xslo:if>
547     </xslo:for-each>
548     <xslo:for-each select="marc:subfield">
549       <xslo:if test="contains('a', @code)">
550         <z:index name="ff8-18-21:w">
551           <xslo:value-of select="substring(., 2, 1)"/>
552         </z:index>
553       </xslo:if>
554     </xslo:for-each>
555     <xslo:for-each select="marc:subfield">
556       <xslo:if test="contains('a', @code)">
557         <z:index name="ff8-18-21:w">
558           <xslo:value-of select="substring(., 3, 1)"/>
559         </z:index>
560       </xslo:if>
561     </xslo:for-each>
562     <xslo:for-each select="marc:subfield">
563       <xslo:if test="contains('a', @code)">
564         <z:index name="ff8-18-21:w">
565           <xslo:value-of select="substring(., 4, 1)"/>
566         </z:index>
567       </xslo:if>
568     </xslo:for-each>
569     <xslo:for-each select="marc:subfield">
570       <xslo:if test="contains('a', @code)">
571         <z:index name="ctype:w">
572           <xslo:value-of select="substring(., 5, 1)"/>
573         </z:index>
574       </xslo:if>
575     </xslo:for-each>
576     <xslo:for-each select="marc:subfield">
577       <xslo:if test="contains('a', @code)">
578         <z:index name="ctype:w">
579           <xslo:value-of select="substring(., 6, 1)"/>
580         </z:index>
581       </xslo:if>
582     </xslo:for-each>
583     <xslo:for-each select="marc:subfield">
584       <xslo:if test="contains('a', @code)">
585         <z:index name="ctype:w">
586           <xslo:value-of select="substring(., 7, 1)"/>
587         </z:index>
588       </xslo:if>
589     </xslo:for-each>
590     <xslo:for-each select="marc:subfield">
591       <xslo:if test="contains('a', @code)">
592         <z:index name="ctype:w">
593           <xslo:value-of select="substring(., 8, 1)"/>
594         </z:index>
595       </xslo:if>
596     </xslo:for-each>
597     <xslo:for-each select="marc:subfield">
598       <xslo:if test="contains('a', @code)">
599         <z:index name="ff8-29:w">
600           <xslo:value-of select="substring(., 9, 1)"/>
601         </z:index>
602       </xslo:if>
603     </xslo:for-each>
604     <xslo:for-each select="marc:subfield">
605       <xslo:if test="contains('a', @code)">
606         <z:index name="ff8-30:w">
607           <xslo:value-of select="substring(., 10, 1)"/>
608         </z:index>
609       </xslo:if>
610     </xslo:for-each>
611     <xslo:for-each select="marc:subfield">
612       <xslo:if test="contains('a', @code)">
613         <z:index name="ff8-31:w">
614           <xslo:value-of select="substring(., 11, 1)"/>
615         </z:index>
616       </xslo:if>
617     </xslo:for-each>
618     <xslo:for-each select="marc:subfield">
619       <xslo:if test="contains('a', @code)">
620         <z:index name="lf:w">
621           <xslo:value-of select="substring(., 12, 1)"/>
622         </z:index>
623       </xslo:if>
624     </xslo:for-each>
625     <xslo:for-each select="marc:subfield">
626       <xslo:if test="contains('a', @code)">
627         <z:index name="bio:w">
628           <xslo:value-of select="substring(., 13, 1)"/>
629         </z:index>
630       </xslo:if>
631     </xslo:for-each>
632   </xslo:template>
633   <xslo:template mode="index_subfields" match="marc:datafield[@tag='106']">
634     <xslo:for-each select="marc:subfield">
635       <xslo:if test="contains('a', @code)">
636         <z:index name="ff8-23:w ff8-23:p">
637           <xslo:value-of select="."/>
638         </z:index>
639       </xslo:if>
640     </xslo:for-each>
641   </xslo:template>
642   <xslo:template mode="index_subfields" match="marc:datafield[@tag='110']">
643     <xslo:for-each select="marc:subfield">
644       <xslo:if test="contains('a', @code)">
645         <z:index name="ff8-21:w">
646           <xslo:value-of select="substring(., 1, 1)"/>
647         </z:index>
648       </xslo:if>
649     </xslo:for-each>
650     <xslo:for-each select="marc:subfield">
651       <xslo:if test="contains('a', @code)">
652         <z:index name="ff8-18:w">
653           <xslo:value-of select="substring(., 2, 1)"/>
654         </z:index>
655       </xslo:if>
656     </xslo:for-each>
657     <xslo:for-each select="marc:subfield">
658       <xslo:if test="contains('a', @code)">
659         <z:index name="ff8-19:w">
660           <xslo:value-of select="substring(., 3, 1)"/>
661         </z:index>
662       </xslo:if>
663     </xslo:for-each>
664     <xslo:for-each select="marc:subfield">
665       <xslo:if test="contains('a', @code)">
666         <z:index name="ctype:w">
667           <xslo:value-of select="substring(., 4, 1)"/>
668         </z:index>
669       </xslo:if>
670     </xslo:for-each>
671     <xslo:for-each select="marc:subfield">
672       <xslo:if test="contains('a', @code)">
673         <z:index name="ctype:w">
674           <xslo:value-of select="substring(., 5, 1)"/>
675         </z:index>
676       </xslo:if>
677     </xslo:for-each>
678     <xslo:for-each select="marc:subfield">
679       <xslo:if test="contains('a', @code)">
680         <z:index name="ff8-29:w">
681           <xslo:value-of select="substring(., 8, 1)"/>
682         </z:index>
683       </xslo:if>
684     </xslo:for-each>
685     <xslo:for-each select="marc:subfield">
686       <xslo:if test="contains('a', @code)">
687         <z:index name="Title-page-availability:w">
688           <xslo:value-of select="substring(., 9, 1)"/>
689         </z:index>
690       </xslo:if>
691     </xslo:for-each>
692     <xslo:for-each select="marc:subfield">
693       <xslo:if test="contains('a', @code)">
694         <z:index name="ff8-31:w">
695           <xslo:value-of select="substring(., 10, 1)"/>
696         </z:index>
697       </xslo:if>
698     </xslo:for-each>
699     <xslo:for-each select="marc:subfield">
700       <xslo:if test="contains('a', @code)">
701         <z:index name="Cumulative-index-availability:w">
702           <xslo:value-of select="substring(., 11, 1)"/>
703         </z:index>
704       </xslo:if>
705     </xslo:for-each>
706   </xslo:template>
707   <xslo:template mode="index_subfields" match="marc:datafield[@tag='115']">
708     <xslo:for-each select="marc:subfield">
709       <xslo:if test="contains('a', @code)">
710         <z:index name="Video-mt:w">
711           <xslo:value-of select="substring(., 1, 1)"/>
712         </z:index>
713       </xslo:if>
714     </xslo:for-each>
715   </xslo:template>
716   <xslo:template mode="index_subfields" match="marc:datafield[@tag='116']">
717     <xslo:for-each select="marc:subfield">
718       <xslo:if test="contains('a', @code)">
719         <z:index name="Graphics-type:w">
720           <xslo:value-of select="substring(., 1, 1)"/>
721         </z:index>
722       </xslo:if>
723     </xslo:for-each>
724     <xslo:for-each select="marc:subfield">
725       <xslo:if test="contains('a', @code)">
726         <z:index name="Graphics-support:w">
727           <xslo:value-of select="substring(., 2, 1)"/>
728         </z:index>
729       </xslo:if>
730     </xslo:for-each>
731     <xslo:for-each select="marc:subfield">
732       <xslo:if test="contains('a', @code)">
733         <z:index name="Graphics-support:w">
734           <xslo:value-of select="substring(., 3, 1)"/>
735         </z:index>
736       </xslo:if>
737     </xslo:for-each>
738   </xslo:template>
739   <xslo:template mode="index_subfields" match="marc:datafield[@tag='700']">
740     <xslo:for-each select="marc:subfield">
741       <xslo:if test="contains('9', @code)">
742         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
743           <xslo:value-of select="."/>
744         </z:index>
745       </xslo:if>
746     </xslo:for-each>
747     <xslo:for-each select="marc:subfield">
748       <xslo:if test="contains('a', @code)">
749         <z:index name="Author:w Personal-name:w Author:p Personal-name:p Personal-name:w Author:s">
750           <xslo:value-of select="."/>
751         </z:index>
752       </xslo:if>
753     </xslo:for-each>
754   </xslo:template>
755   <xslo:template mode="index_subfields" match="marc:datafield[@tag='701']">
756     <xslo:for-each select="marc:subfield">
757       <xslo:if test="contains('9', @code)">
758         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
759           <xslo:value-of select="."/>
760         </z:index>
761       </xslo:if>
762     </xslo:for-each>
763   </xslo:template>
764   <xslo:template mode="index_subfields" match="marc:datafield[@tag='702']">
765     <xslo:for-each select="marc:subfield">
766       <xslo:if test="contains('9', @code)">
767         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
768           <xslo:value-of select="."/>
769         </z:index>
770       </xslo:if>
771     </xslo:for-each>
772   </xslo:template>
773   <xslo:template mode="index_subfields" match="marc:datafield[@tag='710']">
774     <xslo:for-each select="marc:subfield">
775       <xslo:if test="contains('9', @code)">
776         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
777           <xslo:value-of select="."/>
778         </z:index>
779       </xslo:if>
780     </xslo:for-each>
781   </xslo:template>
782   <xslo:template mode="index_subfields" match="marc:datafield[@tag='711']">
783     <xslo:for-each select="marc:subfield">
784       <xslo:if test="contains('9', @code)">
785         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
786           <xslo:value-of select="."/>
787         </z:index>
788       </xslo:if>
789     </xslo:for-each>
790   </xslo:template>
791   <xslo:template mode="index_subfields" match="marc:datafield[@tag='712']">
792     <xslo:for-each select="marc:subfield">
793       <xslo:if test="contains('9', @code)">
794         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
795           <xslo:value-of select="."/>
796         </z:index>
797       </xslo:if>
798     </xslo:for-each>
799   </xslo:template>
800   <xslo:template mode="index_subfields" match="marc:datafield[@tag='716']">
801     <xslo:for-each select="marc:subfield">
802       <xslo:if test="contains('9', @code)">
803         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
804           <xslo:value-of select="."/>
805         </z:index>
806       </xslo:if>
807     </xslo:for-each>
808   </xslo:template>
809   <xslo:template mode="index_subfields" match="marc:datafield[@tag='720']">
810     <xslo:for-each select="marc:subfield">
811       <xslo:if test="contains('9', @code)">
812         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
813           <xslo:value-of select="."/>
814         </z:index>
815       </xslo:if>
816     </xslo:for-each>
817   </xslo:template>
818   <xslo:template mode="index_subfields" match="marc:datafield[@tag='721']">
819     <xslo:for-each select="marc:subfield">
820       <xslo:if test="contains('9', @code)">
821         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
822           <xslo:value-of select="."/>
823         </z:index>
824       </xslo:if>
825     </xslo:for-each>
826   </xslo:template>
827   <xslo:template mode="index_subfields" match="marc:datafield[@tag='722']">
828     <xslo:for-each select="marc:subfield">
829       <xslo:if test="contains('9', @code)">
830         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
831           <xslo:value-of select="."/>
832         </z:index>
833       </xslo:if>
834     </xslo:for-each>
835   </xslo:template>
836   <xslo:template mode="index_subfields" match="marc:datafield[@tag='730']">
837     <xslo:for-each select="marc:subfield">
838       <xslo:if test="contains('9', @code)">
839         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
840           <xslo:value-of select="."/>
841         </z:index>
842       </xslo:if>
843     </xslo:for-each>
844   </xslo:template>
845   <xslo:template mode="index_subfields" match="marc:datafield[@tag='230']">
846     <xslo:for-each select="marc:subfield">
847       <xslo:if test="contains('a', @code)">
848         <z:index name="Electronic-ressource:w">
849           <xslo:value-of select="."/>
850         </z:index>
851       </xslo:if>
852     </xslo:for-each>
853   </xslo:template>
854   <xslo:template mode="index_subfields" match="marc:datafield[@tag='210']">
855     <xslo:for-each select="marc:subfield">
856       <xslo:if test="contains('a', @code)">
857         <z:index name="pl:w pl:p">
858           <xslo:value-of select="."/>
859         </z:index>
860       </xslo:if>
861     </xslo:for-each>
862     <xslo:for-each select="marc:subfield">
863       <xslo:if test="contains('c', @code)">
864         <z:index name="Publisher:w Publisher:p">
865           <xslo:value-of select="."/>
866         </z:index>
867       </xslo:if>
868     </xslo:for-each>
869     <xslo:for-each select="marc:subfield">
870       <xslo:if test="contains('d', @code)">
871         <z:index name="pubdate:n pubdate:y pubdate:s">
872           <xslo:value-of select="."/>
873         </z:index>
874       </xslo:if>
875     </xslo:for-each>
876   </xslo:template>
877   <xslo:template mode="index_subfields" match="marc:datafield[@tag='225']">
878     <xslo:for-each select="marc:subfield">
879       <xslo:if test="contains('a', @code)">
880         <z:index name="Title-series:w Title-series:p">
881           <xslo:value-of select="."/>
882         </z:index>
883       </xslo:if>
884     </xslo:for-each>
885     <xslo:for-each select="marc:subfield">
886       <xslo:if test="contains('d', @code)">
887         <z:index name="Title-series:w Title-series:p">
888           <xslo:value-of select="."/>
889         </z:index>
890       </xslo:if>
891     </xslo:for-each>
892     <xslo:for-each select="marc:subfield">
893       <xslo:if test="contains('e', @code)">
894         <z:index name="Title-series:w Title-series:p">
895           <xslo:value-of select="."/>
896         </z:index>
897       </xslo:if>
898     </xslo:for-each>
899     <xslo:for-each select="marc:subfield">
900       <xslo:if test="contains('f', @code)">
901         <z:index name="Author:w Author:p Name-and-title:w Name-and-title:p">
902           <xslo:value-of select="."/>
903         </z:index>
904       </xslo:if>
905     </xslo:for-each>
906     <xslo:for-each select="marc:subfield">
907       <xslo:if test="contains('h', @code)">
908         <z:index name="Title-series:w Title-series:p">
909           <xslo:value-of select="."/>
910         </z:index>
911       </xslo:if>
912     </xslo:for-each>
913     <xslo:for-each select="marc:subfield">
914       <xslo:if test="contains('i', @code)">
915         <z:index name="Title-series:w Title-series:p">
916           <xslo:value-of select="."/>
917         </z:index>
918       </xslo:if>
919     </xslo:for-each>
920     <xslo:for-each select="marc:subfield">
921       <xslo:if test="contains('v', @code)">
922         <z:index name="Title-series:w Title-series:p">
923           <xslo:value-of select="."/>
924         </z:index>
925       </xslo:if>
926     </xslo:for-each>
927     <xslo:for-each select="marc:subfield">
928       <xslo:if test="contains('x', @code)">
929         <z:index name="ISSN:w">
930           <xslo:value-of select="."/>
931         </z:index>
932       </xslo:if>
933     </xslo:for-each>
934   </xslo:template>
935   <xslo:template mode="index_subfields" match="marc:datafield[@tag='300']">
936     <xslo:for-each select="marc:subfield">
937       <xslo:if test="contains('a', @code)">
938         <z:index name="Note:w Note:p">
939           <xslo:value-of select="."/>
940         </z:index>
941       </xslo:if>
942     </xslo:for-each>
943   </xslo:template>
944   <xslo:template mode="index_subfields" match="marc:datafield[@tag='301']">
945     <xslo:for-each select="marc:subfield">
946       <xslo:if test="contains('a', @code)">
947         <z:index name="Note:w Note:p">
948           <xslo:value-of select="."/>
949         </z:index>
950       </xslo:if>
951     </xslo:for-each>
952   </xslo:template>
953   <xslo:template mode="index_subfields" match="marc:datafield[@tag='302']">
954     <xslo:for-each select="marc:subfield">
955       <xslo:if test="contains('a', @code)">
956         <z:index name="Note:w Note:p">
957           <xslo:value-of select="."/>
958         </z:index>
959       </xslo:if>
960     </xslo:for-each>
961   </xslo:template>
962   <xslo:template mode="index_subfields" match="marc:datafield[@tag='303']">
963     <xslo:for-each select="marc:subfield">
964       <xslo:if test="contains('a', @code)">
965         <z:index name="Note:w Note:p">
966           <xslo:value-of select="."/>
967         </z:index>
968       </xslo:if>
969     </xslo:for-each>
970   </xslo:template>
971   <xslo:template mode="index_subfields" match="marc:datafield[@tag='304']">
972     <xslo:for-each select="marc:subfield">
973       <xslo:if test="contains('a', @code)">
974         <z:index name="Note:w Note:p">
975           <xslo:value-of select="."/>
976         </z:index>
977       </xslo:if>
978     </xslo:for-each>
979   </xslo:template>
980   <xslo:template mode="index_subfields" match="marc:datafield[@tag='305']">
981     <xslo:for-each select="marc:subfield">
982       <xslo:if test="contains('a', @code)">
983         <z:index name="Note:w Note:p">
984           <xslo:value-of select="."/>
985         </z:index>
986       </xslo:if>
987     </xslo:for-each>
988   </xslo:template>
989   <xslo:template mode="index_subfields" match="marc:datafield[@tag='306']">
990     <xslo:for-each select="marc:subfield">
991       <xslo:if test="contains('a', @code)">
992         <z:index name="Note:w Note:p">
993           <xslo:value-of select="."/>
994         </z:index>
995       </xslo:if>
996     </xslo:for-each>
997   </xslo:template>
998   <xslo:template mode="index_subfields" match="marc:datafield[@tag='307']">
999     <xslo:for-each select="marc:subfield">
1000       <xslo:if test="contains('a', @code)">
1001         <z:index name="Note:w Note:p">
1002           <xslo:value-of select="."/>
1003         </z:index>
1004       </xslo:if>
1005     </xslo:for-each>
1006   </xslo:template>
1007   <xslo:template mode="index_subfields" match="marc:datafield[@tag='310']">
1008     <xslo:for-each select="marc:subfield">
1009       <xslo:if test="contains('a', @code)">
1010         <z:index name="Note:w Note:p">
1011           <xslo:value-of select="."/>
1012         </z:index>
1013       </xslo:if>
1014     </xslo:for-each>
1015   </xslo:template>
1016   <xslo:template mode="index_subfields" match="marc:datafield[@tag='311']">
1017     <xslo:for-each select="marc:subfield">
1018       <xslo:if test="contains('a', @code)">
1019         <z:index name="Note:w Note:p">
1020           <xslo:value-of select="."/>
1021         </z:index>
1022       </xslo:if>
1023     </xslo:for-each>
1024   </xslo:template>
1025   <xslo:template mode="index_subfields" match="marc:datafield[@tag='312']">
1026     <xslo:for-each select="marc:subfield">
1027       <xslo:if test="contains('a', @code)">
1028         <z:index name="Note:w Note:p">
1029           <xslo:value-of select="."/>
1030         </z:index>
1031       </xslo:if>
1032     </xslo:for-each>
1033   </xslo:template>
1034   <xslo:template mode="index_subfields" match="marc:datafield[@tag='313']">
1035     <xslo:for-each select="marc:subfield">
1036       <xslo:if test="contains('a', @code)">
1037         <z:index name="Note:w Note:p">
1038           <xslo:value-of select="."/>
1039         </z:index>
1040       </xslo:if>
1041     </xslo:for-each>
1042   </xslo:template>
1043   <xslo:template mode="index_subfields" match="marc:datafield[@tag='314']">
1044     <xslo:for-each select="marc:subfield">
1045       <xslo:if test="contains('a', @code)">
1046         <z:index name="Note:w Note:p">
1047           <xslo:value-of select="."/>
1048         </z:index>
1049       </xslo:if>
1050     </xslo:for-each>
1051   </xslo:template>
1052   <xslo:template mode="index_subfields" match="marc:datafield[@tag='315']">
1053     <xslo:for-each select="marc:subfield">
1054       <xslo:if test="contains('a', @code)">
1055         <z:index name="Note:w Note:p">
1056           <xslo:value-of select="."/>
1057         </z:index>
1058       </xslo:if>
1059     </xslo:for-each>
1060   </xslo:template>
1061   <xslo:template mode="index_subfields" match="marc:datafield[@tag='316']">
1062     <xslo:for-each select="marc:subfield">
1063       <xslo:if test="contains('a', @code)">
1064         <z:index name="Note:w Note:p">
1065           <xslo:value-of select="."/>
1066         </z:index>
1067       </xslo:if>
1068     </xslo:for-each>
1069   </xslo:template>
1070   <xslo:template mode="index_subfields" match="marc:datafield[@tag='317']">
1071     <xslo:for-each select="marc:subfield">
1072       <xslo:if test="contains('a', @code)">
1073         <z:index name="Note:w Note:p">
1074           <xslo:value-of select="."/>
1075         </z:index>
1076       </xslo:if>
1077     </xslo:for-each>
1078   </xslo:template>
1079   <xslo:template mode="index_subfields" match="marc:datafield[@tag='318']">
1080     <xslo:for-each select="marc:subfield">
1081       <xslo:if test="contains('a', @code)">
1082         <z:index name="Note:w Note:p">
1083           <xslo:value-of select="."/>
1084         </z:index>
1085       </xslo:if>
1086     </xslo:for-each>
1087   </xslo:template>
1088   <xslo:template mode="index_subfields" match="marc:datafield[@tag='320']">
1089     <xslo:for-each select="marc:subfield">
1090       <xslo:if test="contains('a', @code)">
1091         <z:index name="Note:w Note:p">
1092           <xslo:value-of select="."/>
1093         </z:index>
1094       </xslo:if>
1095     </xslo:for-each>
1096   </xslo:template>
1097   <xslo:template mode="index_subfields" match="marc:datafield[@tag='321']">
1098     <xslo:for-each select="marc:subfield">
1099       <xslo:if test="contains('a', @code)">
1100         <z:index name="Note:w Note:p">
1101           <xslo:value-of select="."/>
1102         </z:index>
1103       </xslo:if>
1104     </xslo:for-each>
1105   </xslo:template>
1106   <xslo:template mode="index_subfields" match="marc:datafield[@tag='322']">
1107     <xslo:for-each select="marc:subfield">
1108       <xslo:if test="contains('a', @code)">
1109         <z:index name="Note:w Note:p">
1110           <xslo:value-of select="."/>
1111         </z:index>
1112       </xslo:if>
1113     </xslo:for-each>
1114   </xslo:template>
1115   <xslo:template mode="index_subfields" match="marc:datafield[@tag='323']">
1116     <xslo:for-each select="marc:subfield">
1117       <xslo:if test="contains('a', @code)">
1118         <z:index name="Note:w Note:p">
1119           <xslo:value-of select="."/>
1120         </z:index>
1121       </xslo:if>
1122     </xslo:for-each>
1123   </xslo:template>
1124   <xslo:template mode="index_subfields" match="marc:datafield[@tag='324']">
1125     <xslo:for-each select="marc:subfield">
1126       <xslo:if test="contains('a', @code)">
1127         <z:index name="Note:w Note:p">
1128           <xslo:value-of select="."/>
1129         </z:index>
1130       </xslo:if>
1131     </xslo:for-each>
1132   </xslo:template>
1133   <xslo:template mode="index_subfields" match="marc:datafield[@tag='325']">
1134     <xslo:for-each select="marc:subfield">
1135       <xslo:if test="contains('a', @code)">
1136         <z:index name="Note:w Note:p">
1137           <xslo:value-of select="."/>
1138         </z:index>
1139       </xslo:if>
1140     </xslo:for-each>
1141   </xslo:template>
1142   <xslo:template mode="index_subfields" match="marc:datafield[@tag='326']">
1143     <xslo:for-each select="marc:subfield">
1144       <xslo:if test="contains('a', @code)">
1145         <z:index name="Note:w Note:p">
1146           <xslo:value-of select="."/>
1147         </z:index>
1148       </xslo:if>
1149     </xslo:for-each>
1150   </xslo:template>
1151   <xslo:template mode="index_subfields" match="marc:datafield[@tag='327']">
1152     <xslo:for-each select="marc:subfield">
1153       <xslo:if test="contains('a', @code)">
1154         <z:index name="Note:w Note:p">
1155           <xslo:value-of select="."/>
1156         </z:index>
1157       </xslo:if>
1158     </xslo:for-each>
1159   </xslo:template>
1160   <xslo:template mode="index_subfields" match="marc:datafield[@tag='330']">
1161     <xslo:for-each select="marc:subfield">
1162       <xslo:if test="contains('a', @code)">
1163         <z:index name="Abstract:w Note:w Abstract:p Note:p">
1164           <xslo:value-of select="."/>
1165         </z:index>
1166       </xslo:if>
1167     </xslo:for-each>
1168   </xslo:template>
1169   <xslo:template mode="index_subfields" match="marc:datafield[@tag='332']">
1170     <xslo:for-each select="marc:subfield">
1171       <xslo:if test="contains('a', @code)">
1172         <z:index name="Note:w Note:p">
1173           <xslo:value-of select="."/>
1174         </z:index>
1175       </xslo:if>
1176     </xslo:for-each>
1177   </xslo:template>
1178   <xslo:template mode="index_subfields" match="marc:datafield[@tag='333']">
1179     <xslo:for-each select="marc:subfield">
1180       <xslo:if test="contains('a', @code)">
1181         <z:index name="Note:w Note:p">
1182           <xslo:value-of select="."/>
1183         </z:index>
1184       </xslo:if>
1185     </xslo:for-each>
1186   </xslo:template>
1187   <xslo:template mode="index_subfields" match="marc:datafield[@tag='334']">
1188     <xslo:for-each select="marc:subfield">
1189       <xslo:if test="contains('a', @code)">
1190         <z:index name="Note:w Note:p">
1191           <xslo:value-of select="."/>
1192         </z:index>
1193       </xslo:if>
1194     </xslo:for-each>
1195   </xslo:template>
1196   <xslo:template mode="index_subfields" match="marc:datafield[@tag='336']">
1197     <xslo:for-each select="marc:subfield">
1198       <xslo:if test="contains('a', @code)">
1199         <z:index name="Note:w Note:p">
1200           <xslo:value-of select="."/>
1201         </z:index>
1202       </xslo:if>
1203     </xslo:for-each>
1204   </xslo:template>
1205   <xslo:template mode="index_subfields" match="marc:datafield[@tag='337']">
1206     <xslo:for-each select="marc:subfield">
1207       <xslo:if test="contains('a', @code)">
1208         <z:index name="Note:w Note:p">
1209           <xslo:value-of select="."/>
1210         </z:index>
1211       </xslo:if>
1212     </xslo:for-each>
1213   </xslo:template>
1214   <xslo:template mode="index_subfields" match="marc:datafield[@tag='345']">
1215     <xslo:for-each select="marc:subfield">
1216       <xslo:if test="contains('a', @code)">
1217         <z:index name="Note:w Note:p">
1218           <xslo:value-of select="."/>
1219         </z:index>
1220       </xslo:if>
1221     </xslo:for-each>
1222   </xslo:template>
1223   <xslo:template mode="index_subfields" match="marc:datafield[@tag='410']">
1224     <xslo:for-each select="marc:subfield">
1225       <xslo:if test="contains('t', @code)">
1226         <z:index name="Title-series:w Title-series:p">
1227           <xslo:value-of select="."/>
1228         </z:index>
1229       </xslo:if>
1230     </xslo:for-each>
1231     <xslo:for-each select="marc:subfield">
1232       <xslo:if test="contains('d', @code)">
1233         <z:index name="pubdate:n">
1234           <xslo:value-of select="."/>
1235         </z:index>
1236       </xslo:if>
1237     </xslo:for-each>
1238   </xslo:template>
1239   <xslo:template mode="index_subfields" match="marc:datafield[@tag='411']">
1240     <xslo:for-each select="marc:subfield">
1241       <xslo:if test="contains('t', @code)">
1242         <z:index name="Title:w Title:p">
1243           <xslo:value-of select="."/>
1244         </z:index>
1245       </xslo:if>
1246     </xslo:for-each>
1247   </xslo:template>
1248   <xslo:template mode="index_subfields" match="marc:datafield[@tag='412']">
1249     <xslo:for-each select="marc:subfield">
1250       <xslo:if test="contains('t', @code)">
1251         <z:index name="Title:w Title:p">
1252           <xslo:value-of select="."/>
1253         </z:index>
1254       </xslo:if>
1255     </xslo:for-each>
1256     <xslo:for-each select="marc:subfield">
1257       <xslo:if test="contains('d', @code)">
1258         <z:index name="pubdate:n">
1259           <xslo:value-of select="."/>
1260         </z:index>
1261       </xslo:if>
1262     </xslo:for-each>
1263   </xslo:template>
1264   <xslo:template mode="index_subfields" match="marc:datafield[@tag='413']">
1265     <xslo:for-each select="marc:subfield">
1266       <xslo:if test="contains('t', @code)">
1267         <z:index name="Title:w Title:p">
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('d', @code)">
1274         <z:index name="pubdate:n">
1275           <xslo:value-of select="."/>
1276         </z:index>
1277       </xslo:if>
1278     </xslo:for-each>
1279   </xslo:template>
1280   <xslo:template mode="index_subfields" match="marc:datafield[@tag='421']">
1281     <xslo:for-each select="marc:subfield">
1282       <xslo:if test="contains('t', @code)">
1283         <z:index name="Title:w Title:p">
1284           <xslo:value-of select="."/>
1285         </z:index>
1286       </xslo:if>
1287     </xslo:for-each>
1288   </xslo:template>
1289   <xslo:template mode="index_subfields" match="marc:datafield[@tag='422']">
1290     <xslo:for-each select="marc:subfield">
1291       <xslo:if test="contains('t', @code)">
1292         <z:index name="Title:w Title:p">
1293           <xslo:value-of select="."/>
1294         </z:index>
1295       </xslo:if>
1296     </xslo:for-each>
1297   </xslo:template>
1298   <xslo:template mode="index_subfields" match="marc:datafield[@tag='423']">
1299     <xslo:for-each select="marc:subfield">
1300       <xslo:if test="contains('t', @code)">
1301         <z:index name="Title:w Title:p">
1302           <xslo:value-of select="."/>
1303         </z:index>
1304       </xslo:if>
1305     </xslo:for-each>
1306   </xslo:template>
1307   <xslo:template mode="index_subfields" match="marc:datafield[@tag='424']">
1308     <xslo:for-each select="marc:subfield">
1309       <xslo:if test="contains('t', @code)">
1310         <z:index name="Title:w Title:p">
1311           <xslo:value-of select="."/>
1312         </z:index>
1313       </xslo:if>
1314     </xslo:for-each>
1315   </xslo:template>
1316   <xslo:template mode="index_subfields" match="marc:datafield[@tag='425']">
1317     <xslo:for-each select="marc:subfield">
1318       <xslo:if test="contains('t', @code)">
1319         <z:index name="Title:w Title:p">
1320           <xslo:value-of select="."/>
1321         </z:index>
1322       </xslo:if>
1323     </xslo:for-each>
1324   </xslo:template>
1325   <xslo:template mode="index_subfields" match="marc:datafield[@tag='430']">
1326     <xslo:for-each select="marc:subfield">
1327       <xslo:if test="contains('t', @code)">
1328         <z:index name="Title:w Title:p">
1329           <xslo:value-of select="."/>
1330         </z:index>
1331       </xslo:if>
1332     </xslo:for-each>
1333     <xslo:for-each select="marc:subfield">
1334       <xslo:if test="contains('d', @code)">
1335         <z:index name="pubdate:n">
1336           <xslo:value-of select="."/>
1337         </z:index>
1338       </xslo:if>
1339     </xslo:for-each>
1340   </xslo:template>
1341   <xslo:template mode="index_subfields" match="marc:datafield[@tag='431']">
1342     <xslo:for-each select="marc:subfield">
1343       <xslo:if test="contains('t', @code)">
1344         <z:index name="Title:w Title:p">
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('d', @code)">
1351         <z:index name="pubdate:n">
1352           <xslo:value-of select="."/>
1353         </z:index>
1354       </xslo:if>
1355     </xslo:for-each>
1356   </xslo:template>
1357   <xslo:template mode="index_subfields" match="marc:datafield[@tag='432']">
1358     <xslo:for-each select="marc:subfield">
1359       <xslo:if test="contains('t', @code)">
1360         <z:index name="Title:w Title:p">
1361           <xslo:value-of select="."/>
1362         </z:index>
1363       </xslo:if>
1364     </xslo:for-each>
1365     <xslo:for-each select="marc:subfield">
1366       <xslo:if test="contains('d', @code)">
1367         <z:index name="pubdate:n">
1368           <xslo:value-of select="."/>
1369         </z:index>
1370       </xslo:if>
1371     </xslo:for-each>
1372   </xslo:template>
1373   <xslo:template mode="index_subfields" match="marc:datafield[@tag='433']">
1374     <xslo:for-each select="marc:subfield">
1375       <xslo:if test="contains('t', @code)">
1376         <z:index name="Title:w Title:p">
1377           <xslo:value-of select="."/>
1378         </z:index>
1379       </xslo:if>
1380     </xslo:for-each>
1381   </xslo:template>
1382   <xslo:template mode="index_subfields" match="marc:datafield[@tag='434']">
1383     <xslo:for-each select="marc:subfield">
1384       <xslo:if test="contains('t', @code)">
1385         <z:index name="Title:w Title:p">
1386           <xslo:value-of select="."/>
1387         </z:index>
1388       </xslo:if>
1389     </xslo:for-each>
1390   </xslo:template>
1391   <xslo:template mode="index_subfields" match="marc:datafield[@tag='435']">
1392     <xslo:for-each select="marc:subfield">
1393       <xslo:if test="contains('t', @code)">
1394         <z:index name="Title:w Title:p">
1395           <xslo:value-of select="."/>
1396         </z:index>
1397       </xslo:if>
1398     </xslo:for-each>
1399   </xslo:template>
1400   <xslo:template mode="index_subfields" match="marc:datafield[@tag='436']">
1401     <xslo:for-each select="marc:subfield">
1402       <xslo:if test="contains('t', @code)">
1403         <z:index name="Title:w Title:p">
1404           <xslo:value-of select="."/>
1405         </z:index>
1406       </xslo:if>
1407     </xslo:for-each>
1408   </xslo:template>
1409   <xslo:template mode="index_subfields" match="marc:datafield[@tag='437']">
1410     <xslo:for-each select="marc:subfield">
1411       <xslo:if test="contains('t', @code)">
1412         <z:index name="Title:w Title:p">
1413           <xslo:value-of select="."/>
1414         </z:index>
1415       </xslo:if>
1416     </xslo:for-each>
1417   </xslo:template>
1418   <xslo:template mode="index_subfields" match="marc:datafield[@tag='440']">
1419     <xslo:for-each select="marc:subfield">
1420       <xslo:if test="contains('t', @code)">
1421         <z:index name="Title:w Title:p">
1422           <xslo:value-of select="."/>
1423         </z:index>
1424       </xslo:if>
1425     </xslo:for-each>
1426     <xslo:for-each select="marc:subfield">
1427       <xslo:if test="contains('d', @code)">
1428         <z:index name="pubdate:n">
1429           <xslo:value-of select="."/>
1430         </z:index>
1431       </xslo:if>
1432     </xslo:for-each>
1433   </xslo:template>
1434   <xslo:template mode="index_subfields" match="marc:datafield[@tag='441']">
1435     <xslo:for-each select="marc:subfield">
1436       <xslo:if test="contains('t', @code)">
1437         <z:index name="Title:w Title:p">
1438           <xslo:value-of select="."/>
1439         </z:index>
1440       </xslo:if>
1441     </xslo:for-each>
1442     <xslo:for-each select="marc:subfield">
1443       <xslo:if test="contains('d', @code)">
1444         <z:index name="pubdate:n">
1445           <xslo:value-of select="."/>
1446         </z:index>
1447       </xslo:if>
1448     </xslo:for-each>
1449   </xslo:template>
1450   <xslo:template mode="index_subfields" match="marc:datafield[@tag='442']">
1451     <xslo:for-each select="marc:subfield">
1452       <xslo:if test="contains('t', @code)">
1453         <z:index name="Title:w Title:p">
1454           <xslo:value-of select="."/>
1455         </z:index>
1456       </xslo:if>
1457     </xslo:for-each>
1458   </xslo:template>
1459   <xslo:template mode="index_subfields" match="marc:datafield[@tag='443']">
1460     <xslo:for-each select="marc:subfield">
1461       <xslo:if test="contains('t', @code)">
1462         <z:index name="Title:w Title:p">
1463           <xslo:value-of select="."/>
1464         </z:index>
1465       </xslo:if>
1466     </xslo:for-each>
1467   </xslo:template>
1468   <xslo:template mode="index_subfields" match="marc:datafield[@tag='444']">
1469     <xslo:for-each select="marc:subfield">
1470       <xslo:if test="contains('t', @code)">
1471         <z:index name="Title:w Title:p">
1472           <xslo:value-of select="."/>
1473         </z:index>
1474       </xslo:if>
1475     </xslo:for-each>
1476   </xslo:template>
1477   <xslo:template mode="index_subfields" match="marc:datafield[@tag='445']">
1478     <xslo:for-each select="marc:subfield">
1479       <xslo:if test="contains('t', @code)">
1480         <z:index name="Title:w Title:p">
1481           <xslo:value-of select="."/>
1482         </z:index>
1483       </xslo:if>
1484     </xslo:for-each>
1485     <xslo:for-each select="marc:subfield">
1486       <xslo:if test="contains('d', @code)">
1487         <z:index name="pubdate:n">
1488           <xslo:value-of select="."/>
1489         </z:index>
1490       </xslo:if>
1491     </xslo:for-each>
1492   </xslo:template>
1493   <xslo:template mode="index_subfields" match="marc:datafield[@tag='446']">
1494     <xslo:for-each select="marc:subfield">
1495       <xslo:if test="contains('t', @code)">
1496         <z:index name="Title:w Title:p">
1497           <xslo:value-of select="."/>
1498         </z:index>
1499       </xslo:if>
1500     </xslo:for-each>
1501   </xslo:template>
1502   <xslo:template mode="index_subfields" match="marc:datafield[@tag='447']">
1503     <xslo:for-each select="marc:subfield">
1504       <xslo:if test="contains('t', @code)">
1505         <z:index name="Title:w Title:p">
1506           <xslo:value-of select="."/>
1507         </z:index>
1508       </xslo:if>
1509     </xslo:for-each>
1510   </xslo:template>
1511   <xslo:template mode="index_subfields" match="marc:datafield[@tag='448']">
1512     <xslo:for-each select="marc:subfield">
1513       <xslo:if test="contains('t', @code)">
1514         <z:index name="Title:w Title:p">
1515           <xslo:value-of select="."/>
1516         </z:index>
1517       </xslo:if>
1518     </xslo:for-each>
1519   </xslo:template>
1520   <xslo:template mode="index_subfields" match="marc:datafield[@tag='451']">
1521     <xslo:for-each select="marc:subfield">
1522       <xslo:if test="contains('t', @code)">
1523         <z:index name="Title:w Title:p">
1524           <xslo:value-of select="."/>
1525         </z:index>
1526       </xslo:if>
1527     </xslo:for-each>
1528   </xslo:template>
1529   <xslo:template mode="index_subfields" match="marc:datafield[@tag='452']">
1530     <xslo:for-each select="marc:subfield">
1531       <xslo:if test="contains('t', @code)">
1532         <z:index name="Title:w Title:p">
1533           <xslo:value-of select="."/>
1534         </z:index>
1535       </xslo:if>
1536     </xslo:for-each>
1537   </xslo:template>
1538   <xslo:template mode="index_subfields" match="marc:datafield[@tag='453']">
1539     <xslo:for-each select="marc:subfield">
1540       <xslo:if test="contains('t', @code)">
1541         <z:index name="Title:w Title:p">
1542           <xslo:value-of select="."/>
1543         </z:index>
1544       </xslo:if>
1545     </xslo:for-each>
1546   </xslo:template>
1547   <xslo:template mode="index_subfields" match="marc:datafield[@tag='454']">
1548     <xslo:for-each select="marc:subfield">
1549       <xslo:if test="contains('t', @code)">
1550         <z:index name="Title:w Title:p">
1551           <xslo:value-of select="."/>
1552         </z:index>
1553       </xslo:if>
1554     </xslo:for-each>
1555   </xslo:template>
1556   <xslo:template mode="index_subfields" match="marc:datafield[@tag='455']">
1557     <xslo:for-each select="marc:subfield">
1558       <xslo:if test="contains('t', @code)">
1559         <z:index name="Title:w Title:p">
1560           <xslo:value-of select="."/>
1561         </z:index>
1562       </xslo:if>
1563     </xslo:for-each>
1564   </xslo:template>
1565   <xslo:template mode="index_subfields" match="marc:datafield[@tag='456']">
1566     <xslo:for-each select="marc:subfield">
1567       <xslo:if test="contains('t', @code)">
1568         <z:index name="Title:w Title:p">
1569           <xslo:value-of select="."/>
1570         </z:index>
1571       </xslo:if>
1572     </xslo:for-each>
1573   </xslo:template>
1574   <xslo:template mode="index_subfields" match="marc:datafield[@tag='461']">
1575     <xslo:for-each select="marc:subfield">
1576       <xslo:if test="contains('t', @code)">
1577         <z:index name="Title:w Title-host:w title-host:p">
1578           <xslo:value-of select="."/>
1579         </z:index>
1580       </xslo:if>
1581     </xslo:for-each>
1582     <xslo:for-each select="marc:subfield">
1583       <xslo:if test="contains('9', @code)">
1584         <z:index name="Host-Item-Number:w">
1585           <xslo:value-of select="."/>
1586         </z:index>
1587       </xslo:if>
1588     </xslo:for-each>
1589     <xslo:for-each select="marc:subfield">
1590       <xslo:if test="contains('d', @code)">
1591         <z:index name="pubdate:n">
1592           <xslo:value-of select="."/>
1593         </z:index>
1594       </xslo:if>
1595     </xslo:for-each>
1596     <xslo:for-each select="marc:subfield">
1597       <xslo:if test="contains('9', @code)">
1598         <z:index name="Host-Item-Number:w">
1599           <xslo:value-of select="."/>
1600         </z:index>
1601       </xslo:if>
1602     </xslo:for-each>
1603   </xslo:template>
1604   <xslo:template mode="index_subfields" match="marc:datafield[@tag='462']">
1605     <xslo:for-each select="marc:subfield">
1606       <xslo:if test="contains('t', @code)">
1607         <z:index name="Title:w Title:p">
1608           <xslo:value-of select="."/>
1609         </z:index>
1610       </xslo:if>
1611     </xslo:for-each>
1612   </xslo:template>
1613   <xslo:template mode="index_subfields" match="marc:datafield[@tag='463']">
1614     <xslo:for-each select="marc:subfield">
1615       <xslo:if test="contains('t', @code)">
1616         <z:index name="Title:w Title:p">
1617           <xslo:value-of select="."/>
1618         </z:index>
1619       </xslo:if>
1620     </xslo:for-each>
1621   </xslo:template>
1622   <xslo:template mode="index_subfields" match="marc:datafield[@tag='464']">
1623     <xslo:for-each select="marc:subfield">
1624       <xslo:if test="contains('t', @code)">
1625         <z:index name="Title:w Title-host:w title-host:p Title:p">
1626           <xslo:value-of select="."/>
1627         </z:index>
1628       </xslo:if>
1629     </xslo:for-each>
1630   </xslo:template>
1631   <xslo:template mode="index_subfields" match="marc:datafield[@tag='470']">
1632     <xslo:for-each select="marc:subfield">
1633       <xslo:if test="contains('t', @code)">
1634         <z:index name="Title:w Title:p">
1635           <xslo:value-of select="."/>
1636         </z:index>
1637       </xslo:if>
1638     </xslo:for-each>
1639   </xslo:template>
1640   <xslo:template mode="index_subfields" match="marc:datafield[@tag='481']">
1641     <xslo:for-each select="marc:subfield">
1642       <xslo:if test="contains('t', @code)">
1643         <z:index name="Title:w Title:p">
1644           <xslo:value-of select="."/>
1645         </z:index>
1646       </xslo:if>
1647     </xslo:for-each>
1648   </xslo:template>
1649   <xslo:template mode="index_subfields" match="marc:datafield[@tag='482']">
1650     <xslo:for-each select="marc:subfield">
1651       <xslo:if test="contains('t', @code)">
1652         <z:index name="Title:w Title:p">
1653           <xslo:value-of select="."/>
1654         </z:index>
1655       </xslo:if>
1656     </xslo:for-each>
1657   </xslo:template>
1658   <xslo:template mode="index_subfields" match="marc:datafield[@tag='488']">
1659     <xslo:for-each select="marc:subfield">
1660       <xslo:if test="contains('t', @code)">
1661         <z:index name="Title:w Title:p">
1662           <xslo:value-of select="."/>
1663         </z:index>
1664       </xslo:if>
1665     </xslo:for-each>
1666   </xslo:template>
1667   <xslo:template mode="index_subfields" match="marc:datafield[@tag='400']">
1668     <xslo:for-each select="marc:subfield">
1669       <xslo:if test="contains('t', @code)">
1670         <z:index name="Title:w Title:p">
1671           <xslo:value-of select="."/>
1672         </z:index>
1673       </xslo:if>
1674     </xslo:for-each>
1675     <xslo:for-each select="marc:subfield">
1676       <xslo:if test="contains('d', @code)">
1677         <z:index name="pubdate:n">
1678           <xslo:value-of select="."/>
1679         </z:index>
1680       </xslo:if>
1681     </xslo:for-each>
1682   </xslo:template>
1683   <xslo:template mode="index_subfields" match="marc:datafield[@tag='401']">
1684     <xslo:for-each select="marc:subfield">
1685       <xslo:if test="contains('t', @code)">
1686         <z:index name="Title:w Title:p">
1687           <xslo:value-of select="."/>
1688         </z:index>
1689       </xslo:if>
1690     </xslo:for-each>
1691     <xslo:for-each select="marc:subfield">
1692       <xslo:if test="contains('d', @code)">
1693         <z:index name="pubdate:n">
1694           <xslo:value-of select="."/>
1695         </z:index>
1696       </xslo:if>
1697     </xslo:for-each>
1698   </xslo:template>
1699   <xslo:template mode="index_subfields" match="marc:datafield[@tag='403']">
1700     <xslo:for-each select="marc:subfield">
1701       <xslo:if test="contains('t', @code)">
1702         <z:index name="Title:w Title:p Title-Uniform:w Title-Uniform:p">
1703           <xslo:value-of select="."/>
1704         </z:index>
1705       </xslo:if>
1706     </xslo:for-each>
1707     <xslo:for-each select="marc:subfield">
1708       <xslo:if test="contains('d', @code)">
1709         <z:index name="pubdate:n">
1710           <xslo:value-of select="."/>
1711         </z:index>
1712       </xslo:if>
1713     </xslo:for-each>
1714   </xslo:template>
1715   <xslo:template mode="index_subfields" match="marc:datafield[@tag='414']">
1716     <xslo:for-each select="marc:subfield">
1717       <xslo:if test="contains('t', @code)">
1718         <z:index name="Title:w Title:p">
1719           <xslo:value-of select="."/>
1720         </z:index>
1721       </xslo:if>
1722     </xslo:for-each>
1723     <xslo:for-each select="marc:subfield">
1724       <xslo:if test="contains('d', @code)">
1725         <z:index name="pubdate:n">
1726           <xslo:value-of select="."/>
1727         </z:index>
1728       </xslo:if>
1729     </xslo:for-each>
1730   </xslo:template>
1731   <xslo:template mode="index_subfields" match="marc:datafield[@tag='415']">
1732     <xslo:for-each select="marc:subfield">
1733       <xslo:if test="contains('t', @code)">
1734         <z:index name="Title:w Title:p">
1735           <xslo:value-of select="."/>
1736         </z:index>
1737       </xslo:if>
1738     </xslo:for-each>
1739     <xslo:for-each select="marc:subfield">
1740       <xslo:if test="contains('d', @code)">
1741         <z:index name="pubdate:n">
1742           <xslo:value-of select="."/>
1743         </z:index>
1744       </xslo:if>
1745     </xslo:for-each>
1746   </xslo:template>
1747   <xslo:template mode="index_subfields" match="marc:datafield[@tag='416']">
1748     <xslo:for-each select="marc:subfield">
1749       <xslo:if test="contains('t', @code)">
1750         <z:index name="Title:w Title:p">
1751           <xslo:value-of select="."/>
1752         </z:index>
1753       </xslo:if>
1754     </xslo:for-each>
1755     <xslo:for-each select="marc:subfield">
1756       <xslo:if test="contains('d', @code)">
1757         <z:index name="pubdate:n">
1758           <xslo:value-of select="."/>
1759         </z:index>
1760       </xslo:if>
1761     </xslo:for-each>
1762   </xslo:template>
1763   <xslo:template mode="index_subfields" match="marc:datafield[@tag='417']">
1764     <xslo:for-each select="marc:subfield">
1765       <xslo:if test="contains('t', @code)">
1766         <z:index name="Title:w Title:p">
1767           <xslo:value-of select="."/>
1768         </z:index>
1769       </xslo:if>
1770     </xslo:for-each>
1771     <xslo:for-each select="marc:subfield">
1772       <xslo:if test="contains('d', @code)">
1773         <z:index name="pubdate:n">
1774           <xslo:value-of select="."/>
1775         </z:index>
1776       </xslo:if>
1777     </xslo:for-each>
1778   </xslo:template>
1779   <xslo:template mode="index_subfields" match="marc:datafield[@tag='418']">
1780     <xslo:for-each select="marc:subfield">
1781       <xslo:if test="contains('t', @code)">
1782         <z:index name="Title:w Title:p">
1783           <xslo:value-of select="."/>
1784         </z:index>
1785       </xslo:if>
1786     </xslo:for-each>
1787     <xslo:for-each select="marc:subfield">
1788       <xslo:if test="contains('d', @code)">
1789         <z:index name="pubdate:n">
1790           <xslo:value-of select="."/>
1791         </z:index>
1792       </xslo:if>
1793     </xslo:for-each>
1794   </xslo:template>
1795   <xslo:template mode="index_subfields" match="marc:datafield[@tag='419']">
1796     <xslo:for-each select="marc:subfield">
1797       <xslo:if test="contains('t', @code)">
1798         <z:index name="Title:w Title:p">
1799           <xslo:value-of select="."/>
1800         </z:index>
1801       </xslo:if>
1802     </xslo:for-each>
1803     <xslo:for-each select="marc:subfield">
1804       <xslo:if test="contains('d', @code)">
1805         <z:index name="pubdate:n">
1806           <xslo:value-of select="."/>
1807         </z:index>
1808       </xslo:if>
1809     </xslo:for-each>
1810   </xslo:template>
1811   <xslo:template mode="index_subfields" match="marc:datafield[@tag='420']">
1812     <xslo:for-each select="marc:subfield">
1813       <xslo:if test="contains('t', @code)">
1814         <z:index name="Title:w Title:p">
1815           <xslo:value-of select="."/>
1816         </z:index>
1817       </xslo:if>
1818     </xslo:for-each>
1819     <xslo:for-each select="marc:subfield">
1820       <xslo:if test="contains('d', @code)">
1821         <z:index name="pubdate:n">
1822           <xslo:value-of select="."/>
1823         </z:index>
1824       </xslo:if>
1825     </xslo:for-each>
1826   </xslo:template>
1827   <xslo:template mode="index_subfields" match="marc:datafield[@tag='500']">
1828     <xslo:for-each select="marc:subfield">
1829       <xslo:if test="contains('9', @code)">
1830         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1831           <xslo:value-of select="."/>
1832         </z:index>
1833       </xslo:if>
1834     </xslo:for-each>
1835   </xslo:template>
1836   <xslo:template mode="index_subfields" match="marc:datafield[@tag='501']">
1837     <xslo:for-each select="marc:subfield">
1838       <xslo:if test="contains('9', @code)">
1839         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1840           <xslo:value-of select="."/>
1841         </z:index>
1842       </xslo:if>
1843     </xslo:for-each>
1844   </xslo:template>
1845   <xslo:template mode="index_subfields" match="marc:datafield[@tag='503']">
1846     <xslo:for-each select="marc:subfield">
1847       <xslo:if test="contains('9', @code)">
1848         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1849           <xslo:value-of select="."/>
1850         </z:index>
1851       </xslo:if>
1852     </xslo:for-each>
1853   </xslo:template>
1854   <xslo:template mode="index_subfields" match="marc:datafield[@tag='510']">
1855     <xslo:for-each select="marc:subfield">
1856       <xslo:if test="contains('9', @code)">
1857         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1858           <xslo:value-of select="."/>
1859         </z:index>
1860       </xslo:if>
1861     </xslo:for-each>
1862   </xslo:template>
1863   <xslo:template mode="index_subfields" match="marc:datafield[@tag='512']">
1864     <xslo:for-each select="marc:subfield">
1865       <xslo:if test="contains('9', @code)">
1866         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1867           <xslo:value-of select="."/>
1868         </z:index>
1869       </xslo:if>
1870     </xslo:for-each>
1871   </xslo:template>
1872   <xslo:template mode="index_subfields" match="marc:datafield[@tag='513']">
1873     <xslo:for-each select="marc:subfield">
1874       <xslo:if test="contains('9', @code)">
1875         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1876           <xslo:value-of select="."/>
1877         </z:index>
1878       </xslo:if>
1879     </xslo:for-each>
1880   </xslo:template>
1881   <xslo:template mode="index_subfields" match="marc:datafield[@tag='514']">
1882     <xslo:for-each select="marc:subfield">
1883       <xslo:if test="contains('9', @code)">
1884         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1885           <xslo:value-of select="."/>
1886         </z:index>
1887       </xslo:if>
1888     </xslo:for-each>
1889   </xslo:template>
1890   <xslo:template mode="index_subfields" match="marc:datafield[@tag='515']">
1891     <xslo:for-each select="marc:subfield">
1892       <xslo:if test="contains('9', @code)">
1893         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1894           <xslo:value-of select="."/>
1895         </z:index>
1896       </xslo:if>
1897     </xslo:for-each>
1898   </xslo:template>
1899   <xslo:template mode="index_subfields" match="marc:datafield[@tag='516']">
1900     <xslo:for-each select="marc:subfield">
1901       <xslo:if test="contains('9', @code)">
1902         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1903           <xslo:value-of select="."/>
1904         </z:index>
1905       </xslo:if>
1906     </xslo:for-each>
1907   </xslo:template>
1908   <xslo:template mode="index_subfields" match="marc:datafield[@tag='517']">
1909     <xslo:for-each select="marc:subfield">
1910       <xslo:if test="contains('9', @code)">
1911         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1912           <xslo:value-of select="."/>
1913         </z:index>
1914       </xslo:if>
1915     </xslo:for-each>
1916   </xslo:template>
1917   <xslo:template mode="index_subfields" match="marc:datafield[@tag='518']">
1918     <xslo:for-each select="marc:subfield">
1919       <xslo:if test="contains('9', @code)">
1920         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1921           <xslo:value-of select="."/>
1922         </z:index>
1923       </xslo:if>
1924     </xslo:for-each>
1925   </xslo:template>
1926   <xslo:template mode="index_subfields" match="marc:datafield[@tag='519']">
1927     <xslo:for-each select="marc:subfield">
1928       <xslo:if test="contains('9', @code)">
1929         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1930           <xslo:value-of select="."/>
1931         </z:index>
1932       </xslo:if>
1933     </xslo:for-each>
1934   </xslo:template>
1935   <xslo:template mode="index_subfields" match="marc:datafield[@tag='520']">
1936     <xslo:for-each select="marc:subfield">
1937       <xslo:if test="contains('9', @code)">
1938         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1939           <xslo:value-of select="."/>
1940         </z:index>
1941       </xslo:if>
1942     </xslo:for-each>
1943   </xslo:template>
1944   <xslo:template mode="index_subfields" match="marc:datafield[@tag='530']">
1945     <xslo:for-each select="marc:subfield">
1946       <xslo:if test="contains('9', @code)">
1947         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1948           <xslo:value-of select="."/>
1949         </z:index>
1950       </xslo:if>
1951     </xslo:for-each>
1952   </xslo:template>
1953   <xslo:template mode="index_subfields" match="marc:datafield[@tag='531']">
1954     <xslo:for-each select="marc:subfield">
1955       <xslo:if test="contains('9', @code)">
1956         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1957           <xslo:value-of select="."/>
1958         </z:index>
1959       </xslo:if>
1960     </xslo:for-each>
1961   </xslo:template>
1962   <xslo:template mode="index_subfields" match="marc:datafield[@tag='532']">
1963     <xslo:for-each select="marc:subfield">
1964       <xslo:if test="contains('9', @code)">
1965         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1966           <xslo:value-of select="."/>
1967         </z:index>
1968       </xslo:if>
1969     </xslo:for-each>
1970   </xslo:template>
1971   <xslo:template mode="index_subfields" match="marc:datafield[@tag='540']">
1972     <xslo:for-each select="marc:subfield">
1973       <xslo:if test="contains('9', @code)">
1974         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1975           <xslo:value-of select="."/>
1976         </z:index>
1977       </xslo:if>
1978     </xslo:for-each>
1979   </xslo:template>
1980   <xslo:template mode="index_subfields" match="marc:datafield[@tag='541']">
1981     <xslo:for-each select="marc:subfield">
1982       <xslo:if test="contains('9', @code)">
1983         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1984           <xslo:value-of select="."/>
1985         </z:index>
1986       </xslo:if>
1987     </xslo:for-each>
1988   </xslo:template>
1989   <xslo:template mode="index_subfields" match="marc:datafield[@tag='545']">
1990     <xslo:for-each select="marc:subfield">
1991       <xslo:if test="contains('9', @code)">
1992         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
1993           <xslo:value-of select="."/>
1994         </z:index>
1995       </xslo:if>
1996     </xslo:for-each>
1997   </xslo:template>
1998   <xslo:template mode="index_subfields" match="marc:datafield[@tag='560']">
1999     <xslo:for-each select="marc:subfield">
2000       <xslo:if test="contains('9', @code)">
2001         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2002           <xslo:value-of select="."/>
2003         </z:index>
2004       </xslo:if>
2005     </xslo:for-each>
2006   </xslo:template>
2007   <xslo:template mode="index_subfields" match="marc:datafield[@tag='600']">
2008     <xslo:for-each select="marc:subfield">
2009       <xslo:if test="contains('9', @code)">
2010         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2011           <xslo:value-of select="."/>
2012         </z:index>
2013       </xslo:if>
2014     </xslo:for-each>
2015     <xslo:for-each select="marc:subfield">
2016       <xslo:if test="contains('a', @code)">
2017         <z:index name="Personal-name:w Personal-name:p Subject:w Subject:p">
2018           <xslo:value-of select="."/>
2019         </z:index>
2020       </xslo:if>
2021     </xslo:for-each>
2022   </xslo:template>
2023   <xslo:template mode="index_subfields" match="marc:datafield[@tag='601']">
2024     <xslo:for-each select="marc:subfield">
2025       <xslo:if test="contains('9', @code)">
2026         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2027           <xslo:value-of select="."/>
2028         </z:index>
2029       </xslo:if>
2030     </xslo:for-each>
2031     <xslo:for-each select="marc:subfield">
2032       <xslo:if test="contains('a', @code)">
2033         <z:index name="Corporate-name:w Conference-name:w Corporate-name:p Conference-name:p">
2034           <xslo:value-of select="."/>
2035         </z:index>
2036       </xslo:if>
2037     </xslo:for-each>
2038   </xslo:template>
2039   <xslo:template mode="index_subfields" match="marc:datafield[@tag='602']">
2040     <xslo:for-each select="marc:subfield">
2041       <xslo:if test="contains('9', @code)">
2042         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2043           <xslo:value-of select="."/>
2044         </z:index>
2045       </xslo:if>
2046     </xslo:for-each>
2047     <xslo:for-each select="marc:subfield">
2048       <xslo:if test="contains('a', @code)">
2049         <z:index name="Personal-name:w Personal-name:p">
2050           <xslo:value-of select="."/>
2051         </z:index>
2052       </xslo:if>
2053     </xslo:for-each>
2054   </xslo:template>
2055   <xslo:template mode="index_subfields" match="marc:datafield[@tag='603']">
2056     <xslo:for-each select="marc:subfield">
2057       <xslo:if test="contains('9', @code)">
2058         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2059           <xslo:value-of select="."/>
2060         </z:index>
2061       </xslo:if>
2062     </xslo:for-each>
2063   </xslo:template>
2064   <xslo:template mode="index_subfields" match="marc:datafield[@tag='604']">
2065     <xslo:for-each select="marc:subfield">
2066       <xslo:if test="contains('9', @code)">
2067         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2068           <xslo:value-of select="."/>
2069         </z:index>
2070       </xslo:if>
2071     </xslo:for-each>
2072   </xslo:template>
2073   <xslo:template mode="index_subfields" match="marc:datafield[@tag='605']">
2074     <xslo:for-each select="marc:subfield">
2075       <xslo:if test="contains('9', @code)">
2076         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2077           <xslo:value-of select="."/>
2078         </z:index>
2079       </xslo:if>
2080     </xslo:for-each>
2081   </xslo:template>
2082   <xslo:template mode="index_subfields" match="marc:datafield[@tag='606']">
2083     <xslo:for-each select="marc:subfield">
2084       <xslo:if test="contains('9', @code)">
2085         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2086           <xslo:value-of select="."/>
2087         </z:index>
2088       </xslo:if>
2089     </xslo:for-each>
2090   </xslo:template>
2091   <xslo:template mode="index_subfields" match="marc:datafield[@tag='607']">
2092     <xslo:for-each select="marc:subfield">
2093       <xslo:if test="contains('9', @code)">
2094         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2095           <xslo:value-of select="."/>
2096         </z:index>
2097       </xslo:if>
2098     </xslo:for-each>
2099   </xslo:template>
2100   <xslo:template mode="index_subfields" match="marc:datafield[@tag='608']">
2101     <xslo:for-each select="marc:subfield">
2102       <xslo:if test="contains('9', @code)">
2103         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2104           <xslo:value-of select="."/>
2105         </z:index>
2106       </xslo:if>
2107     </xslo:for-each>
2108   </xslo:template>
2109   <xslo:template mode="index_subfields" match="marc:datafield[@tag='610']">
2110     <xslo:for-each select="marc:subfield">
2111       <xslo:if test="contains('9', @code)">
2112         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2113           <xslo:value-of select="."/>
2114         </z:index>
2115       </xslo:if>
2116     </xslo:for-each>
2117   </xslo:template>
2118   <xslo:template mode="index_subfields" match="marc:datafield[@tag='615']">
2119     <xslo:for-each select="marc:subfield">
2120       <xslo:if test="contains('9', @code)">
2121         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2122           <xslo:value-of select="."/>
2123         </z:index>
2124       </xslo:if>
2125     </xslo:for-each>
2126   </xslo:template>
2127   <xslo:template mode="index_subfields" match="marc:datafield[@tag='616']">
2128     <xslo:for-each select="marc:subfield">
2129       <xslo:if test="contains('9', @code)">
2130         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2131           <xslo:value-of select="."/>
2132         </z:index>
2133       </xslo:if>
2134     </xslo:for-each>
2135   </xslo:template>
2136   <xslo:template mode="index_subfields" match="marc:datafield[@tag='617']">
2137     <xslo:for-each select="marc:subfield">
2138       <xslo:if test="contains('9', @code)">
2139         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2140           <xslo:value-of select="."/>
2141         </z:index>
2142       </xslo:if>
2143     </xslo:for-each>
2144   </xslo:template>
2145   <xslo:template mode="index_subfields" match="marc:datafield[@tag='620']">
2146     <xslo:for-each select="marc:subfield">
2147       <xslo:if test="contains('9', @code)">
2148         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2149           <xslo:value-of select="."/>
2150         </z:index>
2151       </xslo:if>
2152     </xslo:for-each>
2153   </xslo:template>
2154   <xslo:template mode="index_subfields" match="marc:datafield[@tag='621']">
2155     <xslo:for-each select="marc:subfield">
2156       <xslo:if test="contains('9', @code)">
2157         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2158           <xslo:value-of select="."/>
2159         </z:index>
2160       </xslo:if>
2161     </xslo:for-each>
2162   </xslo:template>
2163   <xslo:template mode="index_subfields" match="marc:datafield[@tag='630']">
2164     <xslo:for-each select="marc:subfield">
2165       <xslo:if test="contains('9', @code)">
2166         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2167           <xslo:value-of select="."/>
2168         </z:index>
2169       </xslo:if>
2170     </xslo:for-each>
2171   </xslo:template>
2172   <xslo:template mode="index_subfields" match="marc:datafield[@tag='631']">
2173     <xslo:for-each select="marc:subfield">
2174       <xslo:if test="contains('9', @code)">
2175         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2176           <xslo:value-of select="."/>
2177         </z:index>
2178       </xslo:if>
2179     </xslo:for-each>
2180   </xslo:template>
2181   <xslo:template mode="index_subfields" match="marc:datafield[@tag='632']">
2182     <xslo:for-each select="marc:subfield">
2183       <xslo:if test="contains('9', @code)">
2184         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2185           <xslo:value-of select="."/>
2186         </z:index>
2187       </xslo:if>
2188     </xslo:for-each>
2189   </xslo:template>
2190   <xslo:template mode="index_subfields" match="marc:datafield[@tag='633']">
2191     <xslo:for-each select="marc:subfield">
2192       <xslo:if test="contains('9', @code)">
2193         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2194           <xslo:value-of select="."/>
2195         </z:index>
2196       </xslo:if>
2197     </xslo:for-each>
2198   </xslo:template>
2199   <xslo:template mode="index_subfields" match="marc:datafield[@tag='634']">
2200     <xslo:for-each select="marc:subfield">
2201       <xslo:if test="contains('9', @code)">
2202         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2203           <xslo:value-of select="."/>
2204         </z:index>
2205       </xslo:if>
2206     </xslo:for-each>
2207   </xslo:template>
2208   <xslo:template mode="index_subfields" match="marc:datafield[@tag='635']">
2209     <xslo:for-each select="marc:subfield">
2210       <xslo:if test="contains('9', @code)">
2211         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2212           <xslo:value-of select="."/>
2213         </z:index>
2214       </xslo:if>
2215     </xslo:for-each>
2216   </xslo:template>
2217   <xslo:template mode="index_subfields" match="marc:datafield[@tag='636']">
2218     <xslo:for-each select="marc:subfield">
2219       <xslo:if test="contains('9', @code)">
2220         <z:index name="Koha-Auth-Number:w Koha-Auth-Number:n">
2221           <xslo:value-of select="."/>
2222         </z:index>
2223       </xslo:if>
2224     </xslo:for-each>
2225   </xslo:template>
2226   <xslo:template mode="index_subfields" match="marc:datafield[@tag='675']">
2227     <xslo:for-each select="marc:subfield">
2228       <xslo:if test="contains('a', @code)">
2229         <z:index name="UDC-classification:w UDC-classification:p UDC-classification:s">
2230           <xslo:value-of select="."/>
2231         </z:index>
2232       </xslo:if>
2233     </xslo:for-each>
2234   </xslo:template>
2235   <xslo:template mode="index_subfields" match="marc:datafield[@tag='676']">
2236     <xslo:for-each select="marc:subfield">
2237       <xslo:if test="contains('a', @code)">
2238         <z:index name="Dewey-classification:w Dewey-classification:p Dewey-classification:s">
2239           <xslo:value-of select="."/>
2240         </z:index>
2241       </xslo:if>
2242     </xslo:for-each>
2243   </xslo:template>
2244   <xslo:template mode="index_subfields" match="marc:datafield[@tag='680']">
2245     <xslo:for-each select="marc:subfield">
2246       <xslo:if test="contains('b', @code)">
2247         <z:index name="LC-call-number:s">
2248           <xslo:value-of select="."/>
2249         </z:index>
2250       </xslo:if>
2251     </xslo:for-each>
2252   </xslo:template>
2253   <xslo:template mode="index_subfields" match="marc:datafield[@tag='942']">
2254     <xslo:for-each select="marc:subfield">
2255       <xslo:if test="contains('0', @code)">
2256         <z:index name="totalissues:n totalissues:s">
2257           <xslo:value-of select="."/>
2258         </z:index>
2259       </xslo:if>
2260     </xslo:for-each>
2261   </xslo:template>
2262   <xslo:template mode="index_data_field" match="marc:datafield[@tag='700']">
2263     <z:index name="Author:w Personal-name:w Author:p Personal-name:p Personal-name:p">
2264       <xslo:variable name="raw_heading">
2265         <xslo:for-each select="marc:subfield">
2266           <xslo:if test="position() &gt; 1">
2267             <xslo:value-of select="substring(' ', 1, 1)"/>
2268           </xslo:if>
2269           <xslo:value-of select="."/>
2270         </xslo:for-each>
2271       </xslo:variable>
2272       <xslo:value-of select="normalize-space($raw_heading)"/>
2273     </z:index>
2274   </xslo:template>
2275   <xslo:template mode="index_data_field" match="marc:datafield[@tag='701']">
2276     <z:index name="Author:w Personal-name:w Author:p Personal-name:p Personal-name:p">
2277       <xslo:variable name="raw_heading">
2278         <xslo:for-each select="marc:subfield">
2279           <xslo:if test="position() &gt; 1">
2280             <xslo:value-of select="substring(' ', 1, 1)"/>
2281           </xslo:if>
2282           <xslo:value-of select="."/>
2283         </xslo:for-each>
2284       </xslo:variable>
2285       <xslo:value-of select="normalize-space($raw_heading)"/>
2286     </z:index>
2287   </xslo:template>
2288   <xslo:template mode="index_data_field" match="marc:datafield[@tag='702']">
2289     <z:index name="Author:w Personal-name:w Author:p Personal-name:p Personal-name:p">
2290       <xslo:variable name="raw_heading">
2291         <xslo:for-each select="marc:subfield">
2292           <xslo:if test="position() &gt; 1">
2293             <xslo:value-of select="substring(' ', 1, 1)"/>
2294           </xslo:if>
2295           <xslo:value-of select="."/>
2296         </xslo:for-each>
2297       </xslo:variable>
2298       <xslo:value-of select="normalize-space($raw_heading)"/>
2299     </z:index>
2300   </xslo:template>
2301   <xslo:template mode="index_data_field" match="marc:datafield[@tag='710']">
2302     <z:index name="Author:w Author-name-corporate:w Author-name-conference:w Corporate-name:w Conference-name:w Author:p Author-name-corporate:p Author-name-conference:p Corporate-name:p Conference-name:p">
2303       <xslo:variable name="raw_heading">
2304         <xslo:for-each select="marc:subfield">
2305           <xslo:if test="position() &gt; 1">
2306             <xslo:value-of select="substring(' ', 1, 1)"/>
2307           </xslo:if>
2308           <xslo:value-of select="."/>
2309         </xslo:for-each>
2310       </xslo:variable>
2311       <xslo:value-of select="normalize-space($raw_heading)"/>
2312     </z:index>
2313   </xslo:template>
2314   <xslo:template mode="index_data_field" match="marc:datafield[@tag='711']">
2315     <z:index name="Author:w Author-name-corporate:w Author-name-conference:w Corporate-name:w Conference-name:w Author:p Author-name-corporate:p Author-name-conference:p Corporate-name:p Conference-name:p">
2316       <xslo:variable name="raw_heading">
2317         <xslo:for-each select="marc:subfield">
2318           <xslo:if test="position() &gt; 1">
2319             <xslo:value-of select="substring(' ', 1, 1)"/>
2320           </xslo:if>
2321           <xslo:value-of select="."/>
2322         </xslo:for-each>
2323       </xslo:variable>
2324       <xslo:value-of select="normalize-space($raw_heading)"/>
2325     </z:index>
2326   </xslo:template>
2327   <xslo:template mode="index_data_field" match="marc:datafield[@tag='712']">
2328     <z:index name="Author:w Author-name-corporate:w Author-name-conference:w Corporate-name:w Conference-name:w Author:p Author-name-corporate:p Author-name-conference:p Corporate-name:p Conference-name:p">
2329       <xslo:variable name="raw_heading">
2330         <xslo:for-each select="marc:subfield">
2331           <xslo:if test="position() &gt; 1">
2332             <xslo:value-of select="substring(' ', 1, 1)"/>
2333           </xslo:if>
2334           <xslo:value-of select="."/>
2335         </xslo:for-each>
2336       </xslo:variable>
2337       <xslo:value-of select="normalize-space($raw_heading)"/>
2338     </z:index>
2339   </xslo:template>
2340   <xslo:template mode="index_data_field" match="marc:datafield[@tag='716']">
2341     <z:index name="Author:w Author:p">
2342       <xslo:variable name="raw_heading">
2343         <xslo:for-each select="marc:subfield">
2344           <xslo:if test="position() &gt; 1">
2345             <xslo:value-of select="substring(' ', 1, 1)"/>
2346           </xslo:if>
2347           <xslo:value-of select="."/>
2348         </xslo:for-each>
2349       </xslo:variable>
2350       <xslo:value-of select="normalize-space($raw_heading)"/>
2351     </z:index>
2352   </xslo:template>
2353   <xslo:template mode="index_data_field" match="marc:datafield[@tag='720']">
2354     <z:index name="Author:w Author:p">
2355       <xslo:variable name="raw_heading">
2356         <xslo:for-each select="marc:subfield">
2357           <xslo:if test="position() &gt; 1">
2358             <xslo:value-of select="substring(' ', 1, 1)"/>
2359           </xslo:if>
2360           <xslo:value-of select="."/>
2361         </xslo:for-each>
2362       </xslo:variable>
2363       <xslo:value-of select="normalize-space($raw_heading)"/>
2364     </z:index>
2365   </xslo:template>
2366   <xslo:template mode="index_data_field" match="marc:datafield[@tag='721']">
2367     <z:index name="Author:w Author:p">
2368       <xslo:variable name="raw_heading">
2369         <xslo:for-each select="marc:subfield">
2370           <xslo:if test="position() &gt; 1">
2371             <xslo:value-of select="substring(' ', 1, 1)"/>
2372           </xslo:if>
2373           <xslo:value-of select="."/>
2374         </xslo:for-each>
2375       </xslo:variable>
2376       <xslo:value-of select="normalize-space($raw_heading)"/>
2377     </z:index>
2378   </xslo:template>
2379   <xslo:template mode="index_data_field" match="marc:datafield[@tag='722']">
2380     <z:index name="Author:w Author:p">
2381       <xslo:variable name="raw_heading">
2382         <xslo:for-each select="marc:subfield">
2383           <xslo:if test="position() &gt; 1">
2384             <xslo:value-of select="substring(' ', 1, 1)"/>
2385           </xslo:if>
2386           <xslo:value-of select="."/>
2387         </xslo:for-each>
2388       </xslo:variable>
2389       <xslo:value-of select="normalize-space($raw_heading)"/>
2390     </z:index>
2391   </xslo:template>
2392   <xslo:template mode="index_data_field" match="marc:datafield[@tag='730']">
2393     <z:index name="Author:w Author:p">
2394       <xslo:variable name="raw_heading">
2395         <xslo:for-each select="marc:subfield">
2396           <xslo:if test="position() &gt; 1">
2397             <xslo:value-of select="substring(' ', 1, 1)"/>
2398           </xslo:if>
2399           <xslo:value-of select="."/>
2400         </xslo:for-each>
2401       </xslo:variable>
2402       <xslo:value-of select="normalize-space($raw_heading)"/>
2403     </z:index>
2404   </xslo:template>
2405   <xslo:template mode="index_data_field" match="marc:datafield[@tag='205']">
2406     <z:index name="Title:w Title:p">
2407       <xslo:variable name="raw_heading">
2408         <xslo:for-each select="marc:subfield">
2409           <xslo:if test="position() &gt; 1">
2410             <xslo:value-of select="substring(' ', 1, 1)"/>
2411           </xslo:if>
2412           <xslo:value-of select="."/>
2413         </xslo:for-each>
2414       </xslo:variable>
2415       <xslo:value-of select="normalize-space($raw_heading)"/>
2416     </z:index>
2417   </xslo:template>
2418   <xslo:template mode="index_data_field" match="marc:datafield[@tag='207']">
2419     <z:index name="Serials:w Serials:p">
2420       <xslo:variable name="raw_heading">
2421         <xslo:for-each select="marc:subfield">
2422           <xslo:if test="position() &gt; 1">
2423             <xslo:value-of select="substring(' ', 1, 1)"/>
2424           </xslo:if>
2425           <xslo:value-of select="."/>
2426         </xslo:for-each>
2427       </xslo:variable>
2428       <xslo:value-of select="normalize-space($raw_heading)"/>
2429     </z:index>
2430   </xslo:template>
2431   <xslo:template mode="index_data_field" match="marc:datafield[@tag='208']">
2432     <z:index name="Printed-music:w Printed-music:p">
2433       <xslo:variable name="raw_heading">
2434         <xslo:for-each select="marc:subfield">
2435           <xslo:if test="position() &gt; 1">
2436             <xslo:value-of select="substring(' ', 1, 1)"/>
2437           </xslo:if>
2438           <xslo:value-of select="."/>
2439         </xslo:for-each>
2440       </xslo:variable>
2441       <xslo:value-of select="normalize-space($raw_heading)"/>
2442     </z:index>
2443   </xslo:template>
2444   <xslo:template mode="index_data_field" match="marc:datafield[@tag='215']">
2445     <z:index name="Extent:w">
2446       <xslo:variable name="raw_heading">
2447         <xslo:for-each select="marc:subfield">
2448           <xslo:if test="position() &gt; 1">
2449             <xslo:value-of select="substring(' ', 1, 1)"/>
2450           </xslo:if>
2451           <xslo:value-of select="."/>
2452         </xslo:for-each>
2453       </xslo:variable>
2454       <xslo:value-of select="normalize-space($raw_heading)"/>
2455     </z:index>
2456   </xslo:template>
2457   <xslo:template mode="index_data_field" match="marc:datafield[@tag='308']">
2458     <z:index name="Note:w Note:p">
2459       <xslo:variable name="raw_heading">
2460         <xslo:for-each select="marc:subfield">
2461           <xslo:if test="position() &gt; 1">
2462             <xslo:value-of select="substring(' ', 1, 1)"/>
2463           </xslo:if>
2464           <xslo:value-of select="."/>
2465         </xslo:for-each>
2466       </xslo:variable>
2467       <xslo:value-of select="normalize-space($raw_heading)"/>
2468     </z:index>
2469   </xslo:template>
2470   <xslo:template mode="index_data_field" match="marc:datafield[@tag='328']">
2471     <z:index name="Note:w Note:p">
2472       <xslo:variable name="raw_heading">
2473         <xslo:for-each select="marc:subfield">
2474           <xslo:if test="position() &gt; 1">
2475             <xslo:value-of select="substring(' ', 1, 1)"/>
2476           </xslo:if>
2477           <xslo:value-of select="."/>
2478         </xslo:for-each>
2479       </xslo:variable>
2480       <xslo:value-of select="normalize-space($raw_heading)"/>
2481     </z:index>
2482   </xslo:template>
2483   <xslo:template mode="index_data_field" match="marc:datafield[@tag='500']">
2484     <z:index name="Title:w Title:p">
2485       <xslo:variable name="raw_heading">
2486         <xslo:for-each select="marc:subfield">
2487           <xslo:if test="position() &gt; 1">
2488             <xslo:value-of select="substring(' ', 1, 1)"/>
2489           </xslo:if>
2490           <xslo:value-of select="."/>
2491         </xslo:for-each>
2492       </xslo:variable>
2493       <xslo:value-of select="normalize-space($raw_heading)"/>
2494     </z:index>
2495   </xslo:template>
2496   <xslo:template mode="index_data_field" match="marc:datafield[@tag='501']">
2497     <z:index name="Title:w Title:p">
2498       <xslo:variable name="raw_heading">
2499         <xslo:for-each select="marc:subfield">
2500           <xslo:if test="position() &gt; 1">
2501             <xslo:value-of select="substring(' ', 1, 1)"/>
2502           </xslo:if>
2503           <xslo:value-of select="."/>
2504         </xslo:for-each>
2505       </xslo:variable>
2506       <xslo:value-of select="normalize-space($raw_heading)"/>
2507     </z:index>
2508   </xslo:template>
2509   <xslo:template mode="index_data_field" match="marc:datafield[@tag='503']">
2510     <z:index name="Title:w Title:p">
2511       <xslo:variable name="raw_heading">
2512         <xslo:for-each select="marc:subfield">
2513           <xslo:if test="position() &gt; 1">
2514             <xslo:value-of select="substring(' ', 1, 1)"/>
2515           </xslo:if>
2516           <xslo:value-of select="."/>
2517         </xslo:for-each>
2518       </xslo:variable>
2519       <xslo:value-of select="normalize-space($raw_heading)"/>
2520     </z:index>
2521   </xslo:template>
2522   <xslo:template mode="index_data_field" match="marc:datafield[@tag='510']">
2523     <z:index name="Title:w Title:p">
2524       <xslo:variable name="raw_heading">
2525         <xslo:for-each select="marc:subfield">
2526           <xslo:if test="position() &gt; 1">
2527             <xslo:value-of select="substring(' ', 1, 1)"/>
2528           </xslo:if>
2529           <xslo:value-of select="."/>
2530         </xslo:for-each>
2531       </xslo:variable>
2532       <xslo:value-of select="normalize-space($raw_heading)"/>
2533     </z:index>
2534   </xslo:template>
2535   <xslo:template mode="index_data_field" match="marc:datafield[@tag='512']">
2536     <z:index name="Title:w Title:p">
2537       <xslo:variable name="raw_heading">
2538         <xslo:for-each select="marc:subfield">
2539           <xslo:if test="position() &gt; 1">
2540             <xslo:value-of select="substring(' ', 1, 1)"/>
2541           </xslo:if>
2542           <xslo:value-of select="."/>
2543         </xslo:for-each>
2544       </xslo:variable>
2545       <xslo:value-of select="normalize-space($raw_heading)"/>
2546     </z:index>
2547   </xslo:template>
2548   <xslo:template mode="index_data_field" match="marc:datafield[@tag='513']">
2549     <z:index name="Title:w Title:p">
2550       <xslo:variable name="raw_heading">
2551         <xslo:for-each select="marc:subfield">
2552           <xslo:if test="position() &gt; 1">
2553             <xslo:value-of select="substring(' ', 1, 1)"/>
2554           </xslo:if>
2555           <xslo:value-of select="."/>
2556         </xslo:for-each>
2557       </xslo:variable>
2558       <xslo:value-of select="normalize-space($raw_heading)"/>
2559     </z:index>
2560   </xslo:template>
2561   <xslo:template mode="index_data_field" match="marc:datafield[@tag='514']">
2562     <z:index name="Title:w Title:p">
2563       <xslo:variable name="raw_heading">
2564         <xslo:for-each select="marc:subfield">
2565           <xslo:if test="position() &gt; 1">
2566             <xslo:value-of select="substring(' ', 1, 1)"/>
2567           </xslo:if>
2568           <xslo:value-of select="."/>
2569         </xslo:for-each>
2570       </xslo:variable>
2571       <xslo:value-of select="normalize-space($raw_heading)"/>
2572     </z:index>
2573   </xslo:template>
2574   <xslo:template mode="index_data_field" match="marc:datafield[@tag='515']">
2575     <z:index name="Title:w Title:p">
2576       <xslo:variable name="raw_heading">
2577         <xslo:for-each select="marc:subfield">
2578           <xslo:if test="position() &gt; 1">
2579             <xslo:value-of select="substring(' ', 1, 1)"/>
2580           </xslo:if>
2581           <xslo:value-of select="."/>
2582         </xslo:for-each>
2583       </xslo:variable>
2584       <xslo:value-of select="normalize-space($raw_heading)"/>
2585     </z:index>
2586   </xslo:template>
2587   <xslo:template mode="index_data_field" match="marc:datafield[@tag='516']">
2588     <z:index name="Title:w Title:p">
2589       <xslo:variable name="raw_heading">
2590         <xslo:for-each select="marc:subfield">
2591           <xslo:if test="position() &gt; 1">
2592             <xslo:value-of select="substring(' ', 1, 1)"/>
2593           </xslo:if>
2594           <xslo:value-of select="."/>
2595         </xslo:for-each>
2596       </xslo:variable>
2597       <xslo:value-of select="normalize-space($raw_heading)"/>
2598     </z:index>
2599   </xslo:template>
2600   <xslo:template mode="index_data_field" match="marc:datafield[@tag='517']">
2601     <z:index name="Title:w Title:p">
2602       <xslo:variable name="raw_heading">
2603         <xslo:for-each select="marc:subfield">
2604           <xslo:if test="position() &gt; 1">
2605             <xslo:value-of select="substring(' ', 1, 1)"/>
2606           </xslo:if>
2607           <xslo:value-of select="."/>
2608         </xslo:for-each>
2609       </xslo:variable>
2610       <xslo:value-of select="normalize-space($raw_heading)"/>
2611     </z:index>
2612   </xslo:template>
2613   <xslo:template mode="index_data_field" match="marc:datafield[@tag='518']">
2614     <z:index name="Title:w Title:p">
2615       <xslo:variable name="raw_heading">
2616         <xslo:for-each select="marc:subfield">
2617           <xslo:if test="position() &gt; 1">
2618             <xslo:value-of select="substring(' ', 1, 1)"/>
2619           </xslo:if>
2620           <xslo:value-of select="."/>
2621         </xslo:for-each>
2622       </xslo:variable>
2623       <xslo:value-of select="normalize-space($raw_heading)"/>
2624     </z:index>
2625   </xslo:template>
2626   <xslo:template mode="index_data_field" match="marc:datafield[@tag='519']">
2627     <z:index name="Title:w Title:p">
2628       <xslo:variable name="raw_heading">
2629         <xslo:for-each select="marc:subfield">
2630           <xslo:if test="position() &gt; 1">
2631             <xslo:value-of select="substring(' ', 1, 1)"/>
2632           </xslo:if>
2633           <xslo:value-of select="."/>
2634         </xslo:for-each>
2635       </xslo:variable>
2636       <xslo:value-of select="normalize-space($raw_heading)"/>
2637     </z:index>
2638   </xslo:template>
2639   <xslo:template mode="index_data_field" match="marc:datafield[@tag='520']">
2640     <z:index name="Title:w Title:p">
2641       <xslo:variable name="raw_heading">
2642         <xslo:for-each select="marc:subfield">
2643           <xslo:if test="position() &gt; 1">
2644             <xslo:value-of select="substring(' ', 1, 1)"/>
2645           </xslo:if>
2646           <xslo:value-of select="."/>
2647         </xslo:for-each>
2648       </xslo:variable>
2649       <xslo:value-of select="normalize-space($raw_heading)"/>
2650     </z:index>
2651   </xslo:template>
2652   <xslo:template mode="index_data_field" match="marc:datafield[@tag='530']">
2653     <z:index name="Title:w Title:p">
2654       <xslo:variable name="raw_heading">
2655         <xslo:for-each select="marc:subfield">
2656           <xslo:if test="position() &gt; 1">
2657             <xslo:value-of select="substring(' ', 1, 1)"/>
2658           </xslo:if>
2659           <xslo:value-of select="."/>
2660         </xslo:for-each>
2661       </xslo:variable>
2662       <xslo:value-of select="normalize-space($raw_heading)"/>
2663     </z:index>
2664   </xslo:template>
2665   <xslo:template mode="index_data_field" match="marc:datafield[@tag='531']">
2666     <z:index name="Title:w Title:p">
2667       <xslo:variable name="raw_heading">
2668         <xslo:for-each select="marc:subfield">
2669           <xslo:if test="position() &gt; 1">
2670             <xslo:value-of select="substring(' ', 1, 1)"/>
2671           </xslo:if>
2672           <xslo:value-of select="."/>
2673         </xslo:for-each>
2674       </xslo:variable>
2675       <xslo:value-of select="normalize-space($raw_heading)"/>
2676     </z:index>
2677   </xslo:template>
2678   <xslo:template mode="index_data_field" match="marc:datafield[@tag='532']">
2679     <z:index name="Title:w Title:p">
2680       <xslo:variable name="raw_heading">
2681         <xslo:for-each select="marc:subfield">
2682           <xslo:if test="position() &gt; 1">
2683             <xslo:value-of select="substring(' ', 1, 1)"/>
2684           </xslo:if>
2685           <xslo:value-of select="."/>
2686         </xslo:for-each>
2687       </xslo:variable>
2688       <xslo:value-of select="normalize-space($raw_heading)"/>
2689     </z:index>
2690   </xslo:template>
2691   <xslo:template mode="index_data_field" match="marc:datafield[@tag='540']">
2692     <z:index name="Title:w Title:p">
2693       <xslo:variable name="raw_heading">
2694         <xslo:for-each select="marc:subfield">
2695           <xslo:if test="position() &gt; 1">
2696             <xslo:value-of select="substring(' ', 1, 1)"/>
2697           </xslo:if>
2698           <xslo:value-of select="."/>
2699         </xslo:for-each>
2700       </xslo:variable>
2701       <xslo:value-of select="normalize-space($raw_heading)"/>
2702     </z:index>
2703   </xslo:template>
2704   <xslo:template mode="index_data_field" match="marc:datafield[@tag='541']">
2705     <z:index name="Title:w Title:p">
2706       <xslo:variable name="raw_heading">
2707         <xslo:for-each select="marc:subfield">
2708           <xslo:if test="position() &gt; 1">
2709             <xslo:value-of select="substring(' ', 1, 1)"/>
2710           </xslo:if>
2711           <xslo:value-of select="."/>
2712         </xslo:for-each>
2713       </xslo:variable>
2714       <xslo:value-of select="normalize-space($raw_heading)"/>
2715     </z:index>
2716   </xslo:template>
2717   <xslo:template mode="index_data_field" match="marc:datafield[@tag='545']">
2718     <z:index name="Title:w Title:p">
2719       <xslo:variable name="raw_heading">
2720         <xslo:for-each select="marc:subfield">
2721           <xslo:if test="position() &gt; 1">
2722             <xslo:value-of select="substring(' ', 1, 1)"/>
2723           </xslo:if>
2724           <xslo:value-of select="."/>
2725         </xslo:for-each>
2726       </xslo:variable>
2727       <xslo:value-of select="normalize-space($raw_heading)"/>
2728     </z:index>
2729   </xslo:template>
2730   <xslo:template mode="index_data_field" match="marc:datafield[@tag='560']">
2731     <z:index name="Title:w Title:p">
2732       <xslo:variable name="raw_heading">
2733         <xslo:for-each select="marc:subfield">
2734           <xslo:if test="position() &gt; 1">
2735             <xslo:value-of select="substring(' ', 1, 1)"/>
2736           </xslo:if>
2737           <xslo:value-of select="."/>
2738         </xslo:for-each>
2739       </xslo:variable>
2740       <xslo:value-of select="normalize-space($raw_heading)"/>
2741     </z:index>
2742   </xslo:template>
2743   <xslo:template mode="index_data_field" match="marc:datafield[@tag='600']">
2744     <z:index name="Subject:w Subject:p">
2745       <xslo:variable name="raw_heading">
2746         <xslo:for-each select="marc:subfield">
2747           <xslo:if test="position() &gt; 1">
2748             <xslo:value-of select="substring(' ', 1, 1)"/>
2749           </xslo:if>
2750           <xslo:value-of select="."/>
2751         </xslo:for-each>
2752       </xslo:variable>
2753       <xslo:value-of select="normalize-space($raw_heading)"/>
2754     </z:index>
2755   </xslo:template>
2756   <xslo:template mode="index_data_field" match="marc:datafield[@tag='601']">
2757     <z:index name="Subject:w Subject:p">
2758       <xslo:variable name="raw_heading">
2759         <xslo:for-each select="marc:subfield">
2760           <xslo:if test="position() &gt; 1">
2761             <xslo:value-of select="substring(' ', 1, 1)"/>
2762           </xslo:if>
2763           <xslo:value-of select="."/>
2764         </xslo:for-each>
2765       </xslo:variable>
2766       <xslo:value-of select="normalize-space($raw_heading)"/>
2767     </z:index>
2768   </xslo:template>
2769   <xslo:template mode="index_data_field" match="marc:datafield[@tag='602']">
2770     <z:index name="Subject:w Subject:p">
2771       <xslo:variable name="raw_heading">
2772         <xslo:for-each select="marc:subfield">
2773           <xslo:if test="position() &gt; 1">
2774             <xslo:value-of select="substring(' ', 1, 1)"/>
2775           </xslo:if>
2776           <xslo:value-of select="."/>
2777         </xslo:for-each>
2778       </xslo:variable>
2779       <xslo:value-of select="normalize-space($raw_heading)"/>
2780     </z:index>
2781   </xslo:template>
2782   <xslo:template mode="index_data_field" match="marc:datafield[@tag='604']">
2783     <z:index name="Subject:w Subject:p">
2784       <xslo:variable name="raw_heading">
2785         <xslo:for-each select="marc:subfield">
2786           <xslo:if test="position() &gt; 1">
2787             <xslo:value-of select="substring(' ', 1, 1)"/>
2788           </xslo:if>
2789           <xslo:value-of select="."/>
2790         </xslo:for-each>
2791       </xslo:variable>
2792       <xslo:value-of select="normalize-space($raw_heading)"/>
2793     </z:index>
2794   </xslo:template>
2795   <xslo:template mode="index_data_field" match="marc:datafield[@tag='605']">
2796     <z:index name="Subject:w Subject:p">
2797       <xslo:variable name="raw_heading">
2798         <xslo:for-each select="marc:subfield">
2799           <xslo:if test="position() &gt; 1">
2800             <xslo:value-of select="substring(' ', 1, 1)"/>
2801           </xslo:if>
2802           <xslo:value-of select="."/>
2803         </xslo:for-each>
2804       </xslo:variable>
2805       <xslo:value-of select="normalize-space($raw_heading)"/>
2806     </z:index>
2807   </xslo:template>
2808   <xslo:template mode="index_data_field" match="marc:datafield[@tag='606']">
2809     <z:index name="Subject:w Subject:p">
2810       <xslo:variable name="raw_heading">
2811         <xslo:for-each select="marc:subfield">
2812           <xslo:if test="position() &gt; 1">
2813             <xslo:value-of select="substring(' ', 1, 1)"/>
2814           </xslo:if>
2815           <xslo:value-of select="."/>
2816         </xslo:for-each>
2817       </xslo:variable>
2818       <xslo:value-of select="normalize-space($raw_heading)"/>
2819     </z:index>
2820   </xslo:template>
2821   <xslo:template mode="index_data_field" match="marc:datafield[@tag='607']">
2822     <z:index name="Subject:w Subject:p">
2823       <xslo:variable name="raw_heading">
2824         <xslo:for-each select="marc:subfield">
2825           <xslo:if test="position() &gt; 1">
2826             <xslo:value-of select="substring(' ', 1, 1)"/>
2827           </xslo:if>
2828           <xslo:value-of select="."/>
2829         </xslo:for-each>
2830       </xslo:variable>
2831       <xslo:value-of select="normalize-space($raw_heading)"/>
2832     </z:index>
2833   </xslo:template>
2834   <xslo:template mode="index_data_field" match="marc:datafield[@tag='608']">
2835     <z:index name="Subject:w Subject:p">
2836       <xslo:variable name="raw_heading">
2837         <xslo:for-each select="marc:subfield">
2838           <xslo:if test="position() &gt; 1">
2839             <xslo:value-of select="substring(' ', 1, 1)"/>
2840           </xslo:if>
2841           <xslo:value-of select="."/>
2842         </xslo:for-each>
2843       </xslo:variable>
2844       <xslo:value-of select="normalize-space($raw_heading)"/>
2845     </z:index>
2846   </xslo:template>
2847   <xslo:template mode="index_data_field" match="marc:datafield[@tag='610']">
2848     <z:index name="Subject:w Subject:p">
2849       <xslo:variable name="raw_heading">
2850         <xslo:for-each select="marc:subfield">
2851           <xslo:if test="position() &gt; 1">
2852             <xslo:value-of select="substring(' ', 1, 1)"/>
2853           </xslo:if>
2854           <xslo:value-of select="."/>
2855         </xslo:for-each>
2856       </xslo:variable>
2857       <xslo:value-of select="normalize-space($raw_heading)"/>
2858     </z:index>
2859   </xslo:template>
2860   <xslo:template mode="index_data_field" match="marc:datafield[@tag='615']">
2861     <z:index name="Subject:w Subject:p">
2862       <xslo:variable name="raw_heading">
2863         <xslo:for-each select="marc:subfield">
2864           <xslo:if test="position() &gt; 1">
2865             <xslo:value-of select="substring(' ', 1, 1)"/>
2866           </xslo:if>
2867           <xslo:value-of select="."/>
2868         </xslo:for-each>
2869       </xslo:variable>
2870       <xslo:value-of select="normalize-space($raw_heading)"/>
2871     </z:index>
2872   </xslo:template>
2873   <xslo:template mode="index_data_field" match="marc:datafield[@tag='616']">
2874     <z:index name="Subject:w Subject:p">
2875       <xslo:variable name="raw_heading">
2876         <xslo:for-each select="marc:subfield">
2877           <xslo:if test="position() &gt; 1">
2878             <xslo:value-of select="substring(' ', 1, 1)"/>
2879           </xslo:if>
2880           <xslo:value-of select="."/>
2881         </xslo:for-each>
2882       </xslo:variable>
2883       <xslo:value-of select="normalize-space($raw_heading)"/>
2884     </z:index>
2885   </xslo:template>
2886   <xslo:template mode="index_data_field" match="marc:datafield[@tag='617']">
2887     <z:index name="Subject:w Subject:p">
2888       <xslo:variable name="raw_heading">
2889         <xslo:for-each select="marc:subfield">
2890           <xslo:if test="position() &gt; 1">
2891             <xslo:value-of select="substring(' ', 1, 1)"/>
2892           </xslo:if>
2893           <xslo:value-of select="."/>
2894         </xslo:for-each>
2895       </xslo:variable>
2896       <xslo:value-of select="normalize-space($raw_heading)"/>
2897     </z:index>
2898   </xslo:template>
2899   <xslo:template mode="index_data_field" match="marc:datafield[@tag='620']">
2900     <z:index name="Subject:w Subject:p">
2901       <xslo:variable name="raw_heading">
2902         <xslo:for-each select="marc:subfield">
2903           <xslo:if test="position() &gt; 1">
2904             <xslo:value-of select="substring(' ', 1, 1)"/>
2905           </xslo:if>
2906           <xslo:value-of select="."/>
2907         </xslo:for-each>
2908       </xslo:variable>
2909       <xslo:value-of select="normalize-space($raw_heading)"/>
2910     </z:index>
2911   </xslo:template>
2912   <xslo:template mode="index_data_field" match="marc:datafield[@tag='621']">
2913     <z:index name="Subject:w Subject:p">
2914       <xslo:variable name="raw_heading">
2915         <xslo:for-each select="marc:subfield">
2916           <xslo:if test="position() &gt; 1">
2917             <xslo:value-of select="substring(' ', 1, 1)"/>
2918           </xslo:if>
2919           <xslo:value-of select="."/>
2920         </xslo:for-each>
2921       </xslo:variable>
2922       <xslo:value-of select="normalize-space($raw_heading)"/>
2923     </z:index>
2924   </xslo:template>
2925   <xslo:template mode="index_data_field" match="marc:datafield[@tag='603']">
2926     <z:index name="Subject:w Subject:p">
2927       <xslo:variable name="raw_heading">
2928         <xslo:for-each select="marc:subfield">
2929           <xslo:if test="position() &gt; 1">
2930             <xslo:value-of select="substring(' ', 1, 1)"/>
2931           </xslo:if>
2932           <xslo:value-of select="."/>
2933         </xslo:for-each>
2934       </xslo:variable>
2935       <xslo:value-of select="normalize-space($raw_heading)"/>
2936     </z:index>
2937   </xslo:template>
2938   <xslo:template mode="index_data_field" match="marc:datafield[@tag='630']">
2939     <z:index name="Subject:w Subject:p">
2940       <xslo:variable name="raw_heading">
2941         <xslo:for-each select="marc:subfield">
2942           <xslo:if test="position() &gt; 1">
2943             <xslo:value-of select="substring(' ', 1, 1)"/>
2944           </xslo:if>
2945           <xslo:value-of select="."/>
2946         </xslo:for-each>
2947       </xslo:variable>
2948       <xslo:value-of select="normalize-space($raw_heading)"/>
2949     </z:index>
2950   </xslo:template>
2951   <xslo:template mode="index_data_field" match="marc:datafield[@tag='631']">
2952     <z:index name="Subject:w Subject:p">
2953       <xslo:variable name="raw_heading">
2954         <xslo:for-each select="marc:subfield">
2955           <xslo:if test="position() &gt; 1">
2956             <xslo:value-of select="substring(' ', 1, 1)"/>
2957           </xslo:if>
2958           <xslo:value-of select="."/>
2959         </xslo:for-each>
2960       </xslo:variable>
2961       <xslo:value-of select="normalize-space($raw_heading)"/>
2962     </z:index>
2963   </xslo:template>
2964   <xslo:template mode="index_data_field" match="marc:datafield[@tag='632']">
2965     <z:index name="Subject:w Subject:p">
2966       <xslo:variable name="raw_heading">
2967         <xslo:for-each select="marc:subfield">
2968           <xslo:if test="position() &gt; 1">
2969             <xslo:value-of select="substring(' ', 1, 1)"/>
2970           </xslo:if>
2971           <xslo:value-of select="."/>
2972         </xslo:for-each>
2973       </xslo:variable>
2974       <xslo:value-of select="normalize-space($raw_heading)"/>
2975     </z:index>
2976   </xslo:template>
2977   <xslo:template mode="index_data_field" match="marc:datafield[@tag='633']">
2978     <z:index name="Subject:w Subject:p">
2979       <xslo:variable name="raw_heading">
2980         <xslo:for-each select="marc:subfield">
2981           <xslo:if test="position() &gt; 1">
2982             <xslo:value-of select="substring(' ', 1, 1)"/>
2983           </xslo:if>
2984           <xslo:value-of select="."/>
2985         </xslo:for-each>
2986       </xslo:variable>
2987       <xslo:value-of select="normalize-space($raw_heading)"/>
2988     </z:index>
2989   </xslo:template>
2990   <xslo:template mode="index_data_field" match="marc:datafield[@tag='634']">
2991     <z:index name="Subject:w Subject:p">
2992       <xslo:variable name="raw_heading">
2993         <xslo:for-each select="marc:subfield">
2994           <xslo:if test="position() &gt; 1">
2995             <xslo:value-of select="substring(' ', 1, 1)"/>
2996           </xslo:if>
2997           <xslo:value-of select="."/>
2998         </xslo:for-each>
2999       </xslo:variable>
3000       <xslo:value-of select="normalize-space($raw_heading)"/>
3001     </z:index>
3002   </xslo:template>
3003   <xslo:template mode="index_data_field" match="marc:datafield[@tag='635']">
3004     <z:index name="Subject:w Subject:p">
3005       <xslo:variable name="raw_heading">
3006         <xslo:for-each select="marc:subfield">
3007           <xslo:if test="position() &gt; 1">
3008             <xslo:value-of select="substring(' ', 1, 1)"/>
3009           </xslo:if>
3010           <xslo:value-of select="."/>
3011         </xslo:for-each>
3012       </xslo:variable>
3013       <xslo:value-of select="normalize-space($raw_heading)"/>
3014     </z:index>
3015   </xslo:template>
3016   <xslo:template mode="index_data_field" match="marc:datafield[@tag='636']">
3017     <z:index name="Subject:w Subject:p">
3018       <xslo:variable name="raw_heading">
3019         <xslo:for-each select="marc:subfield">
3020           <xslo:if test="position() &gt; 1">
3021             <xslo:value-of select="substring(' ', 1, 1)"/>
3022           </xslo:if>
3023           <xslo:value-of select="."/>
3024         </xslo:for-each>
3025       </xslo:variable>
3026       <xslo:value-of select="normalize-space($raw_heading)"/>
3027     </z:index>
3028   </xslo:template>
3029   <xslo:template mode="index_data_field" match="marc:datafield[@tag='646']">
3030     <z:index name="Subject:w Subject:p">
3031       <xslo:variable name="raw_heading">
3032         <xslo:for-each select="marc:subfield">
3033           <xslo:if test="position() &gt; 1">
3034             <xslo:value-of select="substring(' ', 1, 1)"/>
3035           </xslo:if>
3036           <xslo:value-of select="."/>
3037         </xslo:for-each>
3038       </xslo:variable>
3039       <xslo:value-of select="normalize-space($raw_heading)"/>
3040     </z:index>
3041   </xslo:template>
3042   <xslo:template mode="index_data_field" match="marc:datafield[@tag='670']">
3043     <z:index name="Subject-precis:w Subject-precis:p">
3044       <xslo:variable name="raw_heading">
3045         <xslo:for-each select="marc:subfield">
3046           <xslo:if test="position() &gt; 1">
3047             <xslo:value-of select="substring(' ', 1, 1)"/>
3048           </xslo:if>
3049           <xslo:value-of select="."/>
3050         </xslo:for-each>
3051       </xslo:variable>
3052       <xslo:value-of select="normalize-space($raw_heading)"/>
3053     </z:index>
3054   </xslo:template>
3055   <xslo:template mode="index_data_field" match="marc:datafield[@tag='680']">
3056     <z:index name="LC-call-number:w LC-call-number:p">
3057       <xslo:variable name="raw_heading">
3058         <xslo:for-each select="marc:subfield">
3059           <xslo:if test="position() &gt; 1">
3060             <xslo:value-of select="substring(' ', 1, 1)"/>
3061           </xslo:if>
3062           <xslo:value-of select="."/>
3063         </xslo:for-each>
3064       </xslo:variable>
3065       <xslo:value-of select="normalize-space($raw_heading)"/>
3066     </z:index>
3067   </xslo:template>
3068   <xslo:template mode="index_data_field" match="marc:datafield[@tag='686']">
3069     <z:index name="Local-classification:w Local-classification:p">
3070       <xslo:variable name="raw_heading">
3071         <xslo:for-each select="marc:subfield">
3072           <xslo:if test="position() &gt; 1">
3073             <xslo:value-of select="substring(' ', 1, 1)"/>
3074           </xslo:if>
3075           <xslo:value-of select="."/>
3076         </xslo:for-each>
3077       </xslo:variable>
3078       <xslo:value-of select="normalize-space($raw_heading)"/>
3079     </z:index>
3080   </xslo:template>
3081   <xslo:template mode="index_data_field" match="marc:datafield[@tag='995']">
3082     <z:index name="item:w">
3083       <xslo:variable name="raw_heading">
3084         <xslo:for-each select="marc:subfield">
3085           <xslo:if test="position() &gt; 1">
3086             <xslo:value-of select="substring(' ', 1, 1)"/>
3087           </xslo:if>
3088           <xslo:value-of select="."/>
3089         </xslo:for-each>
3090       </xslo:variable>
3091       <xslo:value-of select="normalize-space($raw_heading)"/>
3092     </z:index>
3093   </xslo:template>
3094   <xslo:template mode="index_all" match="text()">
3095     <z:index name="Any:w Any:p">
3096       <xslo:value-of select="."/>
3097     </z:index>
3098   </xslo:template>
3099   <xslo:template name="chopPunctuation">
3100     <xslo:param name="chopString"/>
3101     <xslo:variable name="length" select="string-length($chopString)"/>
3102     <xslo:choose>
3103       <xslo:when test="$length=0"/>
3104       <xslo:when test="contains('-,.:=;!%/', substring($chopString,$length,1))">
3105         <xslo:call-template name="chopPunctuation">
3106           <xslo:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
3107         </xslo:call-template>
3108       </xslo:when>
3109       <xslo:when test="not($chopString)"/>
3110       <xslo:otherwise>
3111         <xslo:value-of select="$chopString"/>
3112       </xslo:otherwise>
3113     </xslo:choose>
3114     <xslo:text/>
3115   </xslo:template>
3116 </xslo:stylesheet>