Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29363 defines the WS-I Simple SOAP Binding Profile Version 1.0, a companion specification that constrains SOAP 1.1 binding practices to achieve the highest possible level of interoperability across heterogeneous web service stacks. While SOAP 1.1 is widely implemented, its flexibility with respect to encoding styles, serialization rules, and transport bindings has historically been a source of interop failures. This profile narrows that flexibility to a well-defined subset — the “simple” binding — that all major platforms (Java, .NET, Python, and C++) can support with consistent results.
The profile mandates a strict subset of SOAP 1.1 features. The most significant constraint is the prohibition of the SOAP encoding style (http://schemas.xmlsoap.org/soap/encoding/). Messages must use literal XML representation, meaning the SOAP body contains the actual XML schema types without encoding-specific artifacts such as soapenc:Array or soapenc:struct. The following table summarizes the key serialization rules.
| Constraint | Requirement | Impact |
|---|---|---|
| SOAP encoding style | MUST NOT be used | Array types use xsd:sequence instead of soapenc:Array |
| Body child namespace | MUST be qualified (not in default namespace) | Prevents ambiguity in element QName resolution |
| use attribute (binding) | MUST be “literal” | No SOAP encoding serialization; XML Infoset preserved |
| transport attribute | MUST be “http://schemas.xmlsoap.org/soap/http” | Only HTTP binding is supported |
| style attribute (binding) | “document” or “rpc” | Both allowed; “document” strongly preferred |
| soap:Header entries | mustUse=”literal” | Header blocks also use literal XML serialization |
| soap:Fault detail | Child elements MUST be namespace-qualified | Ensures fault detail can be reliably processed |
For RPC-style bindings, the profile requires that the wrapper element (the procedure name) be namespace-qualified and that the parts map directly to child elements under the wrapper. Crucially, the soapenc:root attribute and the soapenc:offset attribute used in SOAP Encoding are both prohibited, dramatically simplifying deserialization logic.
The profile allows both document/literal and RPC/literal styles, but each carries distinct engineering trade-offs. Document/literal is the preferred pattern because it gives the developer full control over the XML Schema contract — the SOAP body directly contains one or more schema-validated elements. RPC/literal, while simpler to generate from IDL-style interfaces, introduces a wrapper element whose name is derived from the operation name, creating a tighter coupling between the WSDL and the programming model.
The table below compares the two binding styles in the context of the profile’s constraints.
| Aspect | Document/Literal | RPC/Literal |
|---|---|---|
| Body contains | One or more schema elements | Operation-name wrapper with child parts |
| WSDL complexity | Requires explicit schema types | Simpler; types inferred from parts |
| Schema validation | Full XSD 1.0 validation applicable | Wrapper element must be defined in schema |
| Versioning | Easier — add optional elements | Harder — changing parts changes the wrapper signature |
| Toolkit maturity | All modern stacks support | Widely supported but considered legacy |
| WS-I conformance | Strongly recommended | Permitted with wrapper constraints |
The profile explicitly restricts the transport binding to HTTP, effectively deprecating SMTP, JMS, and other protocol bindings for WS-I conformance. The SOAP action HTTP header (SOAPAction) must be present, and its value must be a quoted string matching the soapAction attribute in the WSDL binding. Services that omit or miscalculate the SOAPAction header will fail WS-I compliance validation.
HTTP status code handling is also constrained: a successful SOAP response must use HTTP 200, while a SOAP Fault must be carried in an HTTP 500 response. Non-standard usage such as HTTP 202 for asynchronous acceptance is outside the profile scope.
The standard includes a comprehensive suite of profile assertions that can be validated using the WS-I Conformance Claim Attachments mechanism. Implementations claiming conformance must satisfy all mandatory assertions, covering envelope structure, serialization rules, header processing, and fault construction. The WS-I Testing Tools provide automated validation; engineering teams should integrate these tools into their CI/CD pipeline to catch regressions early.
For teams using contract-first development (WSDL before code), the profile offers a clear advantage: the WSDL document can be validated against the profile’s constraints at design time, long before a single line of implementation code is written. This catches interoperability problems at the specification stage, where they are cheapest to fix.
A: No — the profile is specifically scoped to SOAP 1.1. SOAP 1.2 has its own binding framework defined in the SOAP 1.2 specification and the W3C SOAP 1.2 binding recommendations. The WS-I Basic Profile (BP 1.2) covers SOAP 1.2 scenarios.
A: Yes, implicitly. Multi-reference accessors are a feature of SOAP Encoding (section 5), which is entirely prohibited. All values must be serialized inline using literal XML; reference-based graphs are not supported.
A: Use xsi:nil=”true” on the element. This is fully compatible with literal XML serialization and is supported by all WS-I compliant toolkits. Do not omit the element entirely unless the schema explicitly makes it optional with minOccurs=”0″.
A: Yes — WS-Addressing headers (wsa:Action, wsa:MessageID, wsa:To, etc.) are SOAP header blocks and are fully compatible with the literal header serialization requirement. The profile does not restrict WS-Addressing usage; it simply requires that header blocks be serialized literally with explicit namespace qualifications.