2011-05-24 101 views
2

我目前正在使用Java/apache cxf的wsdl/soap項目。在wsdl文件中,xsd部分包含一個xsd外部文件。
當我建立我的文件(使用wsdl2java)時,一切運行良好。然而,當我嘗試打開網頁,並使用由CXF產生的JavaScript,我有以下錯誤:在wsdl生成錯誤的Xsd選擇

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:我對所有這些東西都比較陌生,所以如果您需要其他東西來避免這種情況,或者如果我不夠清楚,請告訴我。

謝謝。

回答

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

雖然這可能工作,這似乎並不等同於我。 在第二種情況下,您可以擁有a和b孩子,但仍然有效。 該選擇包括在序列中,但相反是錯誤的:) – 2011-08-22 06:33:46

+0

我相信你的困惑來自忽略「無界」對選擇的影響;它確實允許後跟 - 仍然有效。閱讀方式如下:第一選擇,第二選擇等 – 2011-08-22 15:13:59

+0

啊是的,我的不好,我忘記了選擇上的無界限,我的評論沒有考慮到這一點。 我會在白天試試你的解決方案,看看它是否會工作:) – 2011-08-23 06:58:58