The WS-I Basic profile, in both version 1.0 and 1.1 , has a few related requirements to address this question. However, since these requirements are scattered in different sections and none of the requirements directly answers the question, connecting the dots is not that easy.
For example, in BP1.1 you need to connect the following dots to get an answer for a document-literal style message:
- Step 1: from R2201 and 2210, one can infer that the description of a document-literal style soap message can only contain zero or one wsdl:part.
- Step 2: from R2204, one knows that wsdl:part for a document-literal message must use the “element” attribute.
- Step 3: from R2206, one knows that a wsdl:part that uses the “element” attribute MUST refer, in that attribute, to a global element declaration.
Putting the results of all the 3 steps together, one can finally say that a the body of a document-literal style message can only be defined by at most ONE global element decalration. In other words, a soap:Body, the serialization of such message description, can only have ZERO or ONE child element.
Already dizzy? It can be worse! If the message from your partner is described as a rpc-literal style message, a even more complicate calculation would be needed for one to draw the same conclusion.
The good news is that hopefully you don’t have to explain these steps to your partner anymore. The WS-I BP working group has noticed this issue. It’s proposing to add an explicit requirement in BP errata to clarify it. The pricinciple of the new requirement is something like
A soap ENVELOPE MUST have exactly zero or one child element of the soap:Body element</b>
OK said enough. Let’s make it straight. You can be confident to tell your partner that they need to have their tool fixed since it generates non-BP-conformant messages.