title: Is WSDL binding optional?
body: <p>I have a wsdl file <strong>without</strong> binding section:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8" standalone="no"?&gt;
  &lt;wsdl:definitions xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Engage" targetNamespace="http://tempuri.org/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"&gt;
    &lt;wsdl:types&gt;
      &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://tempuri.org/"&gt;
        &lt;xs:element name="OtherData"&gt;
          &lt;xs:complexType&gt;
            &lt;xs:sequence&gt;
              &lt;xs:element minOccurs="0" name="id" nillable="true" type="xs:string" /&gt;
            &lt;/xs:sequence&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
        &lt;xs:element name="OtherDataResponse"&gt;
          &lt;xs:complexType&gt;
            &lt;xs:sequence&gt;
              &lt;xs:element minOccurs="0" name="OtherDataResult" nillable="true" type="xs:string" /&gt;
            &lt;/xs:sequence&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
        &lt;xs:element name="MyData"&gt;
          &lt;xs:complexType&gt;
            &lt;xs:sequence&gt;
              &lt;xs:element minOccurs="0" name="id" nillable="true" type="xs:string" /&gt;
            &lt;/xs:sequence&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
        &lt;xs:element name="MyDataResponse"&gt;
          &lt;xs:complexType&gt;
            &lt;xs:sequence&gt;
              &lt;xs:element minOccurs="0" name="MyDataResult" nillable="true" type="xs:string" /&gt;
            &lt;/xs:sequence&gt;
          &lt;/xs:complexType&gt;
        &lt;/xs:element&gt;
      &lt;/xs:schema&gt;
      &lt;xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/"&gt;
        &lt;xs:element name="anyType" nillable="true" type="xs:anyType" /&gt;
        &lt;xs:element name="anyURI" nillable="true" type="xs:anyURI" /&gt;
        &lt;xs:element name="base64Binary" nillable="true" type="xs:base64Binary" /&gt;
        &lt;xs:element name="boolean" nillable="true" type="xs:boolean" /&gt;
        &lt;xs:element name="byte" nillable="true" type="xs:byte" /&gt;
        &lt;xs:element name="dateTime" nillable="true" type="xs:dateTime" /&gt;
        &lt;xs:element name="decimal" nillable="true" type="xs:decimal" /&gt;
        &lt;xs:element name="double" nillable="true" type="xs:double" /&gt;
        &lt;xs:element name="float" nillable="true" type="xs:float" /&gt;
        &lt;xs:element name="int" nillable="true" type="xs:int" /&gt;
        &lt;xs:element name="long" nillable="true" type="xs:long" /&gt;
        &lt;xs:element name="QName" nillable="true" type="xs:QName" /&gt;
        &lt;xs:element name="short" nillable="true" type="xs:short" /&gt;
        &lt;xs:element name="string" nillable="true" type="xs:string" /&gt;
        &lt;xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" /&gt;
        &lt;xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" /&gt;
        &lt;xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" /&gt;
        &lt;xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" /&gt;
        &lt;xs:element name="char" nillable="true" type="tns:char" /&gt;
        &lt;xs:simpleType name="char"&gt;
          &lt;xs:restriction base="xs:int" /&gt;
        &lt;/xs:simpleType&gt;
        &lt;xs:element name="duration" nillable="true" type="tns:duration" /&gt;
        &lt;xs:simpleType name="duration"&gt;
          &lt;xs:restriction base="xs:duration"&gt;
            &lt;xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" /&gt;
            &lt;xs:minInclusive value="-P10675199DT2H48M5.4775808S" /&gt;
            &lt;xs:maxInclusive value="P10675199DT2H48M5.4775807S" /&gt;
          &lt;/xs:restriction&gt;
        &lt;/xs:simpleType&gt;
        &lt;xs:element name="guid" nillable="true" type="tns:guid" /&gt;
        &lt;xs:simpleType name="guid"&gt;
          &lt;xs:restriction base="xs:string"&gt;
            &lt;xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" /&gt;
          &lt;/xs:restriction&gt;
        &lt;/xs:simpleType&gt;
        &lt;xs:attribute name="FactoryType" type="xs:QName" /&gt;
        &lt;xs:attribute name="Id" type="xs:ID" /&gt;
        &lt;xs:attribute name="Ref" type="xs:IDREF" /&gt;
      &lt;/xs:schema&gt;
    &lt;/wsdl:types&gt;
    &lt;wsdl:message name="IMyService_OtherData_InputMessage"&gt;
      &lt;wsdl:part element="tns:OtherData" name="parameters" /&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:message name="IMyService_OtherData_OutputMessage"&gt;
      &lt;wsdl:part element="tns:OtherDataResponse" name="parameters" /&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:message name="IMyService_MyData_InputMessage"&gt;
      &lt;wsdl:part element="tns:MyData" name="parameters" /&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:message name="IMyService_MyData_OutputMessage"&gt;
      &lt;wsdl:part element="tns:MyDataResponse" name="parameters" /&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:portType name="IMyService"&gt;
      &lt;wsdl:operation name="OtherData"&gt;
        &lt;wsdl:input message="tns:IMyService_OtherData_InputMessage" wsaw:Action="http://tempuri.org/IMyService/OtherData" /&gt;
        &lt;wsdl:output message="tns:IMyService_OtherData_OutputMessage" wsaw:Action="http://tempuri.org/IMyService/OtherDataResponse" /&gt;
      &lt;/wsdl:operation&gt;
      &lt;wsdl:operation name="MyData"&gt;
        &lt;wsdl:input message="tns:IMyService_MyData_InputMessage" wsaw:Action="http://tempuri.org/IMyService/MyData" /&gt;
        &lt;wsdl:output message="tns:IMyService_MyData_OutputMessage" wsaw:Action="http://tempuri.org/IMyService/MyDataResponse" /&gt;
      &lt;/wsdl:operation&gt;
    &lt;/wsdl:portType&gt;
    &lt;wsdl:service name="MyService"&gt;
      &lt;wsdl:port name="xmlPort"&gt;
        &lt;http:address location="http://localhost:59109/MyService.svc/xml" /&gt;
      &lt;/wsdl:port&gt;
      &lt;wsdl:port name="jsonPort"&gt;
        &lt;http:address location="http://localhost:59109/MyService.svc/json" /&gt;
      &lt;/wsdl:port&gt;
    &lt;/wsdl:service&gt;
  &lt;/wsdl:definitions&gt;
  </code></pre>
  
  <p>Is this wsdl valid? Or in other words can we have wsdl without a binding section or it is required and this wsdl is invalid? Some tools (like SoapUI) throws exception but the other (like this <a href="https://www.wsdl-analyzer.com/" rel="nofollow">https://www.wsdl-analyzer.com/</a>) says that this is valid wsdl.</p>