微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wsdl产生错误的Xsd选择

如何解决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 举报,一经查实,本站将立刻删除。