Hello community, here is the log from the commit of package perl-XML-XPath for openSUSE:Factory checked in at 2016-01-23 01:14:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-XML-XPath (Old) and /work/SRC/openSUSE:Factory/.perl-XML-XPath.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-XML-XPath" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-XML-XPath/perl-XML-XPath.changes 2016-01-17 09:23:02.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl-XML-XPath.new/perl-XML-XPath.changes 2016-01-23 01:15:33.000000000 +0100 @@ -1,0 +2,21 @@ +Wed Jan 20 10:57:03 UTC 2016 - co...@suse.com + +- updated to 1.24 + see /usr/share/doc/packages/perl-XML-XPath/Changes + + 1.24 2016-01-19 MANWAR + - Fixed issue RT# 111278 (XML::XPath::PerlSAX doesn't compile). + +------------------------------------------------------------------- +Tue Jan 19 10:40:24 UTC 2016 - co...@suse.com + +- updated to 1.23 + see /usr/share/doc/packages/perl-XML-XPath/Changes + + 1.23 2016-01-18 MANWAR + - Fixed issues RT# 6363 (using < in a query returns results as if <= had been used). + + 1.22 2016-01-13 MANWAR + - Fixed issues RT# 30818 and RT# 80277. + +------------------------------------------------------------------- Old: ---- XML-XPath-1.21.tar.gz New: ---- XML-XPath-1.24.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-XML-XPath.spec ++++++ --- /var/tmp/diff_new_pack.ewsS2A/_old 2016-01-23 01:15:34.000000000 +0100 +++ /var/tmp/diff_new_pack.ewsS2A/_new 2016-01-23 01:15:34.000000000 +0100 @@ -17,10 +17,10 @@ Name: perl-XML-XPath -Version: 1.21 +Version: 1.24 Release: 0 %define cpan_name XML-XPath -Summary: Set of Modules for Parsing and Evaluating Xpath Statements +Summary: Parse and evaluate XPath statements License: Artistic-2.0 Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/XML-XPath/ ++++++ XML-XPath-1.21.tar.gz -> XML-XPath-1.24.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/Changes new/XML-XPath-1.24/Changes --- old/XML-XPath-1.21/Changes 2016-01-12 11:37:46.000000000 +0100 +++ new/XML-XPath-1.24/Changes 2016-01-19 12:29:56.000000000 +0100 @@ -1,5 +1,14 @@ Revision history for XML::XPath +1.24 2016-01-19 MANWAR + - Fixed issue RT# 111278 (XML::XPath::PerlSAX doesn't compile). + +1.23 2016-01-18 MANWAR + - Fixed issue RT# 6363 (using < in a query returns results as if <= had been used). + +1.22 2016-01-13 MANWAR + - Fixed issues RT# 30818 and RT# 80277. + 1.21 2016-01-12 MANWAR - Fixed issues RT# 14957 and RT# 30819. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/MANIFEST new/XML-XPath-1.24/MANIFEST --- old/XML-XPath-1.21/MANIFEST 2016-01-12 11:38:11.000000000 +0100 +++ new/XML-XPath-1.24/MANIFEST 2016-01-19 12:30:34.000000000 +0100 @@ -27,6 +27,7 @@ lib/XML/XPath/Root.pm lib/XML/XPath/PerlSAX.pm lib/XML/XPath/Builder.pm +t/00load.t t/01basic.t t/02descendant.t t/03star.t @@ -69,6 +70,9 @@ t/39contains.t t/40substring_before.t t/41substring_after.t +t/42create_node.t +t/43op_div.t +t/44test_compare.t t/rdf.t t/remove.t t/insert.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/META.json new/XML-XPath-1.24/META.json --- old/XML-XPath-1.21/META.json 2016-01-12 11:38:11.000000000 +0100 +++ new/XML-XPath-1.24/META.json 2016-01-19 12:30:34.000000000 +0100 @@ -45,6 +45,6 @@ "web" : "https://github.com/manwar/XML-XPath" } }, - "version" : "1.21", + "version" : "1.24", "x_serialization_backend" : "JSON::PP version 2.27203" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/META.yml new/XML-XPath-1.24/META.yml --- old/XML-XPath-1.21/META.yml 2016-01-12 11:38:11.000000000 +0100 +++ new/XML-XPath-1.24/META.yml 2016-01-19 12:30:34.000000000 +0100 @@ -22,5 +22,5 @@ perl: '5.006' resources: repository: https://github.com/manwar/XML-XPath.git -version: '1.21' +version: '1.24' x_serialization_backend: 'CPAN::Meta::YAML version 0.012' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Boolean.pm new/XML-XPath-1.24/lib/XML/XPath/Boolean.pm --- old/XML-XPath-1.21/lib/XML/XPath/Boolean.pm 2016-01-12 10:47:37.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Boolean.pm 2016-01-19 12:19:30.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Boolean; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Number; use XML::XPath::Literal; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Builder.pm new/XML-XPath-1.24/lib/XML/XPath/Builder.pm --- old/XML-XPath-1.21/lib/XML/XPath/Builder.pm 2016-01-12 10:47:45.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Builder.pm 2016-01-19 12:19:40.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Builder; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Expr.pm new/XML-XPath-1.24/lib/XML/XPath/Expr.pm --- old/XML-XPath-1.21/lib/XML/XPath/Expr.pm 2016-01-12 10:47:54.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Expr.pm 2016-01-19 12:19:48.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Expr; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; @@ -331,7 +331,7 @@ sub op_le { my ($node, $lhs, $rhs) = @_; - op_gt($node, $rhs, $lhs); + op_ge($node, $rhs, $lhs); } sub op_ge { @@ -360,31 +360,22 @@ !$rh_results->isa('XML::XPath::NodeSet'))) { # (that says: one is a nodeset, and one is not a nodeset) - my ($nodeset, $other); - my ($true, $false); if ($lh_results->isa('XML::XPath::NodeSet')) { - $nodeset = $lh_results; - $other = $rh_results; - # we do this because unlike ==, these ops are direction dependant - ($false, $true) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True); + foreach my $node ($lh_results->get_nodelist) { + if ($node->to_number->value >= $rh_results->to_number->value) { + return XML::XPath::Boolean->True; + } + } } else { - $nodeset = $rh_results; - $other = $lh_results; - # ditto above comment - ($true, $false) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True); - } - - # True if and only if there is a node in the - # nodeset such that the result of performing - # the comparison on <type>(string_value($node)) - # is true. - foreach my $node ($nodeset->get_nodelist) { - if ($node->to_number->value >= $other->to_number->value) { - return $true; + foreach my $node ($rh_results->get_nodelist) { + if ( $lh_results->to_number->value >= $node->to_number->value) { + return XML::XPath::Boolean->True; + } } } - return $false; + + return XML::XPath::Boolean->False; } else { # Neither is a nodeset if ($lh_results->isa('XML::XPath::Boolean') || @@ -430,31 +421,22 @@ !$rh_results->isa('XML::XPath::NodeSet'))) { # (that says: one is a nodeset, and one is not a nodeset) - my ($nodeset, $other); - my ($true, $false); if ($lh_results->isa('XML::XPath::NodeSet')) { - $nodeset = $lh_results; - $other = $rh_results; - # we do this because unlike ==, these ops are direction dependant - ($false, $true) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True); + foreach my $node ($lh_results->get_nodelist) { + if ($node->to_number->value > $rh_results->to_number->value) { + return XML::XPath::Boolean->True; + } + } } else { - $nodeset = $rh_results; - $other = $lh_results; - # ditto above comment - ($true, $false) = (XML::XPath::Boolean->False, XML::XPath::Boolean->True); - } - - # True if and only if there is a node in the - # nodeset such that the result of performing - # the comparison on <type>(string_value($node)) - # is true. - foreach my $node ($nodeset->get_nodelist) { - if ($node->to_number->value > $other->to_number->value) { - return $true; + foreach my $node ($rh_results->get_nodelist) { + if ( $lh_results->to_number->value > $node->to_number->value) { + return XML::XPath::Boolean->True; + } } } - return $false; + + return XML::XPath::Boolean->False; } else { # Neither is a nodeset if ($lh_results->isa('XML::XPath::Boolean') || @@ -509,6 +491,18 @@ my $lh_results = $lhs->evaluate($node); my $rh_results = $rhs->evaluate($node); + # handle zero devided cases. + if ($rh_results->to_number->value == 0) { + my $lv = $lh_results->to_number->value; + if ($lv == 0) { + return XML::XPath::Literal->new('NaN'); + } elsif ($lv > 0) { + return XML::XPath::Literal->new('Infinity'); + } elsif ($lv < 0) { + return XML::XPath::Literal->new('-Infinity'); + } + } + my $result = eval { $lh_results->to_number->value / diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Function.pm new/XML-XPath-1.24/lib/XML/XPath/Function.pm --- old/XML-XPath-1.21/lib/XML/XPath/Function.pm 2016-01-12 10:48:01.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Function.pm 2016-01-19 12:19:57.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Function; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Number; use XML::XPath::Literal; @@ -265,7 +265,7 @@ if (@params == 3) { $len = $params[2]->value; - if (($len eq 'NaN') || (($offset eq 'Infinity') && ($len eq 'Infinity'))) { + if (($len eq 'NaN') || (($offset =~ /Infinity/) && ($len eq 'Infinity'))) { return XML::XPath::Literal->new(''); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Literal.pm new/XML-XPath-1.24/lib/XML/XPath/Literal.pm --- old/XML-XPath-1.21/lib/XML/XPath/Literal.pm 2016-01-12 10:48:12.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Literal.pm 2016-01-19 12:20:07.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Literal; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Boolean; use XML::XPath::Number; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/LocationPath.pm new/XML-XPath-1.24/lib/XML/XPath/LocationPath.pm --- old/XML-XPath-1.21/lib/XML/XPath/LocationPath.pm 2016-01-12 10:48:20.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/LocationPath.pm 2016-01-19 12:20:16.000000000 +0100 @@ -1,24 +1,24 @@ package XML::XPath::LocationPath; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Root; use strict; use warnings; sub new { - my $class = shift; - my $self = []; - bless $self, $class; + 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; + 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 { @@ -34,29 +34,29 @@ } sub set_root { - my $self = shift; - unshift @$self, XML::XPath::Root->new(); + 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) { - # For each step - # evaluate the step with the nodeset - my $pos = 1; - $nodeset = $step->evaluate($nodeset); - } + 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) { + # For each step + # evaluate the step with the nodeset + my $pos = 1; + $nodeset = $step->evaluate($nodeset); + } - return $nodeset; + return $nodeset->remove_duplicates; } 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Attribute.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Attribute.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/Attribute.pm 2016-01-12 11:29:54.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/Attribute.pm 2016-01-19 12:22:03.000000000 +0100 @@ -4,7 +4,7 @@ use vars qw/@ISA $VERSION/; @ISA = ('XML::XPath::Node'); -$VERSION = '1.21'; +$VERSION = '1.24'; package XML::XPath::Node::AttributeImpl; @@ -12,7 +12,7 @@ @ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Attribute'); use XML::XPath::Node ':node_keys'; -$VERSION = '1.21'; +$VERSION = '1.24'; sub new { my $class = shift; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Comment.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Comment.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/Comment.pm 2016-01-12 11:30:02.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/Comment.pm 2016-01-19 12:23:28.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node::Comment; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/@ISA/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Element.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Element.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/Element.pm 2016-01-12 11:30:10.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/Element.pm 2016-01-19 12:23:35.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node::Element; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/@ISA/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Namespace.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Namespace.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/Namespace.pm 2016-01-12 11:30:19.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/Namespace.pm 2016-01-19 12:23:42.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node::Namespace; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/@ISA/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/PI.pm new/XML-XPath-1.24/lib/XML/XPath/Node/PI.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/PI.pm 2016-01-12 11:30:27.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/PI.pm 2016-01-19 12:23:47.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node::PI; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/@ISA/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node/Text.pm new/XML-XPath-1.24/lib/XML/XPath/Node/Text.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node/Text.pm 2016-01-12 11:30:37.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node/Text.pm 2016-01-19 12:23:58.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node::Text; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/@ISA/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Node.pm new/XML-XPath-1.24/lib/XML/XPath/Node.pm --- old/XML-XPath-1.21/lib/XML/XPath/Node.pm 2016-01-12 10:48:30.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Node.pm 2016-01-19 12:20:26.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Node; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw(@ISA @EXPORT $AUTOLOAD %EXPORT_TAGS @EXPORT_OK); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/NodeSet.pm new/XML-XPath-1.24/lib/XML/XPath/NodeSet.pm --- old/XML-XPath-1.21/lib/XML/XPath/NodeSet.pm 2016-01-12 10:48:37.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/NodeSet.pm 2016-01-19 12:20:33.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::NodeSet; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Number.pm new/XML-XPath-1.24/lib/XML/XPath/Number.pm --- old/XML-XPath-1.21/lib/XML/XPath/Number.pm 2016-01-12 10:48:45.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Number.pm 2016-01-19 12:20:40.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Number; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Boolean; use XML::XPath::Literal; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Parser.pm new/XML-XPath-1.24/lib/XML/XPath/Parser.pm --- old/XML-XPath-1.21/lib/XML/XPath/Parser.pm 2016-01-12 10:48:53.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Parser.pm 2016-01-19 12:20:49.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Parser; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use vars qw/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/PerlSAX.pm new/XML-XPath-1.24/lib/XML/XPath/PerlSAX.pm --- old/XML-XPath-1.21/lib/XML/XPath/PerlSAX.pm 2016-01-12 10:49:01.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/PerlSAX.pm 2016-01-19 12:27:45.000000000 +0100 @@ -1,7 +1,8 @@ package XML::XPath::PerlSAX; -$VERSION = '1.21'; +$VERSION = '1.24'; +use XML::XPath::Node qw(:node_keys); use XML::XPath::XMLParser; use strict; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Root.pm new/XML-XPath-1.24/lib/XML/XPath/Root.pm --- old/XML-XPath-1.21/lib/XML/XPath/Root.pm 2016-01-12 10:49:10.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Root.pm 2016-01-19 12:21:22.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Root; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use XML::XPath::XMLParser; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Step.pm new/XML-XPath-1.24/lib/XML/XPath/Step.pm --- old/XML-XPath-1.21/lib/XML/XPath/Step.pm 2016-01-12 10:50:06.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Step.pm 2016-01-19 12:21:31.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Step; -$VERSION = '1.21'; +$VERSION = '1.24'; use XML::XPath::Parser; use XML::XPath::Node; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/Variable.pm new/XML-XPath-1.24/lib/XML/XPath/Variable.pm --- old/XML-XPath-1.21/lib/XML/XPath/Variable.pm 2016-01-12 10:50:14.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/Variable.pm 2016-01-19 12:21:40.000000000 +0100 @@ -1,6 +1,6 @@ package XML::XPath::Variable; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath/XMLParser.pm new/XML-XPath-1.24/lib/XML/XPath/XMLParser.pm --- old/XML-XPath-1.21/lib/XML/XPath/XMLParser.pm 2016-01-12 10:50:24.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath/XMLParser.pm 2016-01-19 12:21:50.000000000 +0100 @@ -1,11 +1,10 @@ package XML::XPath::XMLParser; -$VERSION = '1.21'; +$VERSION = '1.24'; use strict; use warnings; use XML::Parser; -#use XML::XPath; use XML::XPath::Node; use XML::XPath::Node::Element; use XML::XPath::Node::Text; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/lib/XML/XPath.pm new/XML-XPath-1.24/lib/XML/XPath.pm --- old/XML-XPath-1.21/lib/XML/XPath.pm 2016-01-12 10:47:29.000000000 +0100 +++ new/XML-XPath-1.24/lib/XML/XPath.pm 2016-01-19 12:19:14.000000000 +0100 @@ -2,18 +2,18 @@ =head1 NAME -XML::XPath - a set of modules for parsing and evaluating XPath statements +XML::XPath - Parse and evaluate XPath statements. =head1 VERSION -Version 1.21 +Version 1.24 =cut use strict; use warnings; use vars qw($VERSION $AUTOLOAD $revision); -$VERSION = '1.21'; +$VERSION = '1.24'; $XML::XPath::Namespaces = 1; $XML::XPath::Debug = 0; @@ -392,11 +392,19 @@ my $newnode = undef; my($axis,$name) = ($path =~ /^(.*?)::(.*)$/); if ($axis =~ /^child$/i) { - $newnode = XML::XPath::Node::Element->new($name); + if ($name =~ /(\S+):(\S+)/) { + $newnode = XML::XPath::Node::Element->new($name, $1); + } else { + $newnode = XML::XPath::Node::Element->new($name); + } return undef if (!defined $newnode); $prev_node->appendChild($newnode); } elsif ($axis =~ /^attribute$/i) { - $newnode = XML::XPath::Node::Attribute->new($name, ""); + if ($name =~ /(\S+):(\S+)/) { + $newnode = XML::XPath::Node::Attribute->new($name, "", $1); + } else { + $newnode = XML::XPath::Node::Attribute->new($name, ""); + } return undef if (!defined $newnode); $prev_node->appendAttribute($newnode); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/00load.t new/XML-XPath-1.24/t/00load.t --- old/XML-XPath-1.21/t/00load.t 1970-01-01 01:00:00.000000000 +0100 +++ new/XML-XPath-1.24/t/00load.t 2016-01-19 11:45:31.000000000 +0100 @@ -0,0 +1,34 @@ +#!perl + +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More tests => 23; + +BEGIN { + use_ok('XML::XPath') || print "Bail out!\n"; + use_ok('XML::XPath::Boolean') || print "Bail out!\n"; + use_ok('XML::XPath::Builder') || print "Bail out!\n"; + use_ok('XML::XPath::Expr') || print "Bail out!\n"; + use_ok('XML::XPath::Function') || print "Bail out!\n"; + use_ok('XML::XPath::Literal') || print "Bail out!\n"; + use_ok('XML::XPath::LocationPath') || print "Bail out!\n"; + use_ok('XML::XPath::Node') || print "Bail out!\n"; + use_ok('XML::XPath::Node::Attribute') || print "Bail out!\n"; + use_ok('XML::XPath::Node::Comment') || print "Bail out!\n"; + use_ok('XML::XPath::Node::Element') || print "Bail out!\n"; + use_ok('XML::XPath::Node::Namespace') || print "Bail out!\n"; + use_ok('XML::XPath::Node::PI') || print "Bail out!\n"; + use_ok('XML::XPath::Node::Text') || print "Bail out!\n"; + use_ok('XML::XPath::Node') || print "Bail out!\n"; + use_ok('XML::XPath::NodeSet') || print "Bail out!\n"; + use_ok('XML::XPath::Number') || print "Bail out!\n"; + use_ok('XML::XPath::Parser') || print "Bail out!\n"; + use_ok('XML::XPath::PerlSAX') || print "Bail out!\n"; + use_ok('XML::XPath::Root') || print "Bail out!\n"; + use_ok('XML::XPath::Step') || print "Bail out!\n"; + use_ok('XML::XPath::Variable') || print "Bail out!\n"; + use_ok('XML::XPath::XMLParser') || print "Bail out!\n"; +} + +diag( "Testing XML::XPath $XML::XPath::VERSION, Perl $], $^X" ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/42create_node.t new/XML-XPath-1.24/t/42create_node.t --- old/XML-XPath-1.21/t/42create_node.t 1970-01-01 01:00:00.000000000 +0100 +++ new/XML-XPath-1.24/t/42create_node.t 2016-01-12 20:31:39.000000000 +0100 @@ -0,0 +1,29 @@ +use strict; +use warnings; +use Test::More tests => 2; +use XML::XPath; + +my $xp1 = new XML::XPath(xml => '<?xml version="1.0" encoding="UTF-8" ?> +<n1:root xmlns:n1="http://n1.zzz.ru" xmlns:n2="http://n2.zzz.ru" xmlns:n3="http://n3.zzz.ru"> +<n2:a></n2:a></n1:root>'); + +$xp1->createNode('/n1:root/n3:b/@aaa'); +$xp1->setNodeText('/n1:root/n3:b/@aaa','aaa'); +$xp1->createNode('/n1:root/n3:b/@ccc'); +$xp1->setNodeText('/n1:root/n3:b/@ccc','ccc'); +$xp1->createNode('/n1:root/n3:b'); +$xp1->setNodeText('/n1:root/n3:b','xxx'); + +is($xp1->getNodeAsXML(), qq{<n1:root xmlns:n1="http://n1.zzz.ru" xmlns:n2="http://n2.zzz.ru" xmlns:n3="http://n3.zzz.ru"> +<n2:a /><n3:b aaa="aaa" ccc="ccc">xxx</n3:b></n1:root>}); + +my $xp2 = new XML::XPath(xml => '<?xml version="1.0" encoding="UTF-8" ?> +<root><a></a></root>'); + +$xp2->createNode('/root/b/@aaa'); +$xp2->setNodeText('/root/b/@aaa','aaa'); +$xp2->createNode('/root/b/@ccc'); +$xp2->setNodeText('/root/b/@ccc','ccc'); +$xp2->setNodeText('/root/b','xxx'); + +is($xp2->getNodeAsXML(), q{<root><a /><b aaa="aaa" ccc="ccc">xxx</b></root>}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/43op_div.t new/XML-XPath-1.24/t/43op_div.t --- old/XML-XPath-1.21/t/43op_div.t 1970-01-01 01:00:00.000000000 +0100 +++ new/XML-XPath-1.24/t/43op_div.t 2016-01-12 21:00:11.000000000 +0100 @@ -0,0 +1,15 @@ +use strict; +use warnings; +use Test::More tests => 5; +use XML::XPath; + +my $xp = XML::XPath->new(ioref => *DATA); +ok($xp); + +ok($xp->findvalue('4 div 2') == 2); +is $xp->findvalue('4 div 0'), 'Infinity'; +is $xp->findvalue('-4 div 0'), '-Infinity'; +is $xp->findvalue('0 div 0'), 'NaN'; + +__DATA__ +<p></p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XML-XPath-1.21/t/44test_compare.t new/XML-XPath-1.24/t/44test_compare.t --- old/XML-XPath-1.21/t/44test_compare.t 1970-01-01 01:00:00.000000000 +0100 +++ new/XML-XPath-1.24/t/44test_compare.t 2016-01-18 11:50:34.000000000 +0100 @@ -0,0 +1,27 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use XML::XPath; +use Test::More; + +my $xml='<root att="root_att"><daughter att="3"/><daughter att="4"/><daughter att="5"/></root>'; +my %results= ( '/root/daughter[@att<"4"]' => 'daughter[3]', + '/root/daughter[@att<4]' => 'daughter[3]', + '//daughter[@att<4]' => 'daughter[3]', + '/root/daughter[@att>4]' => 'daughter[5]', + '/root/daughter[@att>5]' => '', + '/root/daughter[@att<3]' => '', + ); + +plan tests => scalar keys %results; + +my $xpath = XML::XPath->new( xml => $xml); +foreach my $path ( keys %results) { + my @xpath_result = $xpath->findnodes( $path); + is( dump_nodes( @xpath_result) => $results{$path}, "path: $path"); +} + +sub dump_nodes { + return join '-', map { $_->getName . "[" . $_->getAttribute( 'att') . "]" } @_ +}