This is a request to change behavior, not a bug request.
The documented and implemented behavior of method prefix on Attribute is wrong. It should not return the prefix of
the parent element if it does not have a prefix itself. I found this when I was building an XInclude element and printing
it out using prefix method. The attributes in an XInclude 'include' element do not have a namespace. In this case,
prefix should return: ''.
I am running with Ruby 1.8.5 as provided by Suse 10.2.
require 'rexml/document'
def puts_a_by_prefix a
if a.prefix
puts "#{a.prefix}:#{a.name}='#{a.value}'"
else
puts "#{a.name}='#{a.value}'"
end
end
def puts_a_by_write a
a.write($stdout)
puts ""
end
e_include = REXML::Element.new("xi:include")
a_href = REXML::Attribute.new("href", "somefile.xml")
e_include.add_attribute(a_href)
# href has no namespace and should be represented as to: href='somefile.xml'
puts_a_by_prefix a_href # prints: xi:href='somefile.xml'
puts_a_by_write a_href # prints: href='somefile.xml'
|