summaryrefslogtreecommitdiff
path: root/t/24namespaces.t
diff options
context:
space:
mode:
Diffstat (limited to 't/24namespaces.t')
-rw-r--r--t/24namespaces.t56
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>