gpt4 book ai didi

java - XSD 断言可以用于指定 WSDL 文件吗

转载 作者:搜寻专家 更新时间:2023-11-01 00:54:32 25 4
gpt4 key购买 nike

我有一个 WSDL 文件,其中还包含其中使用的所有类型(通过 <wsdl:types> 标签)。在定义类型时,我有这样的东西:

<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,所以我不知道这是 xsd 版本(1.0 vs. 1.1)的问题还是其他原因。

有人可以帮我找出真正的问题吗?

编辑: 我添加了 wsdl 的 header 。 我已将版本属性 ( version="1.1" ) 添加到 <xs:schema>定义,但这也无济于事:

<xs:schema targetNamespace="http://www.xxx.yyy/reg/definitions" elementFormDefault="qualified" version="1.1">

最佳答案

看起来像assertions were introduced with XML Schema v1.1XMLSchema definition moved over to w3.org .

示例标题:

<wsdl:description
targetNamespace="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
xmlns="http://www.w3.org/2002/ws/sawsdl/spec/wsdl/order#"
xmlns:wsdl="http://www.w3.org/ns/wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sawsdl="http://www.w3.org/ns/sawsdl">

关于java - XSD 断言可以用于指定 WSDL 文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com