2016-04-25 72 views
2

我有一个带有nuSoap(PHP)的SOAP服务器,我试图导入/包含xsd,但验证器WSDL显示下一个错误:Src-resolve:无法解析名称'OTA_PayloadStdAttributes'到'(n)'属性组'

Src-resolve: Cannot Resolve The Name 'OTA_PayloadStdAttributes' To A(n) 'attribute Group' Component.

<?xml version="1.0" encoding="ISO-8859-1"?> 
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://otatest.goldcar.es/OpenTravel_2015B_XML" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:elementFormDefault="qualified" xmlns:version="2.000" xmlns:id="OTA2015B" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://otatest.goldcar.es/OpenTravel_2015B_XML"> 
<types> 
<xsd:schema elementFormDefault="qualified" version="2.000" id="OTA2015B" targetNamespace="http://otatest.goldcar.es/OpenTravel_2015B_XML" 
> 

<xsd:import schemaLocation="http://otatest.goldcar.es/OpenTravel_2015B_XML/OTA_CommonTypes.xsd" /> 
<xsd:import schemaLocation="http://otatest.goldcar.es/OpenTravel_2015B_XML/OTA_VehicleCommonTypes.xsd" /> 

    <!-- <xsd:include namespace="http://otatest.goldcar.es/OpenTravel_2015B_XML" schemaLocation="http://otatest.goldcar.es/OpenTravel_2015B_XML/OTA_VehResNotifRQ.xsd"/> 
    <xsd:include namespace="http://otatest.goldcar.es/OpenTravel_2015B_XML" schemaLocation="http://otatest.goldcar.es/OpenTravel_2015B_XML/OTA_VehResNotifRS.xsd"/> --> 

</xsd:schema> 
</types> 
<message name="OTA_VehResNotifRQ"> 
    <part name="POS" type="xsd:string" /> 
    <part name="Reservations" type="xsd:string" /></message> 
<message name="OTA_VehResNotifRS"> 
    <part name="Return" type="xsd:string" /></message> 
<portType name="GoldcarPortType"> 
    <operation name="OTA_VehResNotifRQ"> 
    <documentation>This message will push reservation details to a trading partner. The information pushed may establish this reservation initially in a trading partner's database and/or update the information that currently exists.</documentation> 
    <input message="tns:OTA_VehResNotifRQ"/> 
    <output message="tns:OTA_VehResNotifRS"/> 
    </operation> 
</portType> 
<binding name="GoldcarBinding" type="tns:GoldcarPortType"> 
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="OTA_VehResNotifRQ"> 
    <soap:operation soapAction="http://otatest.goldcar.es/#OTA_VehResNotifRQ" style="rpc"/> 
    <input><soap:body use="encoded" namespace="http://otatest.goldcar.es/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input> 
    <output><soap:body use="encoded" namespace="http://otatest.goldcar.es/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output> 
    </operation> 
</binding> 
<service name="Goldcar"> 
    <port name="GoldcarPort" binding="tns:GoldcarBinding"> 
    <soap:address location="http://localhost/ota2sarg2/nuevo_server.php"/> 
    </port> 
</service> 
</definitions> 

上的XSD是OTA_PayloadStdAttributes http://otatest.goldcar.es/OpenTravel_2015B_XML/OTA_VehResNotifRQ.xsd

验证器比显示错误 http://freeformatter.com/xml-validator-xsd.html

编辑

添加验证的所有WSDL,XSD和URL

+0

您应该发布[mcve]。 – kjhughes

+0

您的编辑甚至不会创建[mcve]。 – kjhughes

回答

1

OTA_PayloadStdAttributes无处出现在您的WSDL的XSD的;它必须位于您未显示的其中一个导入的XSD中。

  1. 查找引用OTA_PayloadStdAttributes属性组的XSD。
  2. 确定OTA_PayloadStdAttributes属性组的定义是否位于XSD中直接或间接引用它的位置。
  3. 如果不是,请直接或间接添加缺失的定义(通过xsd:includexsd:import - what's the difference?)。
  4. 如果是这样,请检查引用及其定义的名称空间是否匹配。

这是关于具体,因为我们可以给你,你还没有发布一个MCVE。

+0

我一直在测试,但我仍然找到解决方案。如果您能找到解决方案,我添加了实际的代码。 –

+0

正如我在你的问题的评论中提到的那样,你应该创建一个[mcve],而不是要求那些能够帮助你浏览如此多余的材料的人。你也有责任为未来的读者创建一个独立的问题,而不是依赖于可能破坏的外部链接。 – kjhughes