<host>z3950.loc.gov</host>
<port>7090</port>
<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>
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');
databaseName => $db,
user => $username,
password => $password,
- preferredRecordSyntax => $output,
+ preferredRecordSyntax => $tformat,
);
if( ! $connection ) {
my $offset = shift;
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'");
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 );
next unless ( exists $services{$service}->{attrs}->{$_} );
$str .= '@attr 1=' . $services{$service}->{attrs}->{$_}->{code} . # add the use attribute
' @attr 4=' . $services{$service}->{attrs}->{$_}->{format}; # add the structure attribute
+
if (exists $services{$service}->{attrs}->{$_}->{truncation}){
$str .= ' @attr 5=' . $services{$service}->{attrs}->{$_}->{truncation};
}
+
$str .= " \"" . $$hash{$_} . "\" "; # add the search term
}
return $str;