[open-ils-commits] r10245 - in trunk/Open-ILS: examples
src/perlmods/OpenILS/Application/Search
svn at svn.open-ils.org
svn at svn.open-ils.org
Mon Aug 4 02:56:05 EDT 2008
Author: miker
Date: 2008-08-04 02:55:57 -0400 (Mon, 04 Aug 2008)
New Revision: 10245
Modified:
trunk/Open-ILS/examples/opensrf.xml.example
trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm
Log:
add support for xml-based z servers (such as xml-backed zebra without yaz-proxy)
Modified: trunk/Open-ILS/examples/opensrf.xml.example
===================================================================
--- trunk/Open-ILS/examples/opensrf.xml.example 2008-08-04 06:36:18 UTC (rev 10244)
+++ trunk/Open-ILS/examples/opensrf.xml.example 2008-08-04 06:55:57 UTC (rev 10245)
@@ -98,6 +98,11 @@
<db>Voyager</db>
<!-- fetch the full record with no holdings. FI is the default -->
<record_format>FI</record_format>
+
+ <!-- Record transmission format from the server. Supported -->
+ <!-- formats include usemarc and xml (for marcxml). -->
+ <transmission_format>usmarc</transmission_format>
+
<attrs>
<tcn><code>12</code><format>1</format></tcn>
<isbn><code>7</code><format>6</format></isbn>
Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm 2008-08-04 06:36:18 UTC (rev 10244)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm 2008-08-04 06:55:57 UTC (rev 10245)
@@ -200,6 +200,8 @@
my $username = $$args{username} || "";
my $password = $$args{password} || "";
+ my $tformat = $services{$service}->{transmission_format} || $output;
+
my $editor = new_editor(authtoken => $auth);
return $editor->event unless $editor->checkauth;
return $editor->event unless $editor->allowed('REMOTE_Z3950_QUERY');
@@ -210,7 +212,7 @@
user => $username,
password => $password,
async => $async,
- preferredRecordSyntax => $output,
+ preferredRecordSyntax => $tformat,
);
if( ! $connection ) {
@@ -256,6 +258,7 @@
my $offset = shift || 0;
my $service = shift;
+ my $tformat = $services{$service}->{transmission_format} || $output;
my $rformat = $services{$service}->{record_format} || 'FI';
$results->option(elementSetName => $rformat);
$logger->info("z3950: using record format '$rformat'");
@@ -283,7 +286,15 @@
try {
my $rec = $results->record($_);
- $marc = MARC::Record->new_from_usmarc($rec->raw());
+
+ if ($tformat eq 'usmarc') {
+ $marc = MARC::Record->new_from_usmarc($rec->raw());
+ } else if ($tformat eq 'xml') {
+ $marc = MARC::Record->new_from_xml($rec->raw());
+ } else {
+ die "Unsupported record transmission format $tformat"
+ }
+
$marcs = entityize($marc->as_xml_record);
my $doc = XML::LibXML->new->parse_string($marcs);
$marcxml = entityize( $doc->documentElement->toString );
More information about the open-ils-commits
mailing list