mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/rexml] xpath: fix a bug that no namespace attribute isn't matched with prefix
[ruby-list:50733]
Reported by Yasuhiro KIMURA. Thanks!!!
8f3c5c176a
This commit is contained in:
parent
f76cfb55d7
commit
3583fa166c
2 changed files with 14 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue