sig
  type soapStyleChoice = Soap_RPC | Soap_Document
  type soap_binding = {
    nms_prefix : Namespace_names.prefix;
    transport : Datatypes.xs_anyURI option;
    soap_binding_style : Wsdl_ast.soapStyleChoice option;
    encodingStyleDefault : Datatypes.xs_anyURI option;
  }
  type soapUseChoice = Literal | Encoded
  type soap_body = {
    soap_body_encodingStyle : Datatypes.xs_anyURI option;
    use : Wsdl_ast.soapUseChoice option;
    soap_body_nms : Datatypes.xs_anyURI option;
  }
  type soap_header = {
    soap_header_element : Namespace_names.uqname option;
    soap_header_type : Namespace_names.uqname option;
    soap_header_localname : string option;
    soap_header_nms : Datatypes.xs_anyURI option;
    soap_header_encodingStyle : Datatypes.xs_anyURI option;
    soap_header_role : Datatypes.xs_anyURI option;
  }
  type soap_headerfault = {
    soap_headerfault_message : Namespace_names.uqname;
    soap_headerfault_part : string;
    soap_headerfault_nms : Datatypes.xs_anyURI option;
    soap_headerfault_encodingStyle : Datatypes.xs_anyURI option;
  }
  type soap_inout =
      Wsdl_ast.soap_body option * Wsdl_ast.soap_header list *
      Wsdl_ast.soap_headerfault list
  type soap_fault = {
    soap_fault_prefix : Namespace_names.prefix;
    soap_fault_name : string;
    soap_fault_nms : Datatypes.xs_anyURI option;
    soap_fault_encodingStyle : Datatypes.xs_anyURI option;
  }
  type soap_operation = {
    nms_soap_operation : Namespace_names.prefix;
    soapAction : Datatypes.xs_anyURI option;
    soap_operation_style : Wsdl_ast.soapStyleChoice option;
  }
  type soap_address = {
    nms_soap_address : Namespace_names.prefix;
    location : Datatypes.xs_anyURI;
  }
  type part_type_decl =
      PartType of (Namespace_names.uri * Namespace_names.uqname)
    | PartElement of (Namespace_names.uri * Namespace_names.uqname)
  type part = {
    part_name : Namespace_names.ncname;
    part_type : Wsdl_ast.part_type_decl;
  }
  type message = {
    message_name : Namespace_names.ncname;
    mutable message_parts : Wsdl_ast.part list;
  }
  type operation_in_port_type = {
    operation_name : Namespace_names.ncname;
    input : Namespace_names.rqname option;
    output : Namespace_names.rqname option;
    faults : Namespace_names.rqname list;
  }
  type port_type = {
    port_type_name : Namespace_names.ncname;
    mutable operations : Wsdl_ast.operation_in_port_type list;
    mutable extends : string option;
  }
  type operation_in_binding = {
    operation_in_binding_name : Namespace_names.ncname;
    binding_input : Wsdl_ast.soap_inout option;
    binding_output : Wsdl_ast.soap_inout option;
    binding_faults : Wsdl_ast.soap_fault list;
    binding_soap_operation : Wsdl_ast.soap_operation option;
    http_relative_uri : string option;
  }
  type service_binding = {
    binding_name : string;
    binding_type : Namespace_names.rqname;
    mutable bind_soap : Wsdl_ast.soap_binding option;
    mutable binding_operations : Wsdl_ast.operation_in_binding list;
    http_method : string;
  }
  type service_port = {
    service_port_name : Namespace_names.ncname;
    service_port_binding : Namespace_names.rqname;
    port_soap_address : Wsdl_ast.soap_address option;
    http_base_uri : string option;
  }
  type service = {
    service_name : string;
    mutable ports : Wsdl_ast.service_port list;
  }
  type service_schema = Xquery_type_ast.xschema
  type wsdl_module = {
    wsdl_name : string;
    mutable global_xmlns : Namespace_context.binding_table;
    mutable targetNamespace : Datatypes.xs_anyURI;
    mutable wsdl_services : Wsdl_ast.service list;
    mutable wsdl_types : Wsdl_ast.service_schema option;
    mutable wsdl_bindings : Wsdl_ast.service_binding list;
    mutable wsdl_port_types : Wsdl_ast.port_type list;
    mutable wsdl_messages : Wsdl_ast.message list;
    mutable soapenv_prefix_name : Namespace_names.ncname;
    mutable xsi_prefix_name : Namespace_names.ncname;
    mutable xsd_prefix_name : Namespace_names.ncname;
  }
end