Koha/etc/zebradb
Tomas Cohen Arazi 5d46dbf3e9 Bug 14217: Add 'condition' attribute for DOM index definition
This patch introduces an extension to the current syntax for DOM index definition.
Specifically, it extends the 'index_subfields' tag to allow adding a 'condition'
attribute that is used as a condition ofr applying the specified index.

This (exotic) example is self-explanatory:

The previous syntax (which is keeped by this patch) took this snippet from biblio-koha-indexdefs.xml

  <index_subfields tag="100" subfields="acbd">
    <target_index>Encuadernador:w</target_index>
  </index_subfields>

and generated an XSLT snippet in the DOM indexing XSLT that looks like this:

    <xslo:for-each select="marc:subfield">
      <xslo:if test="contains('acbd', @code)">
        <z:index name="Encuadernador:w">
          <xslo:value-of select="."/>
        </z:index>
      </xslo:if>
    </xslo:for-each>

This patch introduces this syntax change (note the 'condition' attribute:

  <index_subfields tag="100" subfields="acbd" condition="@ind2='7'">
    <target_index>Encuadernador:w</target_index>
  </index_subfields>

which yields to this XSLT snippet in the DOM indexing XSLT:

    <xslo:if test="@ind2='7'">
      <xslo:for-each select="marc:subfield">
        <xslo:if test="contains('acbd', @code)">
          <z:index name="Encuadernador:w">
            <xslo:value-of select="."/>
          </z:index>
        </xslo:if>
      </xslo:for-each>
    </xslo:if>

To test:
- Verify that the shipped XSLT files are current regarding the shipped index definitions:
  $ for i in marc21 normarc unimarc; do
        xsltproc etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl \
              etc/zebradb/marc_defs/$i/biblios/biblio-koha-indexdefs.xml \
              > etc/zebradb/marc_defs/$i/biblios/biblio-zebra-indexdefs.xsl
    done
  $ git status
(repeat for authorities, skip normarc which doesn't have authorities)
- Apply the patch
- Re-run the previous commands
=> SUCCESS: no changes
- Add a condition to an index_subfields tag (for example, condition="@ind2='7'" in the Author's index
- Regenerate the specific XSLT
=> SUCCESS: doing a diff shows the only change is the code has been wrapped inside an xslo:if using the condition for the test
- Apply the generated xsl to a MARCXML record that has a field matching the condition like this:
  $ xsltproc .../biblio-zebra-indexdefs.xsl sample_record.xml
=> SUCCESS: There's an index on the result, containing the configured field/subfields, that matches the criteria.
- Sign off and feel really happy :-D

Note: the attached sample record includes a 100 field, with ind2=7 and $a=Tomasito

Edit: This patch was squashed once I figured it got too complex and Jonathan required a followup
to avoid code duplication.

This avoids code duplication, with the same results.

Sponsored-by: Orex Digital
Signed-off-by: Barton Chittenden <barton@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2015-09-25 11:53:24 -03:00
..
authorities/etc Bug 9612: (follow-up) restore elementSetName in Context.pm 2014-05-19 16:46:57 +00:00
biblios/etc Bug 14383: etc/zebradb: Fix some typos in documentation and Bib-1 attribute set 2015-06-22 17:34:46 -03:00
etc Bug 14401: Zebra index configuration doesn't allow exact search for C. 2015-06-22 11:26:13 -03:00
lang_defs Bug 11927 - Add greek chr lang_def file 2015-01-21 10:59:04 -03:00
marc_defs Bug 11620: Add dissertation-information index for MARC21 (502) 2015-07-20 10:31:06 -03:00
xsl Bug 14217: Add 'condition' attribute for DOM index definition 2015-09-25 11:53:24 -03:00
ccl.properties Bug 14031: Itemnumber should be a numeric search in ccl.properties 2015-08-21 10:05:55 -03:00
cql.properties Add more zebra configuration 2007-10-01 15:34:16 -05:00
explain-authorities.xml Bug 5370: Fix all references to koha.org 2010-11-09 10:45:27 +13:00
explain-biblios.xml Bug 5370: Fix all references to koha.org 2010-11-09 10:45:27 +13:00
pqf.properties fixing a couple mappings for SRU CQL server 2008-01-03 03:01:14 -06:00
retrieval-info-auth-dom.xml Bug 9612: fix SRU response for DOM indexing 2014-05-05 20:28:04 +00:00
retrieval-info-auth-grs1.xml Bug 3087 Fix Z39.50 server to return the correct record syntax 2012-10-22 14:12:22 +02:00
retrieval-info-bib-dom.xml Bug 11232: Add new syntax for facets definition on koha-indexdefs-to-zebra.xsl 2014-10-15 12:55:33 -03:00
retrieval-info-bib-grs1.xml Bug 3087 Fix Z39.50 server to return the correct record syntax 2012-10-22 14:12:22 +02:00
zebra-authorities-dom.cfg Bug 11362 - increase zebra AUTH register sizes, from 4G to 20G 2014-10-24 09:41:04 -03:00
zebra-authorities.cfg Bug 11362 - increase zebra AUTH register sizes, from 4G to 20G 2014-10-24 09:41:04 -03:00
zebra-biblios-dom.cfg Bug 11232: (qa followup) Add missing fields/subfields to the item types faceta 2014-10-15 12:55:47 -03:00
zebra-biblios.cfg Bug 7041: Sort >1000 search results with sortmax parameter in zebra config file 2011-12-03 08:15:34 +01:00