2014-01-27 63 views
0

如何使用jaxb綁定修復架構中的多個組引用?FpML 5.3 JAXB綁定

的FpML 5.3的部分在架構

<xsd:complexType name="Price"> 
<xsd:annotation> 
    <xsd:documentation xml:lang="en">A type describing the strike price.</xsd:documentation> 
</xsd:annotation> 
<xsd:sequence> 
    <xsd:element name="commission" type="Commission" minOccurs="0"> 
    <xsd:annotation> 
     <xsd:documentation xml:lang="en">This optional component specifies the commission to be charged for executing the hedge transactions.</xsd:documentation> 
    </xsd:annotation> 
    </xsd:element> 
    <xsd:choice minOccurs="0"> 
    <xsd:sequence> 
     <xsd:element name="determinationMethod" type="DeterminationMethod"> 
     <xsd:annotation> 
      <xsd:documentation xml:lang="en">Specifies the method according to which an amount or a date is determined.</xsd:documentation> 
     </xsd:annotation> 
     </xsd:element> 
     <xsd:group ref="EquityPrice.model" minOccurs="0"></xsd:group> 
    </xsd:sequence> 
    <xsd:element name="amountRelativeTo" type="AmountReference"> 
     <xsd:annotation> 
     <xsd:documentation xml:lang="en">The href attribute value will be a pointer style reference to the element or component elsewhere in the document where the anchor amount is defined.</xsd:documentation> 
     </xsd:annotation> 
    </xsd:element> 
    <xsd:group ref="EquityPrice.model"></xsd:group> 
    </xsd:choice> 
    <xsd:element name="cleanNetPrice" type="xsd:decimal" minOccurs="0"> 
    <xsd:annotation> 
     <xsd:documentation xml:lang="en">The net price excluding accrued interest. The "Dirty Price" for bonds is put in the "netPrice" element, which includes accrued interest. Thus netPrice - cleanNetPrice = accruedInterest. The currency and price expression for this field are the same as those for the (dirty) netPrice.</xsd:documentation> 
    </xsd:annotation> 
    </xsd:element> 
    <xsd:element name="quotationCharacteristics" type="QuotationCharacteristics" minOccurs="0"> 
    <xsd:annotation> 
     <xsd:documentation>Allows information about how the price was quoted to be provided.</xsd:documentation> 
    </xsd:annotation> 
    </xsd:element> 
</xsd:sequence> 
    </xsd:complexType> 

這將導致以下的

 * <p> 
* You are getting this "catch-all" property because of the following reason: 
* The field name "GrossPrice" is used by two different parts of a schema. See: 
* line 1361 of file:/C:/fpml-jaxb/src/main/xsd/fpml-asset-5-3.xsd 
* line 1361 of file:/C:/fpml-jaxb/src/main/xsd/fpml-asset-5-3.xsd 
* <p> 

的錯誤是誤導性的。 EquityPrice.model以此開始,第1361行是grossPrice。這個問題源自上面的價格複合類型中有2組參考EquityPrice.model。

<xsd:group name="EquityPrice.model"> 
<xsd:sequence> 
    <xsd:element name="grossPrice" type="ActualPrice" minOccurs="0"> 
    <xsd:annotation> 
     <xsd:documentation xml:lang="en">Specifies the price of the underlyer, before commissions.</xsd:documentation> 
    </xsd:annotation> 
    </xsd:element> 

同樣的道理也適用於TradeNovationContent它具有NewTrade.model多個引用。

回答

0

我也有同樣的問題,解決方案是啓用簡單的綁定模式。 將以下內容添加到您的外部綁定文件中。

xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
... 
<jxb:globalBindings> 
    <xjc:simple /> 
</jxb:globalBindings> 

錯誤是由JAXB正在處理組的方式造成,因爲你已經看到自己。