I am facing this issue and am unable to figure out a workaround for this.
I have SOAP to Proxy scenario.
In ESR we have used a DTD (doctype) definition to create message structure. It is very large and complex DTD.
In this DTD the namespace is not declared (which I think not required as well in general).
ID is configured properly and it is working fine end to end when testing with SOAP UI.
The issue is when I expose the Webservice to third party they cant import WSDL citing non-compliance to WS-I.
I too checked compliance in SOAP UI and as it turns out that it is not compliant.
I investigated the issue and found that its all because of missing field targetNamespace in <xsd:schema>.
I think it is because the namespace has not been declared in DTD.
Can someone please help with below things:
i) Making it WS-I compliant without adding namespace. (which i think it is not possible)
ii) If I add namespace in WSDL, what should be its value? Namespace where DTD resides in ESR? or there is someother value.
iii) Will this modified WSDL still work after manual changes ? As WSDLs is not editable in sender agreement.
iv) Is xmlAnonymizerbean any help here ?
v) If Needed how to declare and add namespace in a DTD. Will adding namespace in DTD, impact message mapping ?
Let me know if you want any information on this.
PFB the structure for your reference.
<wsdl:definitions name="SI_abc_OUT_Sync" targetNamespace="urn:abc:POD" xmlns:p1="urn:abc:POD" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> --------> here a field targetNamespace must be present which is not defined in DTD.