2

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の特定の部分を定義する必要がありますか?

ありがとうございました。

4

3 に答える 3

3

<schema>問題は、タグで定義された要素でした。<schema>とにかく完全に不要だったので、最初にタグ内のすべての定義済み要素を削除しました。<schema>次に、メッセージ部分の要素の名前空間をs1からxsd1に変更して、タグで定義した要素の代わりにcwmp-1-2.xsdの要素を使用しました。

私の他の質問に関しては、targetNameSpaceは実際のURIを指す必要はなく、このドキュメントの名前空間の名前にすぎません。2番目の質問では、スキーマ要素全体をメッセージの一部として使用するのがおそらく最善で最も簡単だと思います。

于 2011-03-02T12:55:21.757 に答える
0

私はそれに気づきます

<xsd:schema>

終了タグがありませんか?wsdlは整形式のXMLドキュメントですか?

Targetnamespaceは、インスタンスドキュメントの名前空間、つまり、SOAP:Envelopeの名前空間です。

于 2011-03-01T16:12:51.303 に答える
0

エラーメッセージには、何が問題なのかが示されています。xsd1:GetRPCMethodsの定義がありません。これはどこかで定義されていますか?s1:GetRPCMethodsが検索されます-> s1がurn:trn069であることが判明-> urn:trn069は一意ではないため、問題が発生する可能性があります-> urn:trn69は、xsd1:GetRPCMethodsタイプの要素GetRPCMethodsを定義します->このタイプ見つかりません。

targetNamespaceに同じURIを使用することが有効かどうかはわかりません。多分それは追加の問題を引き起こしています。

于 2011-03-01T16:40:46.090 に答える