Bug 13163: NORMARC DOM config missing <id> entry
authorTomas Cohen Arazi <tomascohen@gmail.com>
Wed, 29 Oct 2014 00:07:43 +0000 (21:07 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Fri, 31 Oct 2014 19:45:04 +0000 (16:45 -0300)
This patch fixes the biblio-koha-indexdefs.xml for NORMARC, so
it includes the <id> element.

Because of how our DOM files work, the resulting biblio-zebra-indexdefs.xsl
for NORMARC picked the whole MARC record as ID, so every time the record
was edited, the id wouldn't match and a new record was created.

To test:
- Have a MARCXML record
- run:
  $ xsltproc etc/zebradb/marc_defs/normarc/biblios/biblio-zebra-indexdefs.xsl the_record | less
=> FAIL: verify the z:id property on the <z:record> line contains all subfields concatenated
- Apply the patch
- re-run the xsltproc line
=> SUCCESS: z:id contains the 999$c number
- Sign off :-D

Regards

Signed-off-by: Frederic Demians <f.demians@tamil.fr>

Known bug with DOM: Without <z:id> indexing biblionumber Zebra hasn't it record
unique ID, and so fails to identify existing records. Works as described. 999$c
is linked to biblionumber in default Normarc framework.

Signed-off-by: Magnus Enger <magnus@enger.priv.no>

I have applied the patch to my production server, and at least one customer has
confirmed that it fixes the problem with multiple copies of records in search
results.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes tests and QA script, fix matches what we have for the other MARC flavours.

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>

etc/zebradb/marc_defs/normarc/biblios/biblio-koha-indexdefs.xml
etc/zebradb/marc_defs/normarc/biblios/biblio-zebra-indexdefs.xsl

index d2aef1a..5ce689f 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <kohaidx:index_defs xmlns:kohaidx="http://www.koha-community.org/schemas/index-defs"
                     xmlns="http://www.koha-community.org/schemas/index-defs">
+  <id>marc:datafield[@tag='999']/marc:subfield[@code='c']</id>
   <!--record.abs line 64: xelm /record/leader llength:w:range(data,0,5),rtype:w:range(data,6,1),Bib-level:w:range(data,7,1)-->
   <index_leader offset="0" length="5">
     <target_index>llength:w</target_index>
index 064c8a8..56d006b 100644 (file)
@@ -28,7 +28,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     </xslo:if>
   </xslo:template>
   <xslo:template match="marc:record">
-    <xslo:variable name="idfield" select="normalize-space()"/>
+    <xslo:variable name="idfield" select="normalize-space(marc:datafield[@tag='999']/marc:subfield[@code='c'])"/>
     <z:record type="update">
       <xslo:attribute name="z:id">
         <xslo:value-of select="$idfield"/>