    # File temp/element.rb, line 1073
        def []=( name, value )
          if value.nil?             # Delete the named attribute
            attr = get_attribute(name)
            delete attr
            return
          end
          element_document = @element.document
          unless value.kind_of? Attribute
            if @element.document and @element.document.doctype
              value = Text::normalize( value, @element.document.doctype )
            else
              value = Text::normalize( value, nil )
            end
            value = Attribute.new(name, value)
          end
          value.element = @element
          old_attr = fetch(value.name, nil)
          if old_attr.nil?
            store(value.name, value)
          elsif old_attr.kind_of? Hash
            old_attr[value.prefix] = value
          elsif old_attr.prefix != value.prefix
            # Check for conflicting namespaces
            raise ParseException.new(
              "Namespace conflict in adding attribute \"#{value.name}\": "+
              "Prefix \"#{old_attr.prefix}\" = "+
              "\"#{@element.namespace(old_attr.prefix)}\" and prefix "+
              "\"#{value.prefix}\" = \"#{@element.namespace(value.prefix)}\"") if
              value.prefix != "xmlns" and old_attr.prefix != "xmlns" and
              @element.namespace( old_attr.prefix ) ==
                @element.namespace( value.prefix )
              store value.name, { old_attr.prefix   => old_attr,
                value.prefix                => value }
          else
            store value.name, value
          end
          return @element
        end