Bugs item #7674, was opened at 2007-01-08 09:09
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=7674&group_id=426

>Category: DB / File Formats
Group: 1.8.5
Status: Open
Resolution: None
Priority: 3
Submitted By: John Franey (jfraney)
Assigned to: Nobody (None)
Summary: rexml: Attribute prefix returns non-empty value for attributes in nonamespace

Initial Comment:

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'





----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=7674&group_id=426