由于wsdl中的name属性导致的Web服务兼容性问题

时间:2016-04-26 10:36:46

标签: java eclipse visual-studio web-services wsdl

我尝试使用.net应用程序中的第三方基于java的Web服务。问题是我对给定的wsdl存在兼容性问题。当我尝试在我的VStudio项目中包含这个wsdl时,我收到了这条消息:

Warning: 'name' attribute is invalid. The value 'envio:Foo_Envio" is invalid for data type' http://www.w3.org/2001/XMLSchema:NCName '- The':' character, hexadecimal value 0x3A, can not be used in a name . Line 17, position 20

我已经读过here他们不应该在name属性中使用冒号字符,因为作为NCName类型,它只允许使用非常短的一组。问题是当我在Eclipse Web项目中导入这个wsdl时,我根本就没有问题。你们有没有任何关于Eclipse中发生的事情的任何线索在VS中不起作用?

提前致谢。

关注的wsdl代码:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:Foo="transmision" xmlns:envio="envio.xsd" xmlns:recepcion="recepcion.xsd" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="transmision">
  <types>
    <schema elementFormDefault="qualified" xmlns:Foo="transmision" xmlns:envio="transmision" xmlns:FooRecepcion="recepcion.xsd" xmlns="http://www.w3.org/2001/XMLSchema">
      <xsd:import namespace="recepcion.xsd" schemaLocation="recepcion.xsd"/>
      <xsd:import namespace="envio.xsd" schemaLocation="envio.xsd"/>
    </schema>
  </types>
  <message name="Foo_Envio">
    <part name="envio" element="envio:envio"/>
  </message>
  <message name="Foo_Recepcion">
    <part name="recepcion" element="recepcion:confirmacionRecepcion"/>
  </message>
  <portType name="Foo">
    <operation name="Foo">
      <input name="envio:Foo_Envio" message="Foo:Foo_Envio"/>
      <output name="envio:Foo_Recepcion" message="Foo:Foo_Recepcion"/>
    </operation>
  </portType>
  <binding name="FooSoapBinding" type="Foo:Foo">
    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="Foo">
      <input>
        <wsdlsoap:body use="literal"/>
      </input>
      <output>
        <wsdlsoap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="FooService">
    <port name="Foo" binding="Foo:FooSoapBinding">
      <wsdlsoap:address location="https://ws.whatever.com/iniinvoc/es.foo.Foos.ws.EnvioSOAP"/>
    </port>
  </service>
</definitions>

1 个答案:

答案 0 :(得分:0)

最后我们与第三方联系,他们更改了name属性,删除了“:”字符。