Я использую gSOAP для создания кода C ++ из документа WSDL. Проблема в том, что gSOAP выдает мне ошибки, когда я запускаю утилиту wsdl2h в моем файле WSDL. Все ошибки связаны с проблемами пространства имен. Например
Warning: could not find element 'GetRPCMethods' type '"http://www.broadband-forum.org/cwmp/cwmp-1-2.xsd":GetRPCMethods' in schema urn:tr069
Я вставил определения пространств имен и пример их использования ниже. Кто-нибудь знает, где я иду не так?
urn: tr069 должен ссылаться на текущий документ.
<s0:definitions
name="tr069"
xmlns:s0="http://schemas.xmlsoap.org/wsdl/"
xmlns:s1="urn:tr069"
xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:tr069">
<s0:types>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:tr069"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd1="http://www.broadband-forum.org/cwmp/cwmp-1-2.xsd"
targetNamespace="urn:tr069">
<xsd:import namespace="urn:dslforum-org:cwmp-1-2" schemaLocation="cwmp-1-2.xsd" />
<xsd:element name="GetRPCMethods" type="xsd1:GetRPCMethods" />
</xsd:schema>
</s0:types>
<s0:message name="GetRPCMethods">
<s0:part element="s1:GetRPCMethods" name="GetRPCMethods" />
</s0:message>
</s0:definitions>
У меня есть еще несколько вопросов, так как я понимаю, что целевое пространство имен не обязательно должно указывать на реальное местоположение, это просто соглашение для указания на текущий документ. Это правильно? Также в cwmp-1-2.xsd есть элемент с именем GetRPCMethods, который содержит последовательность, содержащую другой элемент. Рекомендуется ли использовать весь этот элемент (GetRPCMethods) в качестве части для сообщения, как описано выше, или я должен определить конкретные части GetRPCMethods в сообщении?
Спасибо.