diff --git a/lib/nokogiri/xml/document.rb b/lib/nokogiri/xml/document.rb index 2428c9e730..57c6049b72 100644 --- a/lib/nokogiri/xml/document.rb +++ b/lib/nokogiri/xml/document.rb @@ -87,8 +87,9 @@ def create_element name, *args, &block if key =~ NCNAME_RE ns_name = key.split(":", 2)[1] elm.add_namespace_definition ns_name, v + else + elm[k.to_s] = v.to_s end - elm[k.to_s] = v.to_s } else elm.content = arg diff --git a/test/namespaces/test_namespaces_in_builder_doc.rb b/test/namespaces/test_namespaces_in_builder_doc.rb index cf6ab732b8..038a0bacd1 100644 --- a/test/namespaces/test_namespaces_in_builder_doc.rb +++ b/test/namespaces/test_namespaces_in_builder_doc.rb @@ -55,6 +55,12 @@ def test_builder_buried_default_ns def test_builder_buried_decl_ns assert_equal 'ns:veg', check_namespace(@doc.root.elements[3].elements[1]) end + def test_builder_namespace_count + n = @doc.root.clone + n.children.each &:remove + ns_attrs = n.to_xml.scan(/\bxmlns(?::.+?)?=/) + assert_equal 3, ns_attrs.length + end end end end diff --git a/test/namespaces/test_namespaces_in_created_doc.rb b/test/namespaces/test_namespaces_in_created_doc.rb index 7d1ad0de9a..92d0a887e8 100644 --- a/test/namespaces/test_namespaces_in_created_doc.rb +++ b/test/namespaces/test_namespaces_in_created_doc.rb @@ -57,6 +57,12 @@ def test_created_buried_default_ns def test_created_buried_decl_ns assert_equal 'ns:veg', check_namespace(@doc.root.elements[3].elements[1]) end + def test_created_namespace_count + n = @doc.root.clone + n.children.each &:remove + ns_attrs = n.to_xml.scan(/\bxmlns(?::.+?)?=/) + assert_equal 3, ns_attrs.length + end end end end diff --git a/test/namespaces/test_namespaces_in_parsed_doc.rb b/test/namespaces/test_namespaces_in_parsed_doc.rb index 01244aef67..b60696b850 100644 --- a/test/namespaces/test_namespaces_in_parsed_doc.rb +++ b/test/namespaces/test_namespaces_in_parsed_doc.rb @@ -55,6 +55,12 @@ def test_parsed_buried_default_ns def test_parsed_buried_decl_ns assert_equal 'ns:veg', check_namespace(@doc.root.elements[3].elements[1]) end + def test_parsed_namespace_count + n = @doc.root.clone + n.children.each &:remove + ns_attrs = n.to_xml.scan(/\bxmlns(?::.+?)?=/) + assert_equal 3, ns_attrs.length + end end end end