WSDL Module

# Introduction to the WSDL Module

The WSDL module provides functionality for SOAP 1.1 and 1.2.

The main purpose of this module is to provide the infrastructure for developing SOAP client and server services.

The main components of this module are as follows:

- WebService: represents a WSDL file; an easy way to get an object of this type from a URL is by calling WSDL::WSDLLib::getWSDL()
- WSDLLib: a class of static functions providing helper functions for the module
- WSOperation: a class representing a single operation from a SOAP web service
- WSMessageHelper: a class to create sample messages used by SOAP operations

See the following for modules using the WSDL module:

- SoapClient user module
- SoapHandler user module

# WSDL Module Release Notes

## WSDL v0.3.7

- implemented supoprt for handling SOAP faults in response messages with SOAP bindings (issue 2804)
- fixed an error in namespace resolution with nested namespaces (issue 2786)
- fixed a type error in example message generation that resulted in failed example message generation (issue 2782)
- fixed a bug in example message generation that resulted in invalid messages (issue 2752)
- implemented the wsdl_set_global_compat_empty_string_is_nothing function and the `"compat_empty_string_is_nothing"` option for the WebService class for backwards compatibility with older versions of the WSDL module (issue 2754)
- implemented the wsdl_set_global_compat_allow_any_header function and the `"compat_allow_any_header"` option for the WebService class for backwards compatibility with older versions of the WSDL module (issue 2765)

## WSDL v0.3.6

- reimplmented operation to support multi binding, operation can be assigned to more bindings
- support for HTTP binding and content-types, "^content-type^" attribute can identify content type to be used
- extended SOAP binding serialization and deserialization with support to both body and header

## WSDL v0.3.5.1

- supress emitting a SOAPAction header in requests if the binding gives an empty string (issue 1226)
- updated WSDL::WSOperation::serializeRequest() to allow the SOAPAction header to be overridden in each request (issue 1226)
- respect XML generation flags in request generation
- fixed parsing empty base64Binary and hexBinary elements (issue 1227)

## WSDL v0.3.5

- fixed many message serialization and deserialization issues
- added WSDL::WebService::getOperation()
- allow for environment variable substitution in WSDLLib::getWSDL() when retrieving files
- fixed charset=... header value
- added WSDL::WSMessageHelper
- added WSDL::WebService::getReport()

## WSDL v0.3.4

- updated to a user module

## WSDL v0.3.3

- added initial support for the anyAttribute element of complexType
- added initial support for SOAP header processing
- added initial support for multiple portType and bindings in a WSDL

## WSDL v0.3.2

- fixed bugs de/serializing negative values for "int" and "short"

## WSDL v0.3.1

- improved XSD imports and namespace handling

## WSDL v0.3.0

- implemented WSDLLib class of helper functions
- implemented support for xsd import statements in WSDLs

## WSDL v0.2.0

- use parseXMLAsData() instead of parseXML()
- implemented initial simpleType support
- fixed xsd:date serialization and deserialization