我正在编写WSDL文件。在WSDL文件中,我可以指定targetNamespace的任何URL吗?或者它应该有效吗?
我的项目有两个WSDL。在两个WSDL中,我给了相同的targetNamespace。会有任何问题吗? Should targetNamespace be unique across WSDLs in the project
?
targetNamespace="http://wsdl.mycompany.com/service
Thsnks!
答案 0 :(得分:1)
是的,您可以将任何URL指定为目标命名空间。它必须是有效的URL或URI(不必在某处部署)。尽管将URL指定为名称空间是一种很好的做法。这有助于使它们独一无二并避免冲突。 命名空间与java包非常相似,它们有助于避免元素名称冲突。你应该在两个WSDL的
中找到不同的命名空间答案 1 :(得分:0)
是的,您可以将任何URL(实际上是任何URI)指定为有效的目标命名空间,因为在该位置大部分都不会发现任何内容。就像一种java包,你可以看到一个名称空间作为一个位置(“上下文”),你的元素,类型和属性的定义将是整数(例如,你的命名空间中只有一个元素'Person',除非元素否则不同)。
也可以让任意数量的WSDL / XML / XSD共享相同的命名空间。
请注意,在这种情况下,您定义的任何内容都将添加到该命名空间中,并且必须是整数,因为否则任何想要从您的WSDL生成存根的人都会收到类似“元素xy是ambigious”的错误。
另一方面,您经常希望将Web服务的某些方面放在其自己的命名空间中。 因此,您可能需要一个名称空间http://www.myCompany.com/namespaces/comm,所有技术请求类型(如“SendBillToBackofficeRequest”)都属于您,而对于任何业务对象(如“Bill”,“Account”),您拥有名称空间http://www.myCompany.com/namespaces/baseTypes ,'客户'等。
我建议阅读有关http://www.w3schools.com/xml/xml_namespaces.asp的内容以完全理解命名空间(实际上很容易,但大多数SWE并不完全理解它)。