使用 svcutil,我正在尝试为遵循OGC CSW 2.0.2 (07-006r1)目录服务标准的Web 服务端点生成代理类。
我已经下载了整个 OGC 模式文件并将它们放入我的“D:/temp/OGCSchemas/”目录中。
我感兴趣的模式是 CSW,但是 CSW 模式包含并导入其他模式,这就是我下载整个集合的原因。
例如,您将看到如下内容:
<wsdl:import namespace="http://www.opengis.net/cat/csw/2.0.2/requests" location="./xml-interfaces.wsdl"/>
<xsd:schema targetNamespace="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="2.0.2">
<xsd:include schemaLocation="../../csw/2.0.2/CSW-discovery.xsd"/>
<xsd:include schemaLocation="../../csw/2.0.2/CSW-publication.xsd"/>
</xsd:schema>
到目前为止,我的命令行如下所示:
svcutil D:\temp\OGCSchemas\csw\2.0.2\examples\wsdl\2.0.2\*.wsdl D:\temp\OGCSchemas\csw\2.0.2\*.xsd D:\temp\OGCSchemas\filter\1.1.0\*.xsd D:\temp\OGCSchemas\ows\1.0.0\*.xsd /out:D:\temp\ogc.csw.proxy.cs
但是我收到了很多看起来像这样的错误:
Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://www.opengis.net/cat/csw/2.0.2/soap']/wsdl:binding[@name='csw-SO
AP']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.opengis.net/cat/csw/2.0.2/wsdl']/wsdl:service[@name='CSW']/
wsdl:port[@name='csw-SOAP-Port']
我相信这个错误告诉我在命令行中包含更多 xsd。
所以我的问题是:如何确定要在命令行中包含哪些 xsd?
我以为我为它所包含的每个目录都包含了一个 *.xsd,但显然不是。
编辑#1 包含 xsd 文件时的规则是什么?必须添加所有导入或包含的文件吗?有了这么大的模式,我想我需要构建一个工具来找到它们。