decode_tag(ns, name, attrs, parent)private
No documentation available.
# File lib/wsdl/xmlSchema/parser.rb, line 108
def decode_tag(ns, name, attrs, parent)
o = nil
elename = ns.parse(name)
if !parent
if elename == SchemaName
o = Schema.parse_element(elename)
o.location = @location
else
raise UnknownElementError.new("unknown element: #{elename}")
end
o.root = @originalroot if @originalroot # o.root = o otherwise
else
if elename == AnnotationName
# only the first annotation element is allowed for each element.
o = Annotation.new
else
o = parent.parse_element(elename)
end
unless o
unless @ignored.key?(elename)
warn("ignored element: #{elename} of #{parent.class}")
@ignored[elename] = elename
end
o = Documentation.new # which accepts any element.
end
# node could be a pseudo element. pseudo element has its own parent.
o.root = parent.root
o.parent = parent if o.parent.nil?
end
attrs.each do |key, value|
attr_ele = ns.parse(key, true)
value_ele = ns.parse(value, true)
value_ele.source = value # for recovery; value may not be a QName
if attr_ele == IdAttrName
o.id = value_ele
else
unless o.parse_attr(attr_ele, value_ele)
unless @ignored.key?(attr_ele)
warn("ignored attr: #{attr_ele}")
@ignored[attr_ele] = attr_ele
end
end
end
end
o
end