The http://schemas.xmlsoap.org/soap/envelope/ schema does not specify an 'elementFormDefault' attribute. That means that it defaults to "unqualified". This means that (local) subelements are not namespace qualified. Therefore faultcode, etc MUST be unqualified which is emphasized by the WS-I Basic Profile 1.0 4.1.3 SOAP Faults and Namespaces
SOAP 1.2 The http://www.w3.org/2003/05/soap-envelope/ schema specifies 'elementFormDefault="qualified"' which means that local subelements are namespace qualified. That means that the subelements of {http://www.w3.org/2003/05/soap-envelope/}Fault have to have a namespace prefix as their namespace isn't the default namespace.
The 'elementFormDefault' issue is discussed at length here. It is at this point that I really started to hate XML Schema ...
Also, it is important to note that the new exam uses Basic Profile 1.1, which still refers to SOAP 1.1 and states that the children of fault must be unqualified but the details tag under fault can have qualified elements. So, your first sample is SOAP 1.2 valid but not Basic Profile 1.1 compliant.
No right answer here but here is what I would do: If it's an interoperability question, use SOAP 1.1 If it's a SOAP question use SOAP 1.2 If in doubt use SOAP 1.1 because that's what is referenced most of the time.
Thanks for pointing out this issue. I fear that i studied SOAP 1.1. Now started reading SOAP 1.2. Here is a point about SOAP fault.
In SOAP 1.2, faultcode, faultstring, actor are changed to Code, Reason and Role. And it defines a new element Node.
Can you mention any good articles which describe the differences between SOAP 1.1 and 1.2? And what do you think how big is the change from 1.1 to 1.2?