-# $Id: IRSpy.pm,v 1.44 2006-10-30 15:04:33 mike Exp $
+# $Id: IRSpy.pm,v 1.45 2006-10-30 16:13:49 mike Exp $
package ZOOM::IRSpy;
use strict;
use warnings;
-use Exporter 'import';
-our @EXPORT_OK = qw(xml_encode irspy_xpath_context);
-
use Data::Dumper; # For debugging only
use File::Basename;
use XML::LibXSLT;
}
-# Utility functions follow, exported for use of web UI
-
-# I can't -- just can't, can't, can't -- believe that this function
-# isn't provided by one of the core XML modules. But the evidence all
-# says that it's not: among other things, XML::Generator and
-# Template::Plugin both roll their own. So I will do likewise. D'oh!
-#
-sub xml_encode {
- my ($text) = @_;
- $text =~ s/&/&/g;
- $text =~ s/</</g;
- $text =~ s/>/>/g;
- $text =~ s/['']/'/g;
- $text =~ s/[""]/"/g;
- return $text;
-}
-
-
-sub irspy_xpath_context {
- my($zoom_record) = @_;
-
- my $xml = $zoom_record->render();
- my $parser = new XML::LibXML();
- my $doc = $parser->parse_string($xml);
- my $root = $doc->getDocumentElement();
- my $xc = XML::LibXML::XPathContext->new($root);
- $xc->registerNs(e => 'http://explain.z3950.org/dtd/2.0/');
- $xc->registerNs(i => $irspy_ns);
- return $xc;
-}
-
-
=head1 SEE ALSO
ZOOM::IRSpy::Record,
-# $Id: Record.pm,v 1.17 2006-10-23 12:22:52 sondberg Exp $
+# $Id: Record.pm,v 1.18 2006-10-30 16:13:49 mike Exp $
package ZOOM::IRSpy::Record;
use XML::LibXML;
use XML::LibXML::XPathContext;
-
+use ZOOM::IRSpy::Utils qw(xml_encode);
=head1 NAME
### Doesn't recognise SRU/SRW URLs
my($host, $port, $db) = ZOOM::IRSpy::_parse_target_string($target);
- my $xhost = ZOOM::IRSpy::xml_encode($host);
- my $xport = ZOOM::IRSpy::xml_encode($port);
- my $xdb = ZOOM::IRSpy::xml_encode($db);
+ my $xhost = xml_encode($host);
+ my $xport = xml_encode($port);
+ my $xdb = xml_encode($db);
return <<__EOT__;
<explain xmlns="http://explain.z3950.org/dtd/2.0/">
<serverInfo protocol="Z39.50" version="1995">
-# $Id: Utils.pm,v 1.1 2006-10-30 15:02:06 mike Exp $
+# $Id: Utils.pm,v 1.2 2006-10-30 16:13:49 mike Exp $
package ZOOM::IRSpy::Utils;
use strict;
use warnings;
-sub x { return 1 }
+use Exporter 'import';
+our @EXPORT_OK = qw(xml_encode irspy_xpath_context);
+
+
+# Utility functions follow, exported for use of web UI
+
+# I can't -- just can't, can't, can't -- believe that this function
+# isn't provided by one of the core XML modules. But the evidence all
+# says that it's not: among other things, XML::Generator and
+# Template::Plugin both roll their own. So I will do likewise. D'oh!
+#
+sub xml_encode {
+ my ($text) = @_;
+ $text =~ s/&/&/g;
+ $text =~ s/</</g;
+ $text =~ s/>/>/g;
+ $text =~ s/['']/'/g;
+ $text =~ s/[""]/"/g;
+ return $text;
+}
+
+
+sub irspy_xpath_context {
+ my($zoom_record) = @_;
+
+ my $xml = $zoom_record->render();
+ my $parser = new XML::LibXML();
+ my $doc = $parser->parse_string($xml);
+ my $root = $doc->getDocumentElement();
+ my $xc = XML::LibXML::XPathContext->new($root);
+ $xc->registerNs(e => 'http://explain.z3950.org/dtd/2.0/');
+ $xc->registerNs(i => $ZOOM::IRSpy::irspy_ns);
+ return $xc;
+}
+
1;
-%# $Id: layout.mc,v 1.12 2006-10-30 14:58:15 mike Exp $
+%# $Id: layout.mc,v 1.13 2006-10-30 16:13:49 mike Exp $
<%args>
$debug => undef
$title
<%once>
use URI::Escape;
use ZOOM::IRSpy::Web;
-use ZOOM::IRSpy qw(irspy_xpath_context xml_encode);
+use ZOOM::IRSpy::Utils qw(irspy_xpath_context xml_encode);
</%once>
<& /chrome/head.mc, title => $title &>
<table border="0" cellpadding="0" cellspacing="0" width="100%">