code: def parse(self, wsdl):
          
          parser = etree.XMLParser(remove_blank_text=True, remove_comments=True)
          root = etree.fromstring(wsdl, parser=parser)
          types = {}
          responses = {}
          schemas = {}
          namespace = root.attrib["targetNamespace"]
  
          for element in root[0][0]:
              self._remove_namespace_from_tag(element)
              if element.tag in ["annotation", "group"]:
                  continue
              name = element.attrib["name"]
              if element.tag == "element":
                  if name.endswith("Response"):
                      if name in responses:
                          raise RuntimeError("Schema already defined")
                      responses[name] = element
              elif element.tag == "complexType":
                  types[name] = [element, False]
              else:
                  raise RuntimeError("Top-level element with unexpected tag")
  
          for name, element in responses.iteritems():
              schemas[name] = self._parse_type(element, types)
              schemas[name].namespace = namespace
  
          return schemas
docs: Parse the given C{wsdl} data and build the associated schemas.
  
          @param wdsl: A string containing the raw xml of the WDSL definition
              to parse.
          @return: A C{dict} mapping response type names to their schemas.