summaryrefslogtreecommitdiff
path: root/lib/rexml/element.rb
diff options
context:
space:
mode:
authorKouhei Sutou <kou@clear-code.com>2019-01-01 06:32:18 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-08-04 11:54:27 +0900
commit0f18bc7fca0668aa2ffeb15106525526e4f018ba (patch)
tree19b366029204501871ca1ea9d186aeda2095555d /lib/rexml/element.rb
parent9b36f0a787dfb1a2a3875b827b455b5a9a2f2680 (diff)
[ruby/rexml] Fix attribute's default namespace behavior
NOTE: It's a backward incompatible change. If we have any serious problems with this change, we may revert this change. The XML namespace specification says the default namespace doesn't apply to attribute names but it does in REXML without this change: https://www.w3.org/TR/xml-names/#uniqAttrs > the default namespace does not apply to attribute names REXML reports a parse error for the following XML that is described as a valid XML in the XML nsmaspace specification without this change: <!-- http://www.w3.org is bound to n1 and is the default --> <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" b="2" /> <good a="1" n1:a="2" /> </x> If attribute doesn't have prefix, the attribute should return "" for both #prefix and #namespace. https://github.com/ruby/rexml/commit/9e4fd552bc
Diffstat (limited to 'lib/rexml/element.rb')
-rw-r--r--lib/rexml/element.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb
index de83ec3b51..c706a7c245 100644
--- a/lib/rexml/element.rb
+++ b/lib/rexml/element.rb
@@ -1133,8 +1133,8 @@ module REXML
elsif old_attr.prefix != value.prefix
# Check for conflicting namespaces
if value.prefix != "xmlns" and old_attr.prefix != "xmlns"
- old_namespace = @element.namespace(old_attr.prefix)
- new_namespace = @element.namespace(value.prefix)
+ old_namespace = old_attr.namespace
+ new_namespace = value.namespace
if old_namespace == new_namespace
raise ParseException.new(
"Namespace conflict in adding attribute \"#{value.name}\": "+