summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rexml/xpath_parser.rb6
-rw-r--r--test/rexml/xpath/test_attribute.rb10
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/rexml/xpath_parser.rb b/lib/rexml/xpath_parser.rb
index e30581d3d0..47fa4ef84e 100644
--- a/lib/rexml/xpath_parser.rb
+++ b/lib/rexml/xpath_parser.rb
@@ -499,7 +499,11 @@ module REXML
else
# FIXME: This DOUBLES the time XPath searches take
ns = get_namespace(raw_node.element, prefix)
- raw_node.name == name and raw_node.namespace == ns
+ if ns.empty?
+ raw_node.name == name and raw_node.prefix.empty?
+ else
+ raw_node.name == name and raw_node.namespace == ns
+ end
end
else
false
diff --git a/test/rexml/xpath/test_attribute.rb b/test/rexml/xpath/test_attribute.rb
index 9304db4e0d..713d77b22f 100644
--- a/test/rexml/xpath/test_attribute.rb
+++ b/test/rexml/xpath/test_attribute.rb
@@ -7,7 +7,7 @@ module REXMLTests
def setup
@xml = <<-XML
<?xml version="1.0" encoding="UTF-8"?>
-<root>
+<root xmlns="http://example.com/">
<child name="one">child1</child>
<child name="two">child2</child>
<child name="three">child3</child>
@@ -26,5 +26,13 @@ module REXMLTests
children = REXML::XPath.each(@document, "/root/child[@name='two']")
assert_equal(["child2"], children.collect(&:text))
end
+
+ def test_no_namespace
+ children = REXML::XPath.match(@document,
+ "/root/child[@nothing:name='two']",
+ "" => "http://example.com/",
+ "nothing" => "")
+ assert_equal(["child2"], children.collect(&:text))
+ end
end
end