def initialize(tag = nil, attr = nil, *children)
super(*children)
raise "parameter error" if !tag
@name = nil
@prefix = nil
@localname = nil
@uri = nil
@idAttribute = nil
if tag.is_a?(Array)
raise "parameter error" if tag.length != 2
@localname = tag[1]
if tag[1].index(':')
@prefix, @localname = tag[1].split(':')
end
@name = tag[1]
@uri = tag[0]
else
@name = tag
end
@name.freeze
@localname.freeze
@uri.freeze
@prefix.freeze
if attr.nil?
@attr = NamedNodeMap.new([])
elsif attr.is_a?(Hash)
nodes = []
attr.each do |key, value|
nodes.push(Attr.new(key, value))
end
@attr = NamedNodeMap.new(nodes)
elsif attr.is_a?(Array)
@attr = NamedNodeMap.new(attr)
elsif attr.nodeType == ATTRIBUTE_NODE
@attr = NamedNodeMap.new([attr])
else
raise "parameter error: #{attr}"
end
@attr.each do |attr|
attr.ownerElement = self
end
end