Since WSDL specifies a section for type definitions, I wonder how this type definitions are enforced so that the message exchange will fail when the contents of the messages don't match the requested types.
According to what I have read, Web Services can exist without a WSDL (just do a quick search for "web services without wsdl"). It's not an ideal situation, but it can happen, and the Web Service can still be used as long as the consumer knows how the message is structured. If this is true, then the types defined in the WSDL are merely informative, aren't they? It seems there isn't an automatic mechanism that binds the type definitions of the WSDL with actual type validations. It seems the WSDL documentation doesn't say anything in this regard either.
How is type validation usually enforced in Web Services? Is it the server's responsibility to provide such validation and return a failure message if something goes wrong? What is the client's reponsibility when it comes to type validation?