[Koha-patches] [PATCH] [SIGNED-OFF] Bug 3326: Work around Zebra's handling of & entities
Nicole C. Engard
nengard at bywatersolutions.com
Tue Mar 15 03:14:19 CET 2011
From: Jared Camins-Esakov <jcamins at bywatersolutions.com>
When using XSLT mode, the OPAC results display will show "&" instead of "&"
when Zebra is indexing in XML mode. This patch works around this by replacing
"&" with "&" and then extends the previous fix to apply to all occurrences
of "& " instead of just the first.
Signed-off-by: Nicole C. Engard <nengard at bywatersolutions.com>
---
C4/Search.pm | 4 +++-
C4/XSLT.pm | 7 +++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/C4/Search.pm b/C4/Search.pm
index 26dc67f..c486df9 100644
--- a/C4/Search.pm
+++ b/C4/Search.pm
@@ -1687,7 +1687,9 @@ sub searchResults {
# FIXME note that XSLTResultsDisplay (use of XSLT to format staff interface bib search results)
# is not implemented yet
$oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, 'Results',
- $search_context);
+ $search_context, 1);
+ # the last parameter tells Koha to clean up the problematic ampersand entities that Zebra outputs
+
}
# last check for norequest : if itemtype is notforloan, it can't be reserved either, whatever the items
diff --git a/C4/XSLT.pm b/C4/XSLT.pm
index 348930f..d602688 100644
--- a/C4/XSLT.pm
+++ b/C4/XSLT.pm
@@ -120,7 +120,7 @@ sub getAuthorisedValues4MARCSubfields {
my $stylesheet;
sub XSLTParse4Display {
- my ( $biblionumber, $orig_record, $xsl_suffix, $interface ) = @_;
+ my ( $biblionumber, $orig_record, $xsl_suffix, $interface, $fixamps ) = @_;
$interface = 'opac' unless $interface;
# grab the XML, run it through our stylesheet, push it out to the browser
my $record = transformMARCXML4XSLT($biblionumber, $orig_record);
@@ -139,8 +139,11 @@ sub XSLTParse4Display {
}
$sysxml .= "</sysprefs>\n";
$xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml\<\/record\>/;
+ if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs
+ $xmlrecord =~ s/\&/\&/g;
+ }
$xmlrecord =~ s/\& /\&\; /;
- $xmlrecord=~ s/\&\;amp\; /\&\; /;
+ $xmlrecord =~ s/\&\;amp\; /\&\; /;
my $parser = XML::LibXML->new();
# don't die when you find &, >, etc
--
1.7.2.3
More information about the Koha-patches
mailing list