use Encode;
use XML::LibXML;
use XML::LibXSLT;
+use LWP::Simple;
use strict;
@ISA = qw(Exporter);
@EXPORT = qw(
&XSLTParse4Display
+ &GetURI
);
}
=head1 FUNCTIONS
+=head1 GetURI
+
+=head2 GetURI file and returns the xslt as a string
+
+=cut
+
+sub GetURI {
+ my ($uri) = @_;
+ my $string;
+ $string = get $uri ;
+ return $string;
+}
+
=head1 transformMARCXML4XSLT
=head2 replaces codes with authorized values in a MARC::Record object
my $stylesheet;
sub XSLTParse4Display {
- my ( $biblionumber, $orig_record, $xsl_suffix ) = @_;
+ my ( $biblionumber, $orig_record, $xslfilename ) = @_;
# grab the XML, run it through our stylesheet, push it out to the browser
my $record = transformMARCXML4XSLT($biblionumber, $orig_record);
#return $record->as_formatted();
my $itemsxml = buildKohaItemsNamespace($biblionumber);
- my $xmlrecord = $record->as_xml();
- $xmlrecord =~ s/\<\/record\>/$itemsxml\<\/record\>/;
+ my $xmlrecord = $record->as_xml(C4::Context->preference('marcflavour'));
+ my $sysxml = "";
+ warn $xmlrecord;
+ foreach my $syspref ( qw/OPACURLOpenInNewWindow DisplayOPACiconsXSLT URLLinkText/ ) {
+ if (C4::Context->preference( $syspref ) ){
+ $sysxml .= "<syspref name=\"$syspref\">" .
+ C4::Context->preference( $syspref ) .
+ "</syspref>\n";
+ }
+ }
+ $sysxml = "<sysprefs>\n".$sysxml."</sysprefs>\n" if length($sysxml);
+ $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml\<\/record\>/;
+ $xmlrecord =~ s/\& /\&\; /;
+
my $parser = XML::LibXML->new();
# don't die when you find &, >, etc
- $parser->recover_silently(1);
+ $parser->recover_silently(0);
my $source = $parser->parse_string($xmlrecord);
- unless ( $stylesheet ) {
+ unless ( $stylesheet->{$xslfilename} ) {
my $xslt = XML::LibXSLT->new();
- my $xslfile = C4::Context->config('opachtdocs') .
- "/prog/en/xslt/" .
- C4::Context->preference('marcflavour') .
- "slim2OPAC$xsl_suffix.xsl";
- my $style_doc = $parser->parse_file($xslfile);
- $stylesheet = $xslt->parse_stylesheet($style_doc);
+ my $style_doc;
+ if ($xslfilename=~/http:/){
+ my $xsltstring=GetURI($xslfilename);
+ $style_doc = $parser->parse_string($xsltstring);
+ }
+ else {
+ use Cwd;
+ warn getcwd;
+ $style_doc = $parser->parse_file($xslfilename);
+ }
+ $stylesheet->{$xslfilename} = $xslt->parse_stylesheet($style_doc);
}
- my $results = $stylesheet->transform($source);
- my $newxmlrecord = $stylesheet->output_string($results);
+ my $results = $stylesheet->{$xslfilename}->transform($source);
+ my $newxmlrecord = $stylesheet->{$xslfilename}->output_string($results);
return $newxmlrecord;
}