我正在学习SOAP Web服务,我对Web服务真的很陌生。在WSDL中,我对定义中的targetNamespace
元素和xsd:schema
中包含的namespace
有点困惑。
<definitions .... targetNamespace=" " >
<xsd:schema>
<xsd:import namespace=" " schemaLocation=""/>
</xsd:schema>
这两个元素是甚么意思呢?我在网上翻查了很多文章,也不清楚这两个元素是甚么意思,请问有没有人可以解释一下?
这两个值是否相同?
3条答案
按热度按时间nnvyjq4y1#
WSDL文件中的目标名称空间将是与SOAP服务本身相关联的名称空间。
XSD导入部分是您指定要导入的XSD的命名空间的地方。XSD文件将包含服务将发送的数据,即它包含将序列化为XML并作为请求和响应上下发送的对象定义。XSD还可以包含WSDL将公开的操作。
WSDL可以导入一个或多个XSD文件,每个XSD都有自己的命名空间。XSD将包含一个命名空间,例如:
http://www.acme.com/Customer/V1/GetCustomerRequest
用于GetCustomerRequest,这将定义GetCustomerRequest操作的数据结构。http://www.acme.com/Customer/V1/CustomerObject
用于CustomerObject,这将定义CustomerObject的数据结构。命名空间有点像Java包,它们只是允许你定义对象的层次结构。需要理解的一件重要的事情是,你可能有两个Customer对象,一个属于你的销售系统,另一个属于你的CRM系统。通过将它们放置在单独的命名空间中,你将能够在同一个服务中使用这两个Customer对象,只要它们具有唯一的命名空间。
通常这些命名空间也会成为SOA目录的一部分,定义它们也是SOA治理标准的一部分,如果你想成功地做SOA,它们是很重要的。
x3naxklr2#
我将使用Java类比来解释。
命名空间类似于Java包。每个xml元素都在一个命名空间中。提供targetNamespace意味着其中定义的所有元素(和类型)都在该命名空间中。这类似于所有Java类都在包中。
导入的xsd将有自己的目标名称空间,这意味着xsd中的所有元素都将位于定义的名称空间中。
wsdl中的导入就像提供指定包的java导入。
我希望我是明确的和有帮助的:D。
afdcj2ne3#
package com.exampl
,用于schema的创建。*targetNamespace类似于java中的package import,一般用于在一个schema中重用另一个schema。
targetNamespace是一个XML Schema的“工件”,用户定义的数据类型在不同的团队工作时可能会有名字冲突的可能性。这是
schema
元素的一个属性,定义了命名空间,即package。按照惯例我们使用URI/URL,但我们可以使用任何字符串。例如:
注意:
xsi:schemaLocation
表示命名空间和URL用空格隔开,xmlns:mvc
表示命名空间http://www.springframework.org/schema/mvc
定义为mvc
alias。命名空间类比:
for more details