wsdl 中的 Xsd 选择产生错误

发布于 2024-11-09 19:47:56 字数 1658 浏览 0 评论 0原文

我目前正在使用 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 行为的某些内容?或者这是一个错误?

PS:我对所有这些东西都比较陌生,所以如果您需要其他东西来避免这个问题,或者如果我不够清楚,请告诉我。

谢谢。

I'm currently working on a wsdl/soap project using Java/apache cxf. In the wsdl file, the xsd part includes a xsd external file.
When I build my file (using wsdl2java) everything runs fine. However when I try to open the web page and to use the javascript generated by cxf, I have the following error:

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
...

I tried to catch the error and I found something in the following block:

<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>

The last choice is producing the error, but the error disappear (and everything works fine) if I'm commenting one of the 2 element (the commented element can be either one).

I am missing something on the cxf or xsd behavior? Or is this a bug?

P.S: I'm relatively new to all this stuff so if you need something else to elude this or if I'm not clear enough, just tell me.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℡Ms空城旧梦 2024-11-16 19:47:56

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

I would try to replace the repeating xsd:choice using the pattern below. Technically, they are equivalent - yet, it may get you around a limitation - as it may be related to the use of the xsd:choice.

This:

<xsd:choice minOccurs="0" maxOccurs="unbounded">
    <xsd:element name="a"/>
    <xsd:element name="b"/>
</xsd:choice>

can be replaced by:

<xsd:sequence maxOccurs="unbounded">
    <xsd:element name="a" minOccurs="0"/>
    <xsd:element name="b" minOccurs="0"/>
</xsd:sequence>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文