I was provided a web service to consume by a vendor and they defined the namespace of the web service as follows:
http://company.com/ws/xml
I’m using IBM’s BPM product to consume the web service and the tooling has trouble working with complex types that use that namespace. I’m trying to figure out if this is a problem with the implementation of the tooling or if the WSDL is invalid. Can anyone provide guidance?
I am rather of the opinion that the tooling is wrong. A WSDL’s targetNamespace is a URI reference. There is nothing in the URI setup which cares about XML in particular.
The XML spec states that
Names beginning with the string "xml", or with any string which would match (('X'|'x') ('M'|'m') ('L'|'l')), are reserved for standardization in this or future versions of this specification.That however, doesn’t affect XML namespaces, let alone WSDL targetNamespaces.Now, I call this a “best practice”, which more often than not simply stands for “defences against crazy things”: avoid the use of ((‘X’|’x’) (‘M’|’m’) (‘L’|’l’)) as much as possible. I’ve also seen it before – I was that “vendor” once. In my case, this “client thingy” was mapping URI segments to xml names, which, of course, could result in invalid mappings.