IT:AD:WSDL
Summary
Web Services Description Language (WSDL) is an XML grammar for publishing descriptions of Services as collections of endpoints for exchanging messages.
A WSDL doc is an xml/ file with an *.wsdl
extension, made up of the following;
- Ports (:= Class)
- Operation (:= Function)
- Messages (:= Parameters)
- Types (:= Parameter Types)
- Binding (⇒ Protocol and Message format)
Note:
A *.wsdl
differs from a *.disco
which is a MS mechanism for publishing specifications of WebServices/, which is an older/retired technology.
Example
An example oa WSLD 1.2 file’s contents:
<wsdl:definitions name="nmtoken"? targetNamespace="uri"> <!--A WSDL can import TODO --> <import namespace="uri" location="uri"/> * <wsdl:documentation .... /> ? <!-- For maximum platform neutrality, WSDL uses XML Schema --> <wsdl:types> ? <wsdl:documentation .... /> ? <xsd:schema .... /> * </wsdl:types> <!--Message (:=ArgPkg) used by an Operation (:=Method) within a Port (:=Class)--> <!-- Message (:=ArgPkg) can contain one or more part (:=Arguments) --> <message name="setUserPrefRequest"> <wsdl:documentation .... /> ? <part name="key" type="xs:string"/> <part name="value" type="xs:string"/> </message> <!--Message (:=ArgPkg) used by an Operation (:=Method) within a Port (:=Class)--> <message name="getUserPrefRequest"> <wsdl:documentation .... /> ? <part name="key" type="xs:string"/> </message> <!-- Port (:=Class) containing Operations (:=Methods)--> <portType name="userPrefs"> <wsdl:documentation .... /> ? <operation name=”setUserPref”> <wsdl:documentation .... /> ? <input message=”setUserPrefRequest”/> </operation> <operation name="getUserPref"> <wsdl:documentation .... /> ? <input message="setUserPrefRequest"/> <output message="setUserPrefResponse"/> </operation> </portType> <!-- Binding name ties to portType name --> <binding name="myBinding" type="userPrefs" > <!-- binding [rpc|document], transport (:=transport protocol) [http] --> <!-- So here we’re saying that the doc has to use SOAP HTTP --> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <!-- Have to map each operation exposed...never userstood why the repetition! --> <operation> <soap:operation soapAction="http://mysite.com/setUserPref"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> <operation> <soap:operation soapAction="http://mysite.com/getUserPref"/> <input><soap:body use="literal"/></input> </operation> </binding> <!-- TODO --> <wsdl:service name="ncname" serviceType="qname"> * <wsdl:documentation .... /> ? <wsdl:port name="ncname" binding="qname"> * <wsdl:documentation .... /> ? <-- address details --> </wsdl:port> </wsdl:service> </wsdl:definitions>