如何在 xsd 文件中指定架构位置?

2022-09-03 13:59:31

我有一个xsd文件Foo.xsd。我尝试了以下方法在WSDL文件中引用它,但它不起作用。

1)将xsd文件放在本地文件系统中并将其导入为

<xsd:import namespace="http://ws.test.com/" schemaLocation="file:///D:/wsdl/Foo.xsd"></xsd:import>

2)将xsd文件放在Web根文件夹中并导入为

<xsd:import namespace="http://ws.test.com/" schemaLocation="http://localhost:8080/Xfire/Foo.xsd"></xsd:import>

当我运行客户端时,我得到响应对象字段的 null。但是,当我将类型定义嵌入到 WSDL 本身中时,这就起作用了。

如何指定外部 xsd 的路径?

我正在使用xFire 1.2.6来生成Web服务。客户端是使用 xFire WSGen ant 任务生成的。


答案 1

WSDL 通过 HTTP 从任何主机访问,因此客户端既不能访问文件 URL,也不能访问本地主机(这将是它自己的主机,而不是您的服务器)。最好的解决方案是 xsd 文件的文件路径:

相对路径:

<xsd:import namespace="http://ws.test.com/" schemaLocation="../Foo.xsd"/>

绝对路径:

<xsd:import namespace="http://ws.test.com/" schemaLocation="/myapp/Foo.xsd"/>

对于绝对路径,您需要知道web应用程序的上下文路径,因此我更喜欢相对路径。


答案 2

推荐