[Koha-patches] [PATCH][alternative patch] Bug 7421 Add UNIMARC DOM Filter

Mathieu Saby mathieu.saby at univ-rennes2.fr
Sun Apr 7 18:45:11 CEST 2013


I took as a base the patch of F. Demians, but made a lot of changes, so 
I think it is more logical to create a new patch as the behavior is not 
the same as previous patch.
I tried to define DOM config files as a "miror" of record.abs, so the 
behavior be the same.
If it is OK, we will be able to improve indexing later, for example 
suppressing warns, managing indicators or subdivisions, etc.
I made some little changes to record.abs :
- comments
- 216 was indexed in Conference-name as well as Trademark. I supposes 
"Conference-name" is an error, so I indexed only in Trademark
- index 2 new notes : 340 / 356

The only difference between record.abs and DOM is that DOM config files 
does not index complete fields, but subfields.
Ex :
melm 200 ===> <kohaidx:index_subfields tag="200" subfields="abcdfgjxyz">
I took all the subfields from the UNIMARC Authorities manual. The only 
subfields not indexed are numeric subfields : $7, $8 for language of 
record, and $0,2,3,5,6 for 4XX/5XX/7XX

To test :
- index a set of bib and auth records with GRS-1
- make some searches on different kind of authorities
- index the same records with DOM
- make the same searches
- You are not supposed to see differences

---
  .../authorities/authority-koha-indexdefs.xml       |  683 
++++++++++++++++++++
  .../authorities/authority-zebra-indexdefs.xsl      |  669 
+++++++++++++++++++
  .../marc_defs/unimarc/authorities/record.abs       |   71 +-
  3 files changed, 1401 insertions(+), 22 deletions(-)
  create mode 100644 
etc/zebradb/marc_defs/unimarc/authorities/authority-koha-indexdefs.xml
  create mode 100644 
etc/zebradb/marc_defs/unimarc/authorities/authority-zebra-indexdefs.xsl

diff --git 
a/etc/zebradb/marc_defs/unimarc/authorities/authority-koha-indexdefs.xml 
b/etc/zebradb/marc_defs/unimarc/authorities/authority-koha-indexdefs.xml
new file mode 100644
index 0000000..5fb97fd
--- /dev/null
+++ b/etc/zebradb/marc_defs/unimarc/authorities/authority-koha-indexdefs.xml
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is the canonical source for the authority DOM indexing 
configuration
+for UNIMARC.. To generate the authority-zebra-indexdefs.xsl file that 
Zebra uses,
+run the following command:
+`xsltproc koha-indexdefs-to-zebra.xsl authority-koha-indexdefs.xml >
+authority-zebra-indexdefs.xsl`
+-->
+<kohaidx:index_defs 
xmlns:kohaidx="http://www.koha-community.org/schemas/index-defs">
+  <id>marc:controlfield[@tag='001']</id>
+  <!-- Original record ID -->
+  <kohaidx:index_control_field tag="001">
+ <kohaidx:target_index>Local-Number:w</kohaidx:target_index>
+ <kohaidx:target_index>Local-Number:s</kohaidx:target_index>
+ <kohaidx:target_index>Local-Number:n</kohaidx:target_index>
+  </kohaidx:index_control_field>
+
+  <!-- Personal name headings -->
+  <kohaidx:index_subfields tag="200" subfields="abcdfgjxyz">
+ <kohaidx:target_index>Personal-name:w</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="200" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="400" subfields="abcdfgjxyz">
+ <kohaidx:target_index>Personal-name-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="500" subfields="abcdfgjxyz">
+ <kohaidx:target_index>Personal-name-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="700" subfields="a">
+ <kohaidx:target_index>Personal-name-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Personal-name-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Corporate name headings -->
+  <kohaidx:index_subfields tag="210" subfields="abcdefgjxyz">
+ <kohaidx:target_index>Corporate-name:w</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name:p</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name:w</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="210" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="410" subfields="abcdefgjxyz">
+ <kohaidx:target_index>Corporate-name-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-see:p</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="510" subfields="abcdefgjxyz">
+ <kohaidx:target_index>Corporate-name-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="710" subfields="abcdefgjxyz">
+ <kohaidx:target_index>Corporate-name-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Corporate-name-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Conference-name-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Geographic name -->
+  <kohaidx:index_subfields tag="215" subfields="ajxyz">
+ <kohaidx:target_index>Name-geographic:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic:p</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic:s</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic:w</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="215" subfields="a">
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="415" subfields="ajxyz">
+ <kohaidx:target_index>Name-geographic-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-see:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see:s</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+    <kohaidx:target_index>See:s</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="515" subfields="ajxyz">
+ <kohaidx:target_index>Name-geographic-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-see-also:s</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="715" subfields="ajxyz">
+ <kohaidx:target_index>Name-geographic-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-geographic-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Term-geographic-parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Trademark-->
+  <kohaidx:index_subfields tag="216" subfields="afcjxyz">
+ <kohaidx:target_index>Trademark:w</kohaidx:target_index>
+ <kohaidx:target_index>Trademark:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="216" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="416" subfields="afcjxyz">
+ <kohaidx:target_index>Trademark-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="516" subfields="afcjxyz">
+ <kohaidx:target_index>Trademark-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="716" subfields="afcjxyz">
+ <kohaidx:target_index>Trademark-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Trademark-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Family name-->
+  <kohaidx:index_subfields tag="220" subfields="afjxyz">
+    <kohaidx:target_index>Name:w</kohaidx:target_index>
+    <kohaidx:target_index>Name:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="220" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Name-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Name-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="420" subfields="afjxyz">
+ <kohaidx:target_index>Name-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="520" subfields="afjxyz">
+ <kohaidx:target_index>Name-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="720" subfields="afjxyz">
+ <kohaidx:target_index>Name-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Uniform title -->
+  <kohaidx:index_subfields tag="230" subfields="abhiklmnqrsuwjxyz">
+ <kohaidx:target_index>Title-uniform:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="230" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="430" subfields="abhiklmnqrsuwjxyz">
+ <kohaidx:target_index>Title-uniform-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="530" subfields="abhiklmnqrsuwjxyz">
+ <kohaidx:target_index>Title-uniform-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="730" subfields="a">
+ <kohaidx:target_index>Title-uniform-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Collective Uniform title -->
+  <kohaidx:index_subfields tag="235" subfields="abekmrsuwjxyz">
+ <kohaidx:target_index>Title-uniform:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="235" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="435" subfields="abekmrsuwjxyz">
+ <kohaidx:target_index>Title-uniform-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="535" subfields="abekmrsuwjxyz">
+ <kohaidx:target_index>Title-uniform-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="735" subfields="a">
+ <kohaidx:target_index>Title-uniform-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Name and title -->
+  <kohaidx:index_subfields tag="240" subfields="atjxyz">
+ <kohaidx:target_index>Name-Title:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="240" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="440" subfields="atjxyz">
+ <kohaidx:target_index>Name-Title-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="540" subfields="atjxyz">
+ <kohaidx:target_index>Name-Title-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="740" subfields="a">
+ <kohaidx:target_index>Name-Title-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Name-Title-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Name and collective title -->
+  <kohaidx:index_subfields tag="245" subfields="atjxyz">
+ <kohaidx:target_index>Title-uniform:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="245" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="445" subfields="atjxyz">
+ <kohaidx:target_index>Title-uniform-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="545" subfields="atjxyz">
+ <kohaidx:target_index>Title-uniform-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="745" subfields="a">
+ <kohaidx:target_index>Title-uniform-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Title-uniform-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Topical term -->
+  <kohaidx:index_subfields tag="250" subfields="ajxyz">
+ <kohaidx:target_index>Subject:w</kohaidx:target_index>
+ <kohaidx:target_index>Subject:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Subject-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Subject-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Subject-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="250" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="450" subfields="ajxyz">
+ <kohaidx:target_index>Subject-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Subject-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="550" subfields="ajxyz">
+ <kohaidx:target_index>Subject-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Subject-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="750" subfields="a">
+ <kohaidx:target_index>Subject-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Subject-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Place -->
+  <kohaidx:index_subfields tag="260" subfields="abcdjxyz">
+ <kohaidx:target_index>Place:w</kohaidx:target_index>
+ <kohaidx:target_index>Place:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Place-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Place-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Place-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="260" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="460" subfields="abcdjxyz">
+ <kohaidx:target_index>Place-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Place-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="560" subfields="abcdjxyz">
+ <kohaidx:target_index>Place-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Place-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="760" subfields="a">
+ <kohaidx:target_index>Place-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Place-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Genre/form -->
+  <kohaidx:index_subfields tag="280" subfields="ajxyz">
+    <kohaidx:target_index>Form:w</kohaidx:target_index>
+    <kohaidx:target_index>Form:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Form-heading:w</kohaidx:target_index>
+ <kohaidx:target_index>Form-heading:p</kohaidx:target_index>
+ <kohaidx:target_index>Form-heading:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="280" subfields="a">
+ <kohaidx:target_index>Heading:s</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:w</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:p</kohaidx:target_index>
+ <kohaidx:target_index>Heading-Main:s</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="480" subfields="ajxyz">
+ <kohaidx:target_index>Form-see:w</kohaidx:target_index>
+ <kohaidx:target_index>Form-see:p</kohaidx:target_index>
+    <kohaidx:target_index>See:w</kohaidx:target_index>
+    <kohaidx:target_index>See:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:w</kohaidx:target_index>
+ <kohaidx:target_index>Match-heading-see-form:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="580" subfields="ajxyz">
+ <kohaidx:target_index>Form-see-also:w</kohaidx:target_index>
+ <kohaidx:target_index>Form-see-also:p</kohaidx:target_index>
+ <kohaidx:target_index>See-also:w</kohaidx:target_index>
+ <kohaidx:target_index>See-also:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <kohaidx:index_subfields tag="780" subfields="a">
+ <kohaidx:target_index>Form-parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Form-parallel:s</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:w</kohaidx:target_index>
+ <kohaidx:target_index>Parallel:p</kohaidx:target_index>
+ <kohaidx:target_index>Match:w</kohaidx:target_index>
+ <kohaidx:target_index>Match:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- Notes 300, 305, 310, 320, 330, 340, 356-->
+  <kohaidx:index_subfields tag="300" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="305" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="310" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="320" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="330" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="340" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="356" subfields="a">
+    <kohaidx:target_index>Note:w</kohaidx:target_index>
+    <kohaidx:target_index>Note:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+
+  <!-- authtype-->
+  <kohaidx:index_subfields tag="152" subfields="b">
+ <kohaidx:target_index>authtype:w</kohaidx:target_index>
+ <kohaidx:target_index>authtype:p</kohaidx:target_index>
+  </kohaidx:index_subfields>
+  <kohaidx:index_subfields tag="942" subfields="a">
+ <kohaidx:target_index>authtype:w</kohaidx:target_index>
+  </kohaidx:index_subfields>
+</kohaidx:index_defs>
diff --git 
a/etc/zebradb/marc_defs/unimarc/authorities/authority-zebra-indexdefs.xsl b/etc/zebradb/marc_defs/unimarc/authorities/authority-zebra-indexdefs.xsl
new file mode 100644
index 0000000..0b84c34
--- /dev/null
+++ 
b/etc/zebradb/marc_defs/unimarc/authorities/authority-zebra-indexdefs.xsl
@@ -0,0 +1,669 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+This file has been automatically generated from a Koha index definition 
file
+with the stylesheet koha-indexdefs-to-zebra.xsl. Do not manually edit 
this file,
+as it may be overwritten. To regenerate, edit the appropriate Koha index
+definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml) and run:
+`xsltproc koha-indexdefs-to-zebra.xsl 
{biblio,authority}-koha-indexdefs.xml >
+{biblio,authority}-zebra-indexdefs.xsl` (substituting the appropriate 
file names).
+-->
+<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">
+  <xslo:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+  <xslo:template match="text()"/>
+  <xslo:template match="text()" mode="index_subfields"/>
+  <xslo:template match="text()" mode="index_data_field"/>
+  <xslo:template match="text()" mode="index_heading"/>
+  <xslo:template match="text()" mode="index_heading_conditional"/>
+  <xslo:template match="text()" mode="index_match_heading"/>
+  <xslo:template match="text()" mode="index_subject_thesaurus"/>
+  <xslo:template match="/">
+    <xslo:if test="marc:collection">
+      <collection>
+        <xslo:apply-templates select="marc:collection/marc:record"/>
+      </collection>
+    </xslo:if>
+    <xslo:if test="marc:record">
+      <xslo:apply-templates select="marc:record"/>
+    </xslo:if>
+  </xslo:template>
+  <xslo:template match="marc:record">
+    <xslo:variable name="idfield" 
select="normalize-space(marc:controlfield[@tag='001'])"/>
+    <z:record type="update">
+      <xslo:attribute name="z:id">
+        <xslo:value-of select="$idfield"/>
+      </xslo:attribute>
+      <xslo:apply-templates/>
+      <xslo:apply-templates mode="index_subfields"/>
+      <xslo:apply-templates mode="index_data_field"/>
+      <xslo:apply-templates mode="index_heading"/>
+      <xslo:apply-templates mode="index_heading_conditional"/>
+      <xslo:apply-templates mode="index_match_heading"/>
+      <xslo:apply-templates mode="index_subject_thesaurus"/>
+      <xslo:apply-templates mode="index_all"/>
+    </z:record>
+  </xslo:template>
+  <xslo:template match="marc:controlfield[@tag='001']">
+    <z:index name="Local-Number:w Local-Number:s Local-Number:n">
+      <xslo:value-of select="."/>
+    </z:index>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='200']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdfgjxyz', @code)">
+        <z:index name="Personal-name:w Personal-name:p Heading:w 
Heading:p Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Personal-name-heading:w Personal-name-heading:p 
Personal-name-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='400']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdfgjxyz', @code)">
+        <z:index name="Personal-name-see:w Personal-name-see:p See:w 
See:p Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='500']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdfgjxyz', @code)">
+        <z:index name="Personal-name-see-also:w 
Personal-name-see-also:p See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='700']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Personal-name-parallel:w 
Personal-name-parallel:s Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='210']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdefgjxyz', @code)">
+        <z:index name="Corporate-name:w Corporate-name:p 
Conference-name:w Conference-name:p Heading:w Heading:p Match:w Match:p 
Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Corporate-name-heading:w Corporate-name-heading:p 
Corporate-name-heading:s Conference-name-heading:w 
Conference-name-heading:p Conference-name-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='410']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdefgjxyz', @code)">
+        <z:index name="Corporate-name-see:w Corporate-name-see:p 
Conference-name-see:w Conference-name-see:p See:w See:p Match:w Match:p 
Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='510']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdefgjxyz', @code)">
+        <z:index name="Corporate-name-see-also:w 
Corporate-name-see-also:p Conference-name-see-also:w 
Conference-name-see-also:p See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='710']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdefgjxyz', @code)">
+        <z:index name="Corporate-name-parallel:w 
Corporate-name-parallel:s Conference-name-parallel:w 
Conference-name-parallel:s Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='215']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Name-geographic:w Name-geographic:p 
Name-geographic:s Term-geographic:w Term-geographic:p Term-geographic:s 
Heading:w Heading:p Heading:s Match:w Match:p Match-heading:w 
Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading-Main:w Heading-Main:p Heading-Main:s 
Name-geographic-heading:w Name-geographic-heading:p 
Name-geographic-heading:s Term-geographic-heading:w 
Term-geographic-heading:p Term-geographic-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='415']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Name-geographic-see:w Name-geographic-see:p 
Term-geographic-see:w Term-geographic-see:p Term-geographic-see:s See:w 
See:p See:s Match:w Match:p Match-heading-see-form:w 
Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='515']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Name-geographic-see-also:w 
Name-geographic-see-also:p Term-geographic-see-also:w 
Term-geographic-see-also:p Term-geographic-see-also:s See-also:w 
See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='715']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Name-geographic-parallel:w 
Name-geographic-parallel:s Term-geographic-parallel:w 
Term-geographic-parallel:s Term-geographic-parallel:p Parallel:w 
Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='216']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afcjxyz', @code)">
+        <z:index name="Trademark:w Trademark:p Heading:w Heading:p 
Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Trademark-heading:w Trademark-heading:p Trademark-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='416']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afcjxyz', @code)">
+        <z:index name="Trademark-see:w Trademark-see:p See:w See:p 
Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='516']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afcjxyz', @code)">
+        <z:index name="Trademark-see-also:w Trademark-see-also:p 
See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='716']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afcjxyz', @code)">
+        <z:index name="Trademark-parallel:w Trademark-parallel:s 
Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='220']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afjxyz', @code)">
+        <z:index name="Name:w Name:p Heading:w Heading:p Match:w 
Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Name-heading:w Name-heading:p Name-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='420']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afjxyz', @code)">
+        <z:index name="Name-see:w Name-see:p See:w See:p Match:w 
Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='520']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afjxyz', @code)">
+        <z:index name="Name-see-also:w Name-see-also:p See-also:w 
See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='720']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('afjxyz', @code)">
+        <z:index name="Name-parallel:w Name-parallel:s Parallel:w 
Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='230']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abhiklmnqrsuwjxyz', @code)">
+        <z:index name="Title-uniform:w Title-uniform:p Heading:w 
Heading:p Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Title-uniform-heading:w Title-uniform-heading:p 
Title-uniform-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='430']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abhiklmnqrsuwjxyz', @code)">
+        <z:index name="Title-uniform-see:w Title-uniform-see:p See:w 
See:p Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='530']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abhiklmnqrsuwjxyz', @code)">
+        <z:index name="Title-uniform-see-also:w 
Title-uniform-see-also:p See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='730']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Title-uniform-parallel:w 
Title-uniform-parallel:s Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='235']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abekmrsuwjxyz', @code)">
+        <z:index name="Title-uniform:w Title-uniform:p Heading:w 
Heading:p Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Title-uniform-heading:w Title-uniform-heading:p 
Title-uniform-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='435']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abekmrsuwjxyz', @code)">
+        <z:index name="Title-uniform-see:w Title-uniform-see:p See:w 
See:p Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='535']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abekmrsuwjxyz', @code)">
+        <z:index name="Title-uniform-see-also:w 
Title-uniform-see-also:p See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='735']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Title-uniform-parallel:w 
Title-uniform-parallel:s Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='240']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Name-Title:w Name-Title:p Heading:w Heading:p 
Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Name-Title-heading:w Name-Title-heading:p 
Name-Title-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='440']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Name-Title-see:w Name-Title-see:p See:w See:p 
Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='540']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Name-Title-see-also:w Name-Title-see-also:p 
See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='740']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Name-Title-parallel:w Name-Title-parallel:s 
Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='245']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Title-uniform:w Title-uniform:p Heading:w 
Heading:p Match:w Match:p Match-heading:w Match-heading:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s Title-uniform-heading:w Title-uniform-heading:p 
Title-uniform-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='445']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Title-uniform-see:w Title-uniform-see:p See:w 
See:p Match:w Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='545']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('atjxyz', @code)">
+        <z:index name="Title-uniform-see-also:w 
Title-uniform-see-also:p See-also:w See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='745']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Title-uniform-parallel:w 
Title-uniform-parallel:s Parallel:w Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='250']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Subject:w Subject:p Heading:w Heading:p Match:w 
Match:p Match-heading:w Match-heading:p Subject-heading:w 
Subject-heading:p Subject-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='450']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Subject-see:w Subject-see:p See:w See:p Match:w 
Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='550']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Subject-see-also:w Subject-see-also:p See-also:w 
See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='750']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Subject-parallel:w Subject-parallel:s Parallel:w 
Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='260']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdjxyz', @code)">
+        <z:index name="Place:w Place:p Heading:w Heading:p Match:w 
Match:p Match-heading:w Match-heading:p Place-heading:w Place-heading:p 
Place-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='460']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdjxyz', @code)">
+        <z:index name="Place-see:w Place-see:p See:w See:p Match:w 
Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='560']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('abcdjxyz', @code)">
+        <z:index name="Place-see-also:w Place-see-also:p See-also:w 
See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='760']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Place-parallel:w Place-parallel:s Parallel:w 
Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='280']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Form:w Form:p Heading:w Heading:p Match:w 
Match:p Match-heading:w Match-heading:p Form-heading:w Form-heading:p 
Form-heading:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Heading:s Heading-Main:w Heading-Main:p 
Heading-Main:s">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='480']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Form-see:w Form-see:p See:w See:p Match:w 
Match:p Match-heading-see-form:w Match-heading-see-form:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='580']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('ajxyz', @code)">
+        <z:index name="Form-see-also:w Form-see-also:p See-also:w 
See-also:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='780']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Form-parallel:w Form-parallel:s Parallel:w 
Parallel:p Match:w Match:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='300']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='305']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='310']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='320']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='330']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='340']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='356']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="Note:w Note:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='152']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('b', @code)">
+        <z:index name="authtype:w authtype:p">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_subfields" match="marc:datafield[@tag='942']">
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="authtype:w">
+          <xslo:value-of select="."/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
+  </xslo:template>
+  <xslo:template mode="index_all" match="text()">
+    <z:index name="Any:w Any:p">
+      <xslo:value-of select="."/>
+    </z:index>
+  </xslo:template>
+  <xslo:template name="chopPunctuation">
+    <xslo:param name="chopString"/>
+    <xslo:variable name="length" select="string-length($chopString)"/>
+    <xslo:choose>
+      <xslo:when test="$length=0"/>
+      <xslo:when test="contains('-,.:=;!%/', 
substring($chopString,$length,1))">
+        <xslo:call-template name="chopPunctuation">
+          <xslo:with-param name="chopString" 
select="substring($chopString,1,$length - 1)"/>
+        </xslo:call-template>
+      </xslo:when>
+      <xslo:when test="not($chopString)"/>
+      <xslo:otherwise>
+        <xslo:value-of select="$chopString"/>
+      </xslo:otherwise>
+    </xslo:choose>
+    <xslo:text/>
+  </xslo:template>
+</xslo:stylesheet>
diff --git a/etc/zebradb/marc_defs/unimarc/authorities/record.abs 
b/etc/zebradb/marc_defs/unimarc/authorities/record.abs
index 5c992a8..b2a1559 100644
--- a/etc/zebradb/marc_defs/unimarc/authorities/record.abs
+++ b/etc/zebradb/marc_defs/unimarc/authorities/record.abs
@@ -1,3 +1,11 @@
+#
+# NOTE: If you are using the DOM index filter, this configuration file is
+#       *not* used.  To update the index definitions for the DOM filter,
+#       edit authority-koha-indexdefs.xml and run
+#       xsltproc ../../../xsl/koha-indexdefs-to-zebra.xsl \
+#                authority-koha-indexdefs.xml \
+#                > authority-zebra-indexdefs.xsl
+#
  # This is a fairly simple set of UNIMARC Authority indexing rules
  encoding utf-8
  name authorities
@@ -12,9 +20,14 @@ xpath enable

  all any
  melm 001 Local-Number,Local-Number:n,Local-Number:s
+#FIXME check if 942 is used
  melm 942$a authtype
  melm 152$b authtype:w,authtype:p

+#FIXME index some coded fields and leader positions?
+#FIXME why only $a indexed for some 7XX and not for others (710, 715, 
716, 720)?
+#FIXME why 250/260/280 indexed as Subject-heading, Place-heading and 
Form-heading (not only 250/260/280$a) ?
+
  # Personal Name
  melm 200$a 
Personal-name-heading:w,Personal-name-heading:p,Personal-name-heading:s,Personal-name:w,Personal-name:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 200 
Personal-name:w,Personal-name:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
@@ -22,15 +35,17 @@ melm 400 
Personal-name-see:w,Personal-name-see:p,See:w,See:p,Match:w,Match:p,Mat
  melm 500 
Personal-name-see-also:w,Personal-name-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 700$a 
Personal-name-parallel:w,Personal-name-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

-# Corporate Name
+# Corporate Name and conference Name
+# with GRS-1, no way to make the difference
+# with DOM, possible
  melm 210$a 
Corporate-name-heading:w,Corporate-name-heading:p,Corporate-name-heading:s,Corporate-name:w,Corporate-name:p,Conference-name-heading:w,Conference-name-heading:p,Conference-name-heading:s,Conference-name:w,Conference-name:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 210 
Corporate-name:w,Corporate-name:p,Conference-name:w,Conference-name:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 410 
Corporate-name-see:w,Corporate-name-see:p,Conference-name-see:w,Conference-name-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
  melm 510 
Corporate-name-see-also:w,Corporate-name-see-also:p,Conference-name-see-also:w,Conference-name-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 710 
Corporate-name-parallel:w,Corporate-name-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

-
-# Geographic & Geographic Name
+# Geographic Name
+# FIXME : what is Term-geographic?
  melm 215$a 
Name-geographic-heading:w,Name-geographic-heading:w,Name-geographic-heading:s,Name-geographic:w,Name-geographic:p,Term-geographic-heading:w,Term-geographic-heading:p,Term-geographic-heading:s,Term-geographic:w,Term-geographic:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 215 
Name-geographic-heading:w,Name-geographic-heading:w,Name-geographic-heading:s,Name-geographic:w,Name-geographic:p,Term-geographic:w,Term-geographic:p,Term-geographic:s,Heading:w,Heading:p,Heading:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 415 
Name-geographic-see:w,Name-geographic-see:p,Term-geographic-see:w,Term-geographic-see:p,Term-geographic-see:s,See:w,See:p,See:s,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
@@ -38,10 +53,10 @@ melm 515 
Name-geographic-see-also:w,Name-geographic-see-also:p,Term-geographic-s
  melm 715 
Name-geographic-parallel:w,Name-geographic-parallel:p,Term-geographic-parallel:w,Term-geographic-parallel:p,Term-geographic-parallel:s,Parallel:w,Parallel:p,Parallel:s,Match:w,Match:p

  # Trademark
-melm 216$a 
Trademark-heading:w,Trademark-heading:p,Trademark-heading:s,Trademark:w,Trademark:p,Conference-name-heading:w,Conference-name-heading:p,Conference-name-heading:s,Conference-name:w,Conference-name:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
-melm 216 
Trademark:w,Trademark:p,Conference-name:w,Conference-name:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
-melm 416 
Trademark-see:w,Trademark-see:p,Conference-name-see:w,Conference-name-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
-melm 516 
Trademark-see-also:w,Trademark-see-also:p,Conference-name-see-also:w,Conference-name-see-also:p,See-also:w,See-also:p,Match:w,Match:p
+melm 216$a 
Trademark-heading:w,Trademark-heading:p,Trademark-heading:s,Trademark:w,Trademark:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
+melm 216 
Trademark:w,Trademark:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
+melm 416 
Trademark-see:w,Trademark-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
+melm 516 
Trademark-see-also:w,Trademark-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 716 
Trademark-parallel:w,Trademark-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

  # Family Name
@@ -58,21 +73,22 @@ melm 430 
Title-uniform-see:w,Title-uniform-see:p,See:w,See:p,Match:w,Match:p,Mat
  melm 530 
Title-uniform-see-also:w,Title-uniform-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 730$a 
Title-uniform-parallel:w,Title-uniform-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

-# Second area for uniform titles in UNIMARC?
+# Collective Uniform Title
  melm 235$a 
Title-uniform-heading:w,Title-uniform-heading:p,Title-uniform-heading:s,Title-uniform:w,Title-uniform:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 235 
Title-uniform:w,Title-uniform:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 435 
Title-uniform-see:w,Title-uniform-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
  melm 535 
Title-uniform-see-also:w,Title-uniform-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 735$a 
Title-uniform-parallel:w,Title-uniform-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

-# Uniform Title
+# Name and Title
  melm 240$a 
Name-Title-heading:w,Name-Title-heading:p,Name-Title-heading:s,Name-Title:w,Name-Title:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 240 
Name-Title:w,Name-Title:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 440 
Name-Title-see:w,Name-Title-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
  melm 540 
Name-Title-see-also:w,Name-Title-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 740$a 
Name-Title-parallel:w,Name-Title-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p

-# Second area for uniform titles in UNIMARC?
+# Name and Collective Title
+# FIXME maybe use Name-Title index?
  melm 245$a 
Title-uniform-heading:w,Title-uniform-heading:p,Title-uniform-heading:s,Title-uniform:w,Title-uniform:p,Heading:w,Heading:p,Heading:s,Heading-Main:w,Heading-Main:p,Heading-Main:s,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 245 
Title-uniform:w,Title-uniform:p,Heading:w,Heading:p,Match:w,Match:p,Match-heading:w,Match-heading:p
  melm 445 
Title-uniform-see:w,Title-uniform-see:p,See:w,See:p,Match:w,Match:p,Match-heading-see-from:w,Match-heading-see-from:p
@@ -101,26 +117,39 @@ melm 580 
Form-see-also:w,Form-see-also:p,See-also:w,See-also:p,Match:w,Match:p
  melm 780$a 
Form-parallel:w,Form-parallel:p,Parallel:w,Parallel:p,Match:w,Match:p


-# NOTE: subdivisions management missing from Koha
-# Not in UNIMARC?
+# FIXME: manage subdivisions ($j,$x,$y,$z)
  # General Subdivision
-# melm 180 Subject-subdivision,Heading:w,Heading:p,Heading:s
+# Subject-subdivision,Heading:w,Heading:p,Heading:s
  # Geographic Subdivision
-# melm 181 Geographic-subdivision,Heading:w,Heading:p,Heading:s
+# Geographic-subdivision,Heading:w,Heading:p,Heading:s
  # Chronological Subdivision
-# melm 182 Chronological-subdivision,Heading:w,Heading:p,Heading:s
+# Chronological-subdivision,Heading:w,Heading:p,Heading:s
  # Form Subdivision
-# melm 185 Form-subdivision,Heading:w,Heading:p,Heading:s
-melm 300$a    Note
+# Form-subdivision,Heading:w,Heading:p,Heading:s
+
+# 300 Information note
+melm 300$a    Note:w,Note:p
+# 305 "See also" reference note
+melm 305$a    Note:w,Note:p
+# 310 "See" reference note
+melm 310$a    Note:w,Note:p
+# 320 General explanatory reference note
+melm 320$a    Note:w,Note:p
+# 330 General scope note
+melm 330$a    Note:w,Note:p
+# 340 Biography and activity note
+melm 340$a    Note:w,Note:p
+# 356 Geographical note
+melm 356$a    Note:w,Note:p
+
+#FIXME Notes not defined in format. Keeping them for the moment
  melm 301$a    Note
  melm 302$a    Note
  melm 303$a    Note
  melm 304$a    Note
-melm 305$a    Note
  melm 306$a    Note
  melm 307$a    Note
  melm 308$a    Note
-melm 310$a    Note
  melm 311$a    Note
  melm 312$a    Note
  melm 313$a    Note
@@ -129,7 +158,6 @@ melm 315$a    Note
  melm 316$a    Note
  melm 317$a    Note
  melm 318$a    Note
-melm 320$a    Note
  melm 321$a    Note
  melm 322$a    Note
  melm 323$a    Note
@@ -138,9 +166,8 @@ melm 325$a    Note
  melm 326$a    Note
  melm 327$a    Note
  melm 328$a    Note
-melm 330$a    Note
  melm 332$a    Note
  melm 333$a    Note
  melm 336$a    Note
  melm 337$a    Note
-melm 345$a    Note
+melm 345$a    Note
\ No newline at end of file
-- 
1.7.9.5


-- 
Mathieu Saby
Service d'Informatique Documentaire
Service Commun de Documentation
Université Rennes 2
Téléphone : 02 99 14 12 65
Courriel : mathieu.saby at univ-rennes2.fr



More information about the Koha-patches mailing list