如何解决wsdl产生错误的Xsd选择
| 我目前正在使用Java / apache cxf进行wsdl / soap项目。在wsdl文件中,xsd部分包括一个xsd外部文件。 当我构建文件(使用wsdl2java)时,一切运行正常。但是,当我尝试打开网页并使用cxf生成的javascript时,出现以下错误:May 24,2011 11:34:32 AM org.apache.cxf.common.xmlschema.XmlSchemaUtils unsupportedConstruct
SEVERE: GROUP_CHILD
May 24,2011 11:34:32 AM org.apache.cxf.transport.http_jetty.JettyHTTPDestination doService
WARNING: writeResponse Failed:
org.apache.cxf.common.xmlschema.UnsupportedConstruct: GROUP_CHILD
...
我试图捕获该错误,并在以下块中找到了一些东西:
<xsd:complexType name=\"Scenario\">
<xsd:sequence>
<xsd:element name=\"description\" type=\"tns:Description\" minOccurs=\"0\"/>
<xsd:choice>
<xsd:element name=\"coordinates_center_position\" type=\"tns:GeoCoord3D\"/>
<xsd:element name=\"coordinates_center_position_link\" type=\"tns:FileLink\"/>
</xsd:choice>
<xsd:choice minOccurs=\"0\">
<xsd:element name=\"environment_parameters\" type=\"tns:EnvironmentParameters\"/>
<xsd:element name=\"environment_parameters_link\" type=\"tns:FileLink\"/>
</xsd:choice>
<xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">
<xsd:element name=\"entity_object\" type=\"tns:EntityObject\"/>
<xsd:element name=\"entity_object_link\" type=\"tns:FileLink\"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
最后一个选择是产生错误,但是如果我注释2个元素之一(注释元素可以是一个),则错误消失(并且一切正常)。
我在cxf或xsd行为上缺少什么?还是这是一个错误?
附注:我对所有这些东西都比较陌生,因此,如果您需要其他方法来避免这种情况,或者如果我不够清楚,请告诉我。
谢谢。
解决方法
我将尝试使用以下模式替换重复的xsd:choice。从技术上讲,它们是等效的-但是,它可能会绕过限制-因为它可能与xsd:choice的使用有关。
这个:
<xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">
<xsd:element name=\"a\"/>
<xsd:element name=\"b\"/>
</xsd:choice>
可以替换为:
<xsd:sequence maxOccurs=\"unbounded\">
<xsd:element name=\"a\" minOccurs=\"0\"/>
<xsd:element name=\"b\" minOccurs=\"0\"/>
</xsd:sequence>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。