gSOAPを使用して、WSDLドキュメントからC++コードを作成しています。問題は、WSDLファイルでwsdl2hツールを実行するとgSOAPでエラーが発生することです。エラーはすべて名前空間の問題に関連しています。例えば
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の特定の部分を定義する必要がありますか?
ありがとうございました。