private Method

Parser.decode_tag(ns, name, attrs, parent)

There's no documentation for this item.

Source Code

# File wsdl/parser.rb, line 110
def decode_tag(ns, name, attrs, parent)
  o = nil
  elename = ns.parse(name)
  if !parent
    if elename == DefinitionsName
      o = Definitions.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 == XMLSchema::AnnotationName
      # only the first annotation element is allowed for each xsd element.
      o = XMLSchema::Annotation.new
    else
      o = parent.parse_element(elename)
    end
    unless o
      unless @ignored.key?(elename)
        warn("ignored element: #{elename}")
        @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
    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
  o
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.