X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FUtils.pm;h=c1399950d87cbfcba28c33ef71068bc3814ec11d;hp=61636c44a25b7ef057917e87e69d56f77bce7767;hb=01db8593a91d42a9dc554edc17d0c2c1b3858ef5;hpb=2e9e6677036c2e7ffdac1c39860cda3a313bdeec diff --git a/lib/ZOOM/IRSpy/Utils.pm b/lib/ZOOM/IRSpy/Utils.pm index 61636c4..c139995 100644 --- a/lib/ZOOM/IRSpy/Utils.pm +++ b/lib/ZOOM/IRSpy/Utils.pm @@ -1,4 +1,4 @@ -# $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; @@ -6,6 +6,40 @@ use 5.008; 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; + 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;