On Nov 27, 2005, at 5:29 PM, [EMAIL PROTECTED] wrote:
The first cut at the explain information is at:
http://search.halinet.on.ca/search/MarineImagesExplain.xml
A snippet of one version of the code that attempts to incorporate this
into the perl script (badly)
$response = SRU::Response::Explain->new ($request);
my $ExplainFile = get($ExplainXMLfile);
$response = SRU::Response::Explain->record ($ExplainFile);
This yields a "must pass in a SRU::Response::Record Object" error
message on the last of these lines.
In my SRU server applications I hard code my Explain response like
below, but because it is called as method from a package I can change
the package and keep my code:
# require modules
use lib ".";
use CGI qw(-oldstyle_urls);
use explain;
use SRU::Request;
use SRU::Response;
use SRU::Response::Term;
# initlize the necessary objects
my $cgi = CGI->new();
my $request = SRU::Request->newFromCGI($cgi);
my $response = SRU::Response->newFromRequest($request);
# check for type of response
if ($response->type() eq 'explain') {
# fill up the response's record
$response->record(SRU::Response::Record->new(
recordSchema => 'http://explain.z3950.org/dtd/2.0/',
recordData => explain->record()));
}
#
# handle other responses here
#
# done; output the result
print $cgi->header('text/xml');
print $response->asXML(encoding=>"ISO-8859-1");
exit;
# explain.pm - simply build a hard-coded explain response
package explain;
use strict;
sub record {
return <<EOF
<explain xmlns="http://explain.z3950.org/dtd/2.0/">
<serverInfo protocol='SRU' version='1.1'>
<host>
mylibrary.ockham.org
</host>
<!-- hard code balance of explain response here -->
</explain>
EOF
}
# return true or else
1;
WFM.
--
Eric Morgan
University Libraries of Notre Dame