简体   繁体   English

FpML 5.3 JAXB绑定

[英]FpML 5.3 JAXB Bindings

How do I use jaxb bindings to fix multiple group references in a schema? 如何使用jaxb绑定来修复模式中的多个组引用?

Part of fpml 5.3 has the following in the schema 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>

This results in 这导致

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

The error is misleading. 该错误具有误导性。 EquityPrice.model starts with this and line 1361 is the grossPrice. EquityPrice.model以此开始,并且1361行是GrossPrice。 The issue stems from above where there are 2 group references to EquityPrice.model in the Price complex type. 问题源于上面,其中有2个组对Price复杂类型中的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>

The same thing applies for TradeNovationContent where it has multiple references to NewTrade.model. 相同的事物适用于TradeNovationContent,其中具有对NewTrade.model的多个引用。

I also had this same problem, the solution was to enable simple binding mode. 我也有同样的问题,解决方案是启用简单绑定模式。 Add the following into your external bindings file. 将以下内容添加到您的外部绑定文件中。

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

Error is caused by the way JAXB is handling groups, as you've seen yourself. 如您所见,错误是由JAXB处理组的方式引起的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM