Bug 8252: (follow-up) fix biblio-zebra-indexdefs.xsl
authorMathieu Saby <mathieu.saby@univ-rennes2.fr>
Wed, 25 Sep 2013 07:34:20 +0000 (09:34 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 10 Oct 2013 15:21:56 +0000 (15:21 +0000)
This patch fixes biblio-zebra-indexdefs.xsl files.
It was generated from biblio-koha-indexdefs.xsm with the new
koha-indexdefs-to-zebra.xsl amended by F. Démians's patch.

To test :
- Take a DOM UNIMARC Koha
- Apply all the patchs of 8252 bug, including this one
- Copy src/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
  to your etc/zebradb/marc_defs/unimarc/biblios/ located in your
  installation directory
- Run rebuid_zebra -b -x -r -v
- make advanced searches on staff interface and opac, on coded fields
  indexes (Audience, Literary genre, Biography, Illustration, Content,
  Video Types, Serial Type, Periodicity, Regularity, Picture)

Signed-off-by: Frédéric Demians <f.demians@tamil.fr>
Ok for me. This patch put in sync indexes XSL definition with
authoritative XML definition. Subsequently, it won't be difficult to
amend DOM UNIMARC indexes defintion if necessary. And, as it is, I don't
see any regression, whereas I can see huge improvements. Thanks Mathieu!

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl

index ea7d9e4..78f8850 100644 (file)
@@ -39,6 +39,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
       <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']">
@@ -457,63 +458,63 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="tpubdate:s">
-          <xslo:value-of select="substring(., 8, 1)"/>
+          <xslo:value-of select="substring(., 9, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ta:w">
-          <xslo:value-of select="substring(., 17, 1)"/>
+          <xslo:value-of select="substring(., 18, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ta:w">
-          <xslo:value-of select="substring(., 18, 1)"/>
+          <xslo:value-of select="substring(., 19, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ta:w">
-          <xslo:value-of select="substring(., 19, 1)"/>
+          <xslo:value-of select="substring(., 20, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Modified-code:n">
-          <xslo:value-of select="substring(., 21, 1)"/>
+          <xslo:value-of select="substring(., 22, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="char-encoding:n">
-          <xslo:value-of select="substring(., 26, 2)"/>
+          <xslo:value-of select="substring(., 27, 2)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="char-encoding:n">
-          <xslo:value-of select="substring(., 28, 2)"/>
+          <xslo:value-of select="substring(., 29, 2)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="char-encoding:n">
-          <xslo:value-of select="substring(., 30, 2)"/>
+          <xslo:value-of select="substring(., 31, 2)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="script-Title:n">
-          <xslo:value-of select="substring(., 34, 2)"/>
+          <xslo:value-of select="substring(., 35, 2)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
@@ -537,13 +538,6 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     </xslo:for-each>
   </xslo:template>
   <xslo:template mode="index_subfields" match="marc:datafield[@tag='105']">
-    <xslo:for-each select="marc:subfield">
-      <xslo:if test="contains('a', @code)">
-        <z:index name="ff8-18-21:w">
-          <xslo:value-of select="substring(., 0, 1)"/>
-        </z:index>
-      </xslo:if>
-    </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-18-21:w">
@@ -567,7 +561,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="ctype:w">
+        <z:index name="ff8-18-21:w">
           <xslo:value-of select="substring(., 4, 1)"/>
         </z:index>
       </xslo:if>
@@ -595,44 +589,51 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="ff8-29:w">
+        <z:index name="ctype:w">
           <xslo:value-of select="substring(., 8, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="ff8-30:w">
+        <z:index name="ff8-29:w">
           <xslo:value-of select="substring(., 9, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="ff8-31:w">
+        <z:index name="ff8-30:w">
           <xslo:value-of select="substring(., 10, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="lf:w">
+        <z:index name="ff8-31:w">
           <xslo:value-of select="substring(., 11, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="bio:w">
+        <z:index name="lf:w">
           <xslo:value-of select="substring(., 12, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
+    <xslo:for-each select="marc:subfield">
+      <xslo:if test="contains('a', @code)">
+        <z:index name="bio:w">
+          <xslo:value-of select="substring(., 13, 1)"/>
+        </z:index>
+      </xslo:if>
+    </xslo:for-each>
   </xslo:template>
   <xslo:template mode="index_subfields" match="marc:datafield[@tag='106']">
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
-        <z:index name="ff8-23:w iff8-23:p">
+        <z:index name="ff8-23:w ff8-23:p">
           <xslo:value-of select="."/>
         </z:index>
       </xslo:if>
@@ -642,63 +643,63 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-21:w">
-          <xslo:value-of select="substring(., 0, 1)"/>
+          <xslo:value-of select="substring(., 1, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-18:w">
-          <xslo:value-of select="substring(., 1, 1)"/>
+          <xslo:value-of select="substring(., 2, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-19:w">
-          <xslo:value-of select="substring(., 2, 1)"/>
+          <xslo:value-of select="substring(., 3, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ctype:w">
-          <xslo:value-of select="substring(., 3, 1)"/>
+          <xslo:value-of select="substring(., 4, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ctype:w">
-          <xslo:value-of select="substring(., 4, 1)"/>
+          <xslo:value-of select="substring(., 5, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-29:w">
-          <xslo:value-of select="substring(., 7, 1)"/>
+          <xslo:value-of select="substring(., 8, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Title-page-availability:w">
-          <xslo:value-of select="substring(., 8, 1)"/>
+          <xslo:value-of select="substring(., 9, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="ff8-31:w">
-          <xslo:value-of select="substring(., 9, 1)"/>
+          <xslo:value-of select="substring(., 10, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Cumulative-index-availability:w">
-          <xslo:value-of select="substring(., 10, 1)"/>
+          <xslo:value-of select="substring(., 11, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
@@ -707,7 +708,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Video-mt:w">
-          <xslo:value-of select="substring(., 0, 1)"/>
+          <xslo:value-of select="substring(., 1, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
@@ -716,21 +717,21 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Graphics-type:w">
-          <xslo:value-of select="substring(., 0, 1)"/>
+          <xslo:value-of select="substring(., 1, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Graphics-support:w">
-          <xslo:value-of select="substring(., 1, 1)"/>
+          <xslo:value-of select="substring(., 2, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('a', @code)">
         <z:index name="Graphics-support:w">
-          <xslo:value-of select="substring(., 2, 1)"/>
+          <xslo:value-of select="substring(., 3, 1)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
@@ -3090,7 +3091,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
       <xslo:value-of select="normalize-space($raw_heading)"/>
     </z:index>
   </xslo:template>
-  <xslo:template match="*">
+  <xslo:template mode="index_all" match="text()">
     <z:index name="Any:w Any:p">
       <xslo:value-of select="."/>
     </z:index>