X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FRecord.pm;h=8a09c541cdad02919a526bf5035ab30acd19f3ca;hp=4f5ee8294dcc74aac72997aadd1e6146de6957e5;hb=c8c1a66291479405710e0020a59389cccf31d3e8;hpb=5beb44c22bc78e661f45607638a3245b19f8a22f diff --git a/lib/ZOOM/IRSpy/Record.pm b/lib/ZOOM/IRSpy/Record.pm index 4f5ee82..8a09c54 100644 --- a/lib/ZOOM/IRSpy/Record.pm +++ b/lib/ZOOM/IRSpy/Record.pm @@ -1,4 +1,4 @@ -# $Id: Record.pm,v 1.5 2006-07-21 11:30:51 mike Exp $ +# $Id: Record.pm,v 1.6 2006-07-21 16:50:20 mike Exp $ package ZOOM::IRSpy::Record; @@ -7,6 +7,7 @@ use strict; use warnings; use XML::LibXML; +use XML::LibXML::XPathContext; =head1 NAME @@ -34,7 +35,7 @@ sub new { my $parser = new XML::LibXML(); return bless { target => $target, - zeerex => $parser->parse_string($zeerex), + zeerex => $parser->parse_string($zeerex)->documentElement(), }, $class; } @@ -57,6 +58,30 @@ __EOT__ } +sub append_entry { + my $this = shift(); + my($xpath, $frag) = @_; + + print STDERR "this=$this, xpath='$xpath', frag='$frag'\n"; + my $root = $this->{zeerex}; # XML::LibXML::Element ISA XML::LibXML::Node + print "Record='", $root->toString(), "'\n"; + my $xc = XML::LibXML::XPathContext->new($root); + $xc->registerNs(zeerex => "http://explain.z3950.org/dtd/2.0/"); + $xc->registerNs(irspy => "http://indexdata.com/irspy/1.0"); + + my @nodes = $xc->findnodes($xpath); + if (@nodes == 0) { + ZOOM::Log::log("irspy", "no matches for '$xpath': can't append"); + return; + } elsif (@nodes > 1) { + ZOOM::Log::log("irspy", scalar(@nodes), + " matches for '$xpath': using first"); + } + + print STDERR "zeerex='$root'\n"; +} + + =head1 SEE ALSO ZOOM::IRSpy