wsdl中的Xsd选择产生错误

时间:2011-05-24 11:01:50

标签: java xsd wsdl cxf

我目前正在使用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行为上遗漏了什么?或者这是一个错误吗?

P.S:我对所有这些东西都比较陌生,所以如果你需要别的东西来躲避这个或者我不够清楚,那就告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

我会尝试使用下面的模式替换重复的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>