diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rexml/parsers/baseparser.rb | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/rexml/parsers/baseparser.rb b/lib/rexml/parsers/baseparser.rb index 2df26b82f9..b5b61c34dd 100644 --- a/lib/rexml/parsers/baseparser.rb +++ b/lib/rexml/parsers/baseparser.rb @@ -373,31 +373,31 @@ module REXML if md[4].size > 0 attrs = md[4].scan( ATTRIBUTE_PATTERN ) raise REXML::ParseException.new( "error parsing attributes: [#{attrs.join ', '}], excess = \"#$'\"", @source) if $' and $'.strip.size > 0 - attrs.each { |a,b,c,d,e| - if b == "xmlns" - if c == "xml" - if e != "http://www.w3.org/XML/1998/namespace" + attrs.each do |name, prefix, local_part, quote, value| + if prefix == "xmlns" + if local_part == "xml" + if value != "http://www.w3.org/XML/1998/namespace" msg = "The 'xml' prefix must not be bound to any other namespace "+ "(http://www.w3.org/TR/REC-xml-names/#ns-decl)" raise REXML::ParseException.new( msg, @source, self ) end - elsif c == "xmlns" + elsif local_part == "xmlns" msg = "The 'xmlns' prefix must not be declared "+ "(http://www.w3.org/TR/REC-xml-names/#ns-decl)" raise REXML::ParseException.new( msg, @source, self) end - curr_ns << c - elsif b - prefixes << b unless b == "xml" + curr_ns << local_part + elsif prefix + prefixes << prefix unless prefix == "xml" end - if attributes.has_key? a - msg = "Duplicate attribute #{a.inspect}" - raise REXML::ParseException.new( msg, @source, self) + if attributes.has_key?(name) + msg = "Duplicate attribute #{name.inspect}" + raise REXML::ParseException.new(msg, @source, self) end - attributes[a] = e - } + attributes[name] = value + end end # Verify that all of the prefixes have been defined |