diff options
Diffstat (limited to 't/24namespaces.t')
-rw-r--r-- | t/24namespaces.t | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/t/24namespaces.t b/t/24namespaces.t new file mode 100644 index 0000000..b77f9dc --- /dev/null +++ b/t/24namespaces.t @@ -0,0 +1,56 @@ +use Test; +BEGIN { plan tests => 9 } + +use XML::XPath; +ok(1); + +my $xp = XML::XPath->new(ioref => *DATA); +ok($xp); + +my @nodes; + +# Don't set namespace prefixes - uses element context namespaces + +@nodes = $xp->findnodes('//foo:foo'); # should find foobar.com foos +ok(@nodes, 3); + +@nodes = $xp->findnodes('//goo:foo'); # should find no foos +ok(@nodes, 0); + +@nodes = $xp->findnodes('//foo'); # should find default NS foos +ok(@nodes, 2); + +# Set namespace mappings. + +$xp->set_namespace("foo" => "flubber.example.com"); +$xp->set_namespace("goo" => "foobar.example.com"); + +# warn "TEST 6\n"; +@nodes = $xp->findnodes('//foo:foo'); # should find flubber.com foos +# warn "found: ", scalar @nodes, "\n"; +ok(@nodes, 2); + +@nodes = $xp->findnodes('//goo:foo'); # should find foobar.com foos +ok(@nodes, 3); + +@nodes = $xp->findnodes('//foo'); # should find default NS foos +ok(@nodes, 2); + +ok($xp->findvalue('//attr:node/@attr:findme'), 'someval'); + +__DATA__ +<xml xmlns:foo="foobar.example.com" + xmlns="flubber.example.com"> + <foo> + <bar/> + <foo/> + </foo> + <foo:foo> + <foo:foo/> + <foo:bar/> + <foo:bar/> + <foo:foo/> + </foo:foo> + <attr:node xmlns:attr="attribute.example.com" + attr:findme="someval"/> +</xml> |