# File lib/soap/parser.rb, line 115
  def start_element(name, raw_attrs)
    lastframe = @parsestack.last
    ns = parent = parent_encodingstyle = nil
    if lastframe
      ns = lastframe.ns
      parent = lastframe.node
      parent_encodingstyle = lastframe.encodingstyle
    else
      ns = SOAP::NS.new
      parent = ParseFrame::NodeContainer.new(nil)
      parent_encodingstyle = nil
    end
    # ns might be the same
    ns, raw_attrs = XSD::XMLParser.filter_ns(ns, raw_attrs)
    attrs = decode_attrs(ns, raw_attrs)
    encodingstyle = attrs[AttrEncodingStyleName]
    # Children's encodingstyle is derived from its parent.
    if encodingstyle.nil?
      if parent.node.is_a?(SOAPHeader)
        encodingstyle = LiteralNamespace
      else
        encodingstyle = parent_encodingstyle || @default_encodingstyle
      end
    end
    handler = find_handler(encodingstyle)
    unless handler
      raise FormatDecodeError.new("Unknown encodingStyle: #{ encodingstyle }.")
    end
    node = decode_tag(ns, name, attrs, parent, handler)
    if @recycleframe
      @parsestack << @recycleframe.update(ns, name, node, encodingstyle, handler)
      @recycleframe = nil
    else
      @parsestack << ParseFrame.new(ns, name, node, encodingstyle, handler)
    end
  end