/usr/share/perl5/XML/XPath/LocationPath.pm is in libxml-xpath-perl 1.40-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | package XML::XPath::LocationPath;
$VERSION = '1.40';
use Scalar::Util qw(blessed);
use XML::XPath::Root;
use strict; use warnings;
sub new {
my $class = shift;
my $self = [];
bless $self, $class;
}
sub as_string {
my $self = shift;
my $string;
for (my $i = 0; $i < @$self; $i++) {
$string .= $self->[$i]->as_string if defined $self->[$i]->as_string;
$string .= "/" if $self->[$i+1];
}
return $string;
}
sub as_xml {
my $self = shift;
my $string = "<LocationPath>\n";
for (my $i = 0; $i < @$self; $i++) {
$string .= $self->[$i]->as_xml;
}
$string .= "</LocationPath>\n";
return $string;
}
sub set_root {
my $self = shift;
unshift @$self, XML::XPath::Root->new();
}
sub evaluate {
my $self = shift;
# context _MUST_ be a single node
my $context = shift;
die "No context" unless $context;
# I _think_ this is how it should work :)
my $nodeset = XML::XPath::NodeSet->new();
$nodeset->push($context);
foreach my $step (@$self) {
next unless (defined $step && blessed($step));
# For each step
# evaluate the step with the nodeset
my $pos = 1;
$nodeset = $step->evaluate($nodeset);
}
return $nodeset->remove_duplicates;
}
1;
|