我正在使用gSOAP從WSDL文檔創建C++代碼。問題是當我在WSDL文件上運行wsdl2h工具時,gSOAP給我帶來了錯誤。這些錯誤都與名稱空間問題有關。例如gSOAP和一般SOAP問題
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的特定部分?
謝謝。
對不起,我沒有正確粘貼它的問題,我編輯了這個問題。是的,文件格式良好。所以targetNamespace可以是任何東西? – toc777 2011-03-01 16:18:28
是的,它可以是任何URI(URL或URN),但確保它是有意義的。例如,如果您決定使用URI並擁有域「mydomain」,我寧願將它保留爲> http:// mydomain/xml/types/item – javadeveloper 2011-03-02 15:14:49