[Koha-patches] [PATCH 2/2] Bug 8252: Fix indexing of UNIMARC 1xx for DOM

Mathieu Saby mathieu.saby at univ-rennes2.fr
Wed Mar 27 17:03:30 CET 2013


This patch makes the same changes in UNIMARC DOM configuration as PATCH 
1/2 made for GRS-1.
posistions of subfields are indexed that way :
In biblio-koha-indexdefs.xml :
tag="100" subfields="a" offset="17" length="1"
In biblio-zebra-indexdefs.xsl :
xslo:value-of select="substring(., 17, 1)"

I had to edit biblio-zebra-indexdefs.xsl by hand, because 
etc/zebdradb/xml/koha-indexdefs-to-zebra.xsl does only support 
"subtring" in handle-one-index-control-field template.
It is good for MARC21, but not for UNIMARC : in MARC21, indexing 
subtrings is needed for controled field (001-009, with no subfields)
But in UNIMARC it is needed for subfields of 1XX fields.
So if DOM indexing is working with these new files, we may need to 
change koha-indexdefs-to-zebra.xsl.

Test plan (not possible in a sandbox) :
1) In a Koha using UNIMARC and DOM indexing
2) apply the patch
3) rebuild zebra
4) check if coded filters in advanced search are usable in OPAC and 
Staff interface

---
  .../unimarc/biblios/biblio-koha-indexdefs.xml      |  134 ++++++++---
  .../unimarc/biblios/biblio-zebra-indexdefs.xsl     |  234 
+++++++++++++++++++-
  2 files changed, 321 insertions(+), 47 deletions(-)

diff --git 
a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml 
b/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
index ceaba51..a7fc2ed 100644
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
+++ b/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
@@ -158,12 +158,14 @@
      <target_index>EAN:w</target_index>
      <target_index>Identifier-standard:w</target_index>
    </index_subfields>
-  <!--record.abs line 86: melm 200$b 
itemtype:w,itemtype:p,itype:w,itype:p-->
+  <!--record.abs melm 200$b 
itemtype:w,itemtype:p,itype:w,itype:p,Material-type:w,Material-type:p-->
    <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="200" 
subfields="b">
      <target_index>itemtype:w</target_index>
      <target_index>itemtype:p</target_index>
      <target_index>itype:w</target_index>
      <target_index>itype:p</target_index>
+    <target_index>Material-type:w</target_index>
+    <target_index>Material-type:p</target_index>
    </index_subfields>
    <!--record.abs line 87: melm 995$r 
itemtype:w,itemtype:p,itype:w,itype:p-->
    <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="995" 
subfields="r">
@@ -172,17 +174,32 @@
      <target_index>itype:w</target_index>
      <target_index>itype:p</target_index>
    </index_subfields>
-  <!--record.abs line 48: melm 100$a 
tpubdate:s:range(data,8,1),ta:w:range(data,17,1),ta:w:range(data,18,1),ta:w:range(data,19,1),Modified-code:n:range(data,21,1),ln:s:range(data,22,3),char-encoding:n:range(data,26,2),char-encoding:n:range(data,28,2),char-encoding:n:range(data,30,2),script-Title:n:range(data,34,2)-->
-  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a">
+  <!--record.abs melm 100$a 
tpubdate:s:range(data,8,1),ta:w:range(data,17,1),ta:w:range(data,18,1),ta:w:range(data,19,1),Modified-code:n:range(data,21,1),char-encoding:n:range(data,26,2),char-encoding:n:range(data,28,2),char-encoding:n:range(data,30,2),script-Title:n:range(data,34,2)-->
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="8" length="1">
      <target_index>tpubdate:s</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="17" length="1">
      <target_index>ta:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="18" length="1">
      <target_index>ta:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="19" length="1">
      <target_index>ta:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="21" length="1">
      <target_index>Modified-code:n</target_index>
-    <target_index>ln:s</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="26" length="2">
      <target_index>char-encoding:n</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="28" length="2">
      <target_index>char-encoding:n</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="30" length="2">
      <target_index>char-encoding:n</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="100" 
subfields="a" offset="34" length="2">
      <target_index>script-Title:n</target_index>
    </index_subfields>
    <!--record.abs line 49: melm 101$a     ln-->
@@ -191,46 +208,93 @@
    </index_subfields>
    <!--record.abs line 50: melm 102$a     Country-heading-->
    <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="102" 
subfields="a">
-    <target_index>Country-heading:w</target_index>
-  </index_subfields>
-  <!--record.abs line 60: melm 105$a 
Illustration-code:w:range(data,0,4),Content-type:w:range(data,4,1),Content-type:w:range(data,5,1),Content-type:w:range(data,6,1),Content-type:w:range(data,7,1),Conference-code:w:range(data,8,1),Festschrift-indicator:w:range(data,9,1),Index-indicator:w:range(data,10,1),Literature-Code:w:range(data,11,1),Biography-Code:w:range(data,12,1)-->
-  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a">
-    <target_index>Illustration-code:w</target_index>
-    <target_index>Content-type:w</target_index>
-    <target_index>Content-type:w</target_index>
-    <target_index>Content-type:w</target_index>
-    <target_index>Content-type:w</target_index>
-    <target_index>Conference-code:w</target_index>
- <target_index>Festschrift-indicator:w</target_index>
-    <target_index>Index-indicator:w</target_index>
-    <target_index>Literature-Code:w</target_index>
-    <target_index>Biography-Code:w</target_index>
-  </index_subfields>
-  <!--record.abs line 62: melm 106$a     itype:w,itype:p-->
+    <target_index>Country-publication:w</target_index>
+  </index_subfields>
+  <!--record.abs melm 105$a 
ff8-18-21:w:range(data,0,1),ff8-18-21:w:range(data,1,1),ff8-18-21:w:range(data,2,1),ff8-18-21:w:range(data,3,1),ctype:w:range(data,4,1),ctype:w:range(data,5,1),ctype:w:range(data,6,1),ctype:w:range(data,7,1),ff8-29:w:range(data,8,1),ff8-30:w:range(data,9,1),ff8-31:w:range(data,10,1),lf:w:range(data,11,1),bio:w:range(data,12,1)-->
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="0" length="1">
+    <target_index>ff8-18-21:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="1" length="1">
+    <target_index>ff8-18-21:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="2" length="1">
+    <target_index>ff8-18-21:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="3" length="1">
+    <target_index>ff8-18-21:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="4" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="5" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="6" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="7" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="8" length="1">
+    <target_index>ff8-29:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="9" length="1">
+    <target_index>ff8-30:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="10" length="1">
+    <target_index>ff8-31:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="11" length="1">
+    <target_index>lf:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="105" 
subfields="a" offset="12" length="1">
+    <target_index>bio:w</target_index>
+  </index_subfields>
+  <!--record.abs melm 106$a     ff8-23:w,ff8-23:p-->
    <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="106" 
subfields="a">
-    <target_index>itype:w</target_index>
-    <target_index>itype:p</target_index>
+    <target_index>ff8-23:w</target_index>
+    <target_index>ff8-23:p</target_index>
+  </index_subfields>
+  <!--record.abs melm 110$a 
ff8-21:w:range(data,0,1),ff8-18:w:range(data,1,1),ff8-19:w:range(data,2,1),ctype:w:range(data,3,1),ctype:w:range(data,4,3),ff8-29:w:range(data,7,1),Title-Page-availability-Code:w:range(data,8,1),ff8-31:w:range(data,9,1),Cumulative-Index-availability-Code:w:range(data,10,1)-->
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="0" length="1">
+    <target_index>ff8-21:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="1" length="1">
+    <target_index>ff8-18:w</target_index>
    </index_subfields>
-  <!--record.abs line 75: melm 110$a 
Type-Of-Serial:w:range(data,0,1),Frequency-code:w:range(data,1,1),Regularity-code:w:range(data,2,1),Content-type:w:range(data,3,1),Content-type:w:range(data,4,3),Conference-publication-Code:w:range(data,7,1),Title-Page-availability-Code:w:range(data,8,1),Index-availability-Code:w:range(data,9,1),Cumulative-Index-availability-Code:w:range(data,10,1)-->
-  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a">
-    <target_index>Type-Of-Serial:w</target_index>
-    <target_index>Frequency-code:w</target_index>
-    <target_index>Regularity-code:w</target_index>
-    <target_index>Content-type:w</target_index>
-    <target_index>Content-type:w</target_index>
- <target_index>Conference-publication-Code:w</target_index>
- <target_index>Title-Page-availability-Code:w</target_index>
- <target_index>Index-availability-Code:w</target_index>
- <target_index>Cumulative-Index-availability-Code:w</target_index>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="2" length="1">
+    <target_index>ff8-19:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="3" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="4" length="1">
+    <target_index>ctype:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="7" length="1">
+    <target_index>ff8-29:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="8" length="1">
+ <target_index>Title-page-availability:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="9" length="1">
+    <target_index>ff8-31:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="110" 
subfields="a" offset="10" length="1">
+ <target_index>Cumulative-index-availability:w</target_index>
    </index_subfields>
    <!--record.abs line 77: melm 115$a Video-mt:w:range(data,0,1)-->
-  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="115" 
subfields="a">
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="115" 
subfields="a" offset="0" length="1">
      <target_index>Video-mt:w</target_index>
    </index_subfields>
    <!--record.abs line 79: melm 116$a 
Graphics-type:w:range(data,0,1),Graphics-support:w:range(data,1,1),Graphics-support:w:range(data,2,1),-->
-  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="116" 
subfields="a">
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="116" 
subfields="a" offset="0" length="1">
      <target_index>Graphics-type:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="116" 
subfields="a" offset="1" length="1">
      <target_index>Graphics-support:w</target_index>
+  </index_subfields>
+  <index_subfields 
xmlns="http://www.koha-community.org/schemas/index-defs" tag="116" 
subfields="a" offset="2" length="1">
      <target_index>Graphics-support:w</target_index>
    </index_subfields>
    <!--record.abs line 92: melm 200$f Author:w,Author:p-->
diff --git 
a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl 
b/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
index f1e82e3..8649a96 100644
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
+++ b/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
@@ -305,7 +305,7 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <xslo:template mode="index_subfields" 
match="marc:datafield[@tag='200']">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('b', @code)">
-        <z:index name="itemtype:w itemtype:p itype:w itype:p">
+        <z:index name="itemtype:w itemtype:p itype:w itype:p 
Material-type:w Material-type:p">
            <xslo:value-of select="."/>
          </z:index>
        </xslo:if>
@@ -456,8 +456,64 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <xslo:template mode="index_subfields" 
match="marc:datafield[@tag='100']">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('a', @code)">
-        <z:index name="tpubdate:s ta:w ta:w ta:w Modified-code:n ln:s 
char-encoding:n char-encoding:n char-encoding:n script-Title:n">
-          <xslo:value-of select="."/>
+        <z:index name="tpubdate:s">
+          <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="ta:w">
+          <xslo:value-of select="substring(., 17, 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)"/>
+        </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)"/>
+        </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)"/>
+        </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)"/>
+        </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)"/>
+        </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)"/>
+        </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)"/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
@@ -474,7 +530,7 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <xslo:template mode="index_subfields" 
match="marc:datafield[@tag='102']">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('a', @code)">
-        <z:index name="Country-heading:w">
+        <z:index name="Country-publication:w">
            <xslo:value-of select="."/>
          </z:index>
        </xslo:if>
@@ -483,8 +539,92 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <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="Illustration-code:w Content-type:w 
Content-type:w Content-type:w Content-type:w Conference-code:w 
Festschrift-indicator:w Index-indicator:w Literature-Code:w 
Biography-Code:w">
-          <xslo:value-of select="."/>
+        <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">
+          <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-21:w">
+          <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-18-21:w">
+          <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(., 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(., 5, 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(., 6, 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(., 7, 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(., 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">
+          <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(., 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">
+          <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">
+          <xslo:value-of select="substring(., 12, 1)"/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
@@ -492,7 +632,7 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <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="itype:w itype:p">
+        <z:index name="ff8-23:w iff8-23:p">
            <xslo:value-of select="."/>
          </z:index>
        </xslo:if>
@@ -501,8 +641,64 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <xslo:template mode="index_subfields" 
match="marc:datafield[@tag='110']">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('a', @code)">
-        <z:index name="Type-Of-Serial:w Frequency-code:w 
Regularity-code:w Content-type:w Content-type:w 
Conference-publication-Code:w Title-Page-availability-Code:w 
Index-availability-Code:w Cumulative-Index-availability-Code:w">
-          <xslo:value-of select="."/>
+        <z:index name="ff8-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:w">
+          <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-19:w">
+          <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="ctype:w">
+          <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(., 4, 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)"/>
+        </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)"/>
+        </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)"/>
+        </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)"/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
@@ -511,7 +707,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="."/>
+          <xslo:value-of select="substring(., 0, 1)"/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
@@ -519,8 +715,22 @@ definition file (probably something like 
{biblio,authority}-koha-indexdefs.xml)
    <xslo:template mode="index_subfields" 
match="marc:datafield[@tag='116']">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('a', @code)">
-        <z:index name="Graphics-type:w Graphics-support:w 
Graphics-support:w">
-          <xslo:value-of select="."/>
+        <z:index name="Graphics-type: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="Graphics-support:w">
+          <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(., 2, 1)"/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
-- 
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