我有一个WSDL文件,其中还包含所有使用的类型(通过标签)。在定义类型时,我有类似于以下内容:
WSDL版本为1.2,其中类型的描述使用了xsd,但我不知道它使用的是哪个版本(1.0还是1.1),因此我不确定问题是否出在xsd版本上。请问有人能帮我找到真正的问题吗?已经附上wsdl头部信息,我已将定义中的version属性(version="1.1")加入,但仍然没有解决问题。
<wsdl:definitions name="service"
targetNamespace="http://www.xxx.yyy/reg/definitions" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tax="http://www.xxx.yyy/reg/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
.............
<xs:complexType name="CompanyName">
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="ShortName" type="xs:string" minOccurs="0" />
</xs:sequence>
<xs:attribute name="Language" type="tax:LanguageType" use="required"/>
<xs:assert test="ShortName or @Language != 'Language1'"/>
</xs:complexType>
.............
</wsdl:definitions>
很遗憾,当我试图在Tomcat上启动应用程序时,它不起作用,并给出以下异常:
javax.xml.ws.WebServiceException: org.xml.sax.SAXParseException; s4s-elt-invalid-content.1: The content of 'CompanyName' is invalid. Element 'assert' is invalid, misplaced, or occurs too often.
WSDL版本为1.2,其中类型的描述使用了xsd,但我不知道它使用的是哪个版本(1.0还是1.1),因此我不确定问题是否出在xsd版本上。请问有人能帮我找到真正的问题吗?已经附上wsdl头部信息,我已将定义中的version属性(version="1.1")加入,但仍然没有解决问题。
<xs:schema targetNamespace="http://www.xxx.yyy/reg/definitions" elementFormDefault="qualified" version="1.1">
<xmlns:xs="...">
标签,这很难调试。你能包含 WSDL 的头吗? - saarp<wsdl:definitions>
标签中的xmlns:soap
和xmlns:wsdl
命名空间引用之间添加一个空格时,上面的模式可以正确验证。您还可以尝试更新后的 WSDL 模式 URL:http://www.w3.org/ns/wsdl。 - saarp