Tomas Cohen Arazi
5d46dbf3e9
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> |
||
---|---|---|
.. | ||
pazpar2 | ||
searchengine | ||
zebradb | ||
koha-conf.xml | ||
koha-httpd.conf | ||
log4perl.conf | ||
README.txt | ||
SIPconfig.xml |
Koha Configuration Files: The following files specify the base configuration for Koha ZOOM: * koha-httpd.conf In a debian system, this apache configuration file will be symlinked from /etc/apache2/sites-enabled Specify Koha's IP address with NameVirtualHost Set ServerName, etc * koha-production.xml * koha-testing.xml These are the production and testing configurations for zebrasrv and for Koha. The first part of each file specifies Zebra server names, indexing configuration files, and query language configurations. Koha configuration directives follow. * zebra-authorities.cfg * zebra-biblios.cfg