From 2a8dcb8c52deb893ecca9022f5256fae1caedec5 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 8 Jul 2015 12:37:31 -0300 Subject: [PATCH] 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 Encuadernador:w and generated an XSLT snippet in the DOM indexing XSLT that looks like this: This patch introduces this syntax change (note the 'condition' attribute: Encuadernador:w which yields to this XSLT snippet in the DOM indexing XSLT: 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/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 Sponsored-by: Orex Digital --- etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl | 86 +++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl b/etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl index e970771..9573d85 100644 --- a/etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl +++ b/etc/zebradb/xsl/koha-indexdefs-to-zebra.xsl @@ -262,34 +262,74 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml) - + + + - contains(' - - ', @code) + - - - - - - - substring(., - - , - - ) - - - . - - + + + + contains(' + + ', @code) - - + + + + + + + substring(., + + , + + ) + + + . + + + + + + + - + + + + + + contains(' + + ', @code) + + + + + + + + substring(., + + , + + ) + + + . + + + + + + + + + -- 2.4.5