<?xml version="1.0" encoding="utf-8"?>
<!-- 
  == Copyright (c) 2002-2010. All rights reserved. 
  == Financial Products Markup Language is subject to the FpML public license. 
  == A copy of this license is available at http://www.fpml.org/license/license.html
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.fpml.org/2010/FpML-4-9" xmlns:fpml="http://www.fpml.org/2010/FpML-4-9" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:fpml-annotation="http://www.fpml.org/annotation" ecore:nsPrefix="fpml" ecore:package="org.fpml" ecore:documentRoot="FpML" targetNamespace="http://www.fpml.org/2010/FpML-4-9" version="$Revision: 2406 $" attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xsd:include schemaLocation="fpml-option-shared-4-9.xsd" />
  <xsd:complexType name="AbsoluteTolerance">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The acceptable tolerance in the delivered quantity of a physical commodity product in terms of a number of units of that product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="positive" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The maxmium amount by which the quantity delivered can exceed the agreed quantity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="negative" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The maximum amount by which the quantity delivered can be less than the agreed quantity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="unit" type="QuantityUnit">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The unit in which the tolerance is specified.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="optionOwnerPartyReference" type="PartyReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates whether the tolerance is at the seller's or buyer's option.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="BullionDeliveryLocation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme defining where bullion is to be delivered for a Bullion Transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="bullionDeliveryLocationScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/bullion-delivery-location" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="BullionPhysicalLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Physically settled leg of a physically settled Bullion Transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PhysicalLeg">
        <xsd:sequence>
          <xsd:element name="bullionType" type="BullionTypeEnum">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The type of Bullion underlying a Bullion Transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryLocation" type="BullionDeliveryLocation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The physical delivery location for the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="CommodityFixedPhysicalQuantity.model" />
          <xsd:element name="settlementDate" type="AdjustableOrRelativeDate">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Date on which the bullion will settle.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CalculationPeriodsReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pointer style reference to a calculation periods schedule defined elsewhere - note that this schedule consists of a series of actual dates in a calculationPeriods container.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="AdjustableDates" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CalculationPeriodsScheduleReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pointer style reference to a calculation periods schedule defined elsewhere - note that this schedule consists of a parameterised schedule in a calculationPeriodsSchedule container.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CommodityCalculationPeriodsSchedule" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CalculationPeriodsDatesReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pointer style reference to single-day-duration calculation periods defined elsewhere - note that this schedule consists of a parameterised schedule in a calculationPeriodsSchedule container.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CommodityCalculationPeriodsSchedule" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CoalAttributeDecimal">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the attributes of a coal quality measure as a decimal value.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:sequence>
        <xsd:element name="standardContent" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual content of the quality characteristics of the Coal Product Shipment expected by the Buyer.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="rejectionLimit" type="xsd:decimal" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual limits of the quality characteristics of the Coal Product above or below which the Buyer may reject a Shipment.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:sequence>
        <xsd:element name="rejectionLimit" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual limits of the quality characteristics of the Coal Product above or below which the Buyer may reject a Shipment.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="CoalAttributePercentage">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the attributes of a coal quality measure as a percentage of the measured value.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:sequence>
        <xsd:element name="standardContent" type="RestrictedPercentage">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual content of the quality characteristics of the Coal Product Shipment expected by the Buyer.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="rejectionLimit" type="RestrictedPercentage" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual limits of the quality characteristics of the Coal Product above or below which the Buyer may reject a Shipment.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:sequence>
        <xsd:element name="rejectionLimit" type="RestrictedPercentage">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The actual limits of the quality characteristics of the Coal Product above or below which the Buyer may reject a Shipment.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="CoalDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery conditions for coal.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="deliveryPoint" type="CoalDeliveryPoint">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The point at which the Coal Product will be delivered and received.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="deliveryAtSource" type="xsd:boolean">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The point at which the Coal Product as a reference to the Source of the Coal Product. This should be a reference to the source element within product.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:group ref="CommodityUSCoalDelivery.model" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Additional delivery details for U.S. Coal transactions.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CoalDeliveryPoint">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the types of the Delivery Point for a physically settled coal trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="deliveryPointScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CoalPhysicalLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Physically settled leg of a physically settled coal transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PhysicalLeg">
        <xsd:sequence>
          <xsd:element name="deliveryPeriods" type="CommodityDeliveryPeriods">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The period during which delivery/deliveries of Coal Products may be scheduled. Equivalent to Nomination Period(s) for US Coal.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="coal" type="CoalProduct">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the Coal Product to be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryConditions" type="CoalDelivery">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The physical delivery conditions for the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryQuantity" type="CommodityPhysicalQuantity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the quantity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CoalProduct">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the characteristics of the coal being traded in a physically settled gas transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="type" type="CoalProductType">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The type of coal product to be delivered by reference to a pre-defined specification.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="coalProductSpecifications" type="CoalProductSpecifications">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The type of coal product to be delivered specified in full.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="source" type="CoalProductSource" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The mining region, mine(s), mining complex(es), loadout(s) or river dock(s) or other point(s) of origin that Seller and Buyer agree are acceptable origins for the Coal Product. For International Coal transactions, this is the Origin of the Coal Product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityUSCoalProduct.model" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Additional product details for U.S. Coal transactions.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CoalProductSource">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the sources of coal for a physically settled coal trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityCoalProductSourceScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-coal-product-source" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CoalProductSpecifications">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the quality attributes of the coal to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="standardQuality" type="CoalStandardQuality" />
      <xsd:element name="standardQualitySchedule" type="CoalStandardQualitySchedule" />
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="CoalProductType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the types of coal for a physically settled coal trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityCoalProductTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-coal-product-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CoalQualityAdjustments">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the quality adjustment formulae for a physically settled coal trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityCoalQualityAdjustmentsScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-coal-quality-adjustments" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CoalStandardQuality">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The quality attributes of the coal to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="CommodityCoalComposition.model" />
      <xsd:group ref="CommodityCoalProperties.model" />
      <xsd:group ref="CommodityCoalReducingAtmosphere.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CoalStandardQualitySchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The quality attributes of the coal to be delivered, specified on a periodic basis.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="StandardQualityStep" type="CoalStandardQuality" maxOccurs="unbounded" />
      <xsd:group ref="CommodityDeliveryPeriodsPointer.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CoalTransportationEquipment">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the methods by which coal may be transported.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityCoalTransportationEquipmentScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-coal-transportation-equipment" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityAmericanExercise">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type for defining exercise procedures associated with an American style exercise of a commodity option. This entity inherits from the type SharedAmericanExercise.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SharedAmericanExercise">
        <xsd:sequence>
          <xsd:element name="expirationTime" type="BusinessCenterTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specific time of day on which the option expires.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="multipleExercise" type="CommodityMultipleExercise" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The presence of this element indicates that the option may be partially exercised. It is not applicable to European or Asian options.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityCalculationPeriodsSchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A parametric representation of the Calculation Periods for on Asian option or a leg of a swap. In case the calculation frequency is of value T (term), the period is defined by the commoditySwap\effectiveDate and the commoditySwap\terminationDate.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Frequency">
        <xsd:sequence>
          <xsd:element name="balanceOfFirstPeriod" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">If true, indicates that that the first Calculation Period should run from the Effective Date to the end of the calendar period in which the Effective Date falls, e.g. Jan 15 - Jan 31 if the calculation periods are one month long and Effective Date is Jan 15. If false, the first Calculation Period should run from the Effective Date for one whole period, e.g. Jan 15 to Feb 14 if the calculation periods are one month long and Effective Date is Jan 15.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityDeliveryPeriods">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Delivery Periods of a physical leg.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="periods" type="AdjustableDates">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Delivery Periods for this leg of the swap. This type is only intended to be used if the Delivery Periods differ from the Calculation Periods on the fixed or floating leg. If DeliveryPeriods mirror another leg, then the calculationPeriodsReference element should be used to point to the Calculation Periods on that leg - or the calculationPeriodsScheduleReference can be used to point to the Calculation Periods Schedule for that leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="periodsSchedule" type="CommodityCalculationPeriodsSchedule">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Delivery Periods for this leg of the swap. This type is only intended to be used if the Delivery Periods differ from the Calculation Periods on the fixed or floating leg. If DeliveryPeriods mirror another leg, then the calculationPeriodsReference element should be used to point to the Calculation Periods on that leg - or the calculationPeriodsScheduleReference can be used to point to the Calculation Periods Schedule for that leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Enables users to reference a Calculation Periods schedule in the form of a series of actual dates in a calculationPeriods container or in the form of a parameterised schedule in a calculationPeriodsSchedule container.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:choice>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityDeliveryPoint">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the types of the Delivery Point for a physically settled commodity trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="deliveryPointScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityDeliveryRisk">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying how the parties to the trade aportion responsibility for the delivery of the commodity product (for example Free On Board, Cost, Insurance, Freight)</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="deliveryRiskScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/external/incoterms" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityEuropeanExercise">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type for defining exercise procedures associated with a European style exercise of a commodity option.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Exercise">
        <xsd:sequence>
          <xsd:element name="expirationDate" type="AdjustableOrRelativeDate">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The last day within an exercise period for an American style option. For a European style option it is the only day within the exercise period. For an averaging option this is equivalent to the Termination Date.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="expirationTime" type="BusinessCenterTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specific time of day on which the option expires.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityExercise">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The parameters for defining how the commodity option can be exercised, how it is priced and how it is settled.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="americanExercise" type="CommodityAmericanExercise">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The parameters for defining the exercise period for an American style option together with the rules governing the quantity of the commodity that can be exercised on any given exercise date.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="europeanExercise" type="CommodityEuropeanExercise">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The parameters for defining the expiration date and time for a European or Asian style option. For an Asian style option the expiration date is equivalent to the termination date.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="automaticExercise" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies whether or not Automatic Exercise applies to a Commodity Option Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="writtenConfirmation" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies whether or not Written Confirmation applies to a Commodity Option Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementCurrency" type="IdentifiedCurrency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The currency into which the Commodity Option Transaction will settle. If this is not the same as the currency in which the Commodity Reference Price is quoted, then an FX determination method should also be specified.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="fx" type="CommodityFx" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">FX observations to be used to convert the observed Commodity Reference Price to the Settlement Currency.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="conversionFactor" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If the Notional Quantity is specified in a unit that does not match the unit in which the Commodity Reference Price is quoted, the scaling or conversion factor used to convert the Commodity Reference Price unit into the Notional Quantity unit should be stated here. If there is no conversion, this element is not intended to be used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityPaymentDates.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityExpireRelativeToEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the physical event relative to which option expiration occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityExpireRelativeToEventScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-expire-relative-to-event" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityForward">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Commodity Forward</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Product">
        <xsd:sequence>
          <xsd:element name="valueDate" type="AdjustableOrRelativeDate" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Specifies the value date of the Commodity Forward Transaction. This is the day on which both the cash and the physical commodity settle.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="fixedLeg" type="NonPeriodicFixedPriceLeg">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The fixed leg of a Commodity Forward Transaction</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:annotation>
              <xsd:documentation xml:lang="en">This choice group is intended to allow legs based on different classes of commodity to be added to the schema as this becomes necessary.</xsd:documentation>
            </xsd:annotation>
            <xsd:element name="bullionPhysicalLeg" type="BullionPhysicalLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The physical leg of a Commodity Forward Transaction for which the underlyer is Bullion.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element ref="additionalCommodityForwardLeg" />
          </xsd:choice>
          <xsd:group ref="CommodityContent.model" minOccurs="0" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityFixedPriceSchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Fixed Price for a given Calculation Period during the life of the trade. There must be a Fixed Price step specified for each Calculation Period, regardless of whether the Fixed Price changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="fixedPriceStep" type="FixedPrice" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The Fixed Price for a given Calculation Period during the life of the trade. There must be a Fixed Price step specified for each Calculation Period, regardless of whether the Fixed Price changes or remains the same between periods.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="worldscaleRateStep" type="xsd:decimal" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">For a Wet Voyager Charter Freight Swap, the number of Worldscale Points for purposes of the calculation of a Fixed Amount for a given Calculation Period during the life of the trade. There must be Worldscale Rate Step specified for each Calculation Period, regardless of whether the Worldscale Rate Step changes or remains the same between periods.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="contractRateStep" type="NonNegativeMoney" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">For a DRY Voyage Charter or Time Charter Freight Swap, the price per relevant unit for pruposes of the calculation of a Fixed Amount for a given Calculation Period during the life of the trade. There must be Worldscale Rate Step specified for each Calculation Period, regardless of whether the Worldscale Rate Step changes or remains the same between periods.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="settlementPeriodsPriceSchedule" type="CommoditySettlementPeriodsPriceSchedule" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>For an electricity transaction, the fixed price schedule for one or more groups of Settlement Periods on which fixed payments are based. if the schedule differs for different groups of Settlement Periods, this element should be repeated.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityFrequencyType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Frequency Type for use in Pricing Date specifications.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityFrequencyTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-frequency-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityFx">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the FX observations to be used to convert the observed Commodity Reference Price to the Settlement Currency. The rate source must be specified. Additionally, a time for the spot price to be observed on that source may be specified, or else an averaging schedule for trades priced using an average FX rate.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="primaryRateSource" type="InformationSource">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The primary source for where the rate observation will occur. Will typically be either a page or a reference bank published rate.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="secondaryRateSource" type="InformationSource" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">An alternative, or secondary, source for where the rate observation will occur. Will typically be either a page or a reference bank published rate.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="fxType" type="CommodityFxType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A type to identify how the FX rate will be applied. This is intended to differentiate between the various methods for applying FX to the floating price such as a daily calculation, or averaging the FX and applying the average at the end of each CalculationPeriod.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="averagingMethod" type="AveragingMethodEnum" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The parties may specify a Method of Averaging when averaging of the FX rate is applicable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0">
        <xsd:element name="fixingTime" type="BusinessCenterTime">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The time at which the spot currency exchange rate will be observed. It is specified as a time in a specific business center, e.g. 11:00am London time.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="fxObservationDates" type="AdjustableDates" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">A list of the fx observation dates for a given Calculation Period.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:sequence>
              <xsd:sequence minOccurs="0">
                <xsd:group ref="PricingDays.model">
                  <xsd:annotation>
                    <xsd:documentation xml:lang="en">The parties may specify the rules for FX observation when averaging of the FX rate is applicable.</xsd:documentation>
                  </xsd:annotation>
                </xsd:group>
                <xsd:group ref="LagOrReference.model" minOccurs="0" />
              </xsd:sequence>
              <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
            </xsd:sequence>
          </xsd:choice>
          <xsd:element name="fixingTime" type="BusinessCenterTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The time at which the spot currency exchange rate will be observed. It is specified as a time in a specific business center, e.g. 11:00am London time.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:choice>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityFxType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Identifes how the FX rate will be applied. This is intended to differentiate between the various methods for applying FX to the floating price such as a daily calculation, or averaging the FX and applying the average at the end of each CalculationPeriod.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityFxTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-fx-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityHub">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining a hub or other reference for a physically settled commodity trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="partyReference" type="PartyOrAccountReference" />
      <xsd:element name="hubCode" type="CommodityHubCode" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityHubCode">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the code for a hub or other reference for a physically settled commodity trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="hubCodeScheme" type="xsd:anyURI" use="required" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityMarketDisruption">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">ISDA 1993 or 2005 commodity market disruption elements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="marketDisruptionEvents" type="MarketDisruptionEventsEnum">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">If Market disruption Events are stated to be Applicable then the default Market Disruption Events of Section 7.4(d)(i) of the ISDA Commodity Definitions shall apply unless specific Market Disruption Events are stated hereunder, in which case these shall override the ISDA defaults. If Market Disruption Events are stated to be Not Applicable, Market Disruption Events are not applicable to the trade at all. It is also possible to reference the Market Disruption Events set out in the relevant Master Agreement governing the trade.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="additionalMarketDisruptionEvent" type="MarketDisruptionEvent" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">To be used when marketDisruptionEvents is set to "Applicable" and additional market disruption events(s) apply to the default market disruption events of Section 7.4(d)(i) of the ISDA Commodity Definitions.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <xsd:element name="marketDisruptionEvent" type="MarketDisruptionEvent" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Market disruption event(s) that apply. Note that these should only be specified if the default market disruption events of Section 7.4(d)(i) of the ISDA Commodity Definitions are to be overridden.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:choice minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If omitted then the standard disruption fallbacks of Section 7.5(d)(i) of the ISDA Commodity Definitions shall apply.</xsd:documentation>
        </xsd:annotation>
        <xsd:element name="disruptionFallbacks" type="DisruptionFallbacksEnum">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">To be used where disruption fallbacks are set out in the relevant Master Agreement governing the trade.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="disruptionFallback" type="SequencedDisruptionFallback" maxOccurs="unbounded" />
      </xsd:choice>
      <xsd:element name="fallbackReferencePrice" type="Underlyer" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A fallback commodity reference price for use when relying on Disruption Fallbacks in Section 7.5(d)(i) of the ISDA Commodity Definitions or have selected "Fallback Reference Price" as a disruptionFallback.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="maximumNumberOfDaysOfDisruption" type="xsd:nonNegativeInteger" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">2005 Commodity Definitions only. If omitted , the number of days specified in Section 7.6(a) of the Definitions will apply.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="priceMaterialityPercentage" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">2005 Commodity Definitions only. To be used where a price materiality percentage applies to the "Price Source Disruption" event and this event has been specified by setting marketDisruption to true or including it in additionalMarketDisruptionEvent</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="minimumFuturesContracts" type="xsd:positiveInteger" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">1993 Commodity Definitions only. Specifies the Mimum Futures Contracts level that dictates whether or not a "De Minimis Trading" event has occurred. Only relevant if 'De Minimis Trading' has been specified in marketDisruptionEvent or additionalMarketDisruptionEvent.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityMultipleExercise">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type for defining the multiple exercise provisions of an American style commodity option.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="integralMultipleQuantity" type="CommodityNotionalQuantity" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The integral multiple quantity defines a lower limit of the Notional Quantity that can be exercised and also defines a unit multiple of the Notional Quantity that can be exercised, i.e. only integer multiples of this Notional Quantity can be exercised.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="minimumNotionalQuantity" type="CommodityNotionalQuantity">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The minimum Notional Quantity that can be exercised on a given Exercise Date. See multipleExercise.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityNotionalQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Commodity Notional.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="quantityUnit" type="QuantityUnit">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Quantity Unit is the unit of measure applicable for the quantity on the Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="quantityFrequency" type="CommodityQuantityFrequency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The frequency at which the Notional Quantity is deemed to apply for purposes of calculating the Total Notional Quantity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="quantity" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Amount of commodity per quantity frequency.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityNotionalQuantitySchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Notional Quantity per Calculation Period. There must be a Notional Quantity step specified for each Calculation Period, regardless of whether the Notional Quantity changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="notionalStep" type="CommodityNotionalQuantity" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The Notional Quantity per Calculation Period. There must be a Notional Quantity specified for each Calculation Period, regardless of whether the quantity changes or remains the same between periods.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="settlementPeriodsNotionalQuantitySchedule" type="CommoditySettlementPeriodsNotionalQuantitySchedule" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation>For an electricity transaction, the Notional Quantity schedule for a one or more groups of Settlement Periods to which the Notional Quantity is based. If the schedule differs for different groups of Settlement Periods, this element should be repeated.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityOption">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Commodity Option.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Product">
        <xsd:sequence>
          <xsd:group ref="BuyerSeller.model" />
          <xsd:element name="optionType" type="PutCallEnum">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The type of option transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:group ref="CommodityFinancialOption.model">
              <xsd:annotation>
                <xsd:documentation>Items specific to financially-settled commodity options.</xsd:documentation>
              </xsd:annotation>
            </xsd:group>
            <xsd:group ref="CommodityPhysicalOption.model">
              <xsd:annotation>
                <xsd:documentation>Items specific to fhysically-settled commodity options.</xsd:documentation>
              </xsd:annotation>
            </xsd:group>
          </xsd:choice>
          <xsd:element name="premium" type="CommodityPremium">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The option premium payable by the buyer to the seller.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="CommodityContent.model" minOccurs="0" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPayRelativeToEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the physical event relative to which payment occurs.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityPayRelativeToEventScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-pay-relative-to-event" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalAmericanExercise">
    <xsd:annotation>
      <xsd:documentation>The parameters for defining the expiration date(s) and time(s) for an American style option.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Exercise">
        <xsd:sequence>
          <xsd:choice>
            <xsd:sequence>
              <xsd:element name="commencementDates" type="AdjustableOrRelativeDates">
                <xsd:annotation>
                  <xsd:documentation>The first day(s) of the exercise period(s) for an American-style option.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="expirationDates" type="AdjustableOrRelativeDates">
                <xsd:annotation>
                  <xsd:documentation>The Expiration Date(s) of an American-style option.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
            <xsd:sequence>
              <xsd:element name="relativeCommencementDates" type="CommodityRelativeExpirationDates">
                <xsd:annotation>
                  <xsd:documentation>The first day(s) of the exercise period(s) for an American-style option where it is relative to the occurrence of an external event.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="relativeExpirationDates" type="CommodityRelativeExpirationDates">
                <xsd:annotation>
                  <xsd:documentation>The Expiration Date(s) of an American-style option where it is relative to the occurrence of an external event.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
          </xsd:choice>
          <xsd:element name="latestExerciseTime" type="PrevailingTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">For a Bermuda or American style option, the latest time on an exercise business day (excluding the expiration date) within the exercise period that notice can be given by the buyer to the seller or seller's agent. Notice of exercise given after this time will be deemed to have been given on the next exercise business day.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="expirationTime" type="PrevailingTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specific time of day at which the option expires.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the physical quantity of the commodity to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityPhysicalQuantityBase">
        <xsd:sequence>
          <xsd:group ref="CommodityFixedPhysicalQuantity.model" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalQuantityBase" abstract="true">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An abstract base class for physical quantity types.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalQuantitySchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Quantity per Delivery Period. There must be a Quantity step specified for each Delivery Period, regardless of whether the Quantity changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="quantityStep" type="CommodityNotionalQuantity" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The quantity per Calculation Period. There must be a quantity specified for each Calculation Period, regardless of whether the quantity changes or remains the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityDeliveryPeriodsPointer.model" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalEuropeanExercise">
    <xsd:annotation>
      <xsd:documentation>The parameters for defining the expiration date(s) and time(s) for a European style option.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Exercise">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="expirationDate" type="AdjustableOrRelativeDate">
              <xsd:annotation>
                <xsd:documentation>The Expiration Date of a single expiry European-style option or the first Expiration Date of a multiple expiry or daily expiring option.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="expirationDates" type="AdjustableRelativeOrPeriodicDates2">
              <xsd:annotation>
                <xsd:documentation>The Expiration Date(s) of a European-style option.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="relativeExpirationDates" type="CommodityRelativeExpirationDates">
              <xsd:annotation>
                <xsd:documentation>The Expiration Date(s) of a European-style option where it is relative to the occurrence of an external event.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="expirationTime" type="PrevailingTime" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specific time of day at which the option expires.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPhysicalExercise">
    <xsd:annotation>
      <xsd:documentation>The parameters for defining how the physically-settled commodity option can be exercised and how it is settled.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="americanExercise" type="CommodityPhysicalAmericanExercise">
          <xsd:annotation>
            <xsd:documentation>The parameters for defining the expiration date(s) and time(s) for an American style option.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="europeanExercise" type="CommodityPhysicalEuropeanExercise">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The parameters for defining the expiration date(s) and time(s) for a European style option.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="automaticExercise" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies whether or not Automatic Exercise applies to a Commodity Option Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="writtenConfirmation" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies whether or not Written Confirmation applies to a Commodity Option Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityPipeline">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The pipeline through which the physical commodity will be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="pipelineScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPipelineCycle">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The pipeline cycle during which the physical commodity will be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="pipelineCycleScheme" type="xsd:anyURI" use="required" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPremium">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The commodity option premium payable by the buyer to the seller.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NonNegativePayment">
        <xsd:sequence>
          <xsd:element name="premiumPerUnit" type="NonNegativeMoney" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The currency amount of premium to be paid per Unit of the Total Notional Quantity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityPricingDates">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The dates on which prices are observed for the underlyer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="lag" type="Lag" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The pricing period per calculation period if the pricing days do not wholly fall within the respective calculation period.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:sequence>
              <xsd:group ref="PricingDays.model" />
              <xsd:element name="businessCalendar" type="CommodityBusinessCalendar" minOccurs="0">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Identifies a commodity business day calendar from which the pricing dates will be generated.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
            <xsd:element name="settlementPeriods" type="SettlementPeriods" maxOccurs="unbounded" />
            <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded" />
          </xsd:choice>
        </xsd:sequence>
        <xsd:element name="pricingDates" type="AdjustableDates" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">A list of adjustable dates on which the trade would price. Each date will price for the Calculation Period within which it falls.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityProductGrade">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the grade of physical commodity product to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="productGradeScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityQuantityFrequency">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type for defining the frequency at which the Notional Quantity is deemed to apply for purposes of calculating the Total Notional Quantity.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="quantityFrequencyScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-quantity-frequency" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CommodityRelativeExpirationDates">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Expiration Dates of the trade relative to the Calculation Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="expireRelativeToEvent" type="CommodityExpireRelativeToEvent">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies whether the payment(s) occur relative to the date of a physical event.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="expirationDateOffset" type="DateOffset">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies any offset from the adjusted Calculation Period start date or adjusted Calculation Period end date applicable to each Payment Date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="BusinessCentersOrReference.model" minOccurs="0" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommodityRelativePaymentDates">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Payment Dates of the trade relative to the Calculation Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="payRelativeTo" type="PayRelativeToEnum">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specifies whether the payment(s) occur relative to a date such as the end of each Calculation Period or the last Pricing Date in each Calculation Period.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="payRelativeToEvent" type="CommodityPayRelativeToEvent">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specifies whether the payment(s) occur relative to the date of a physical event.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
      <xsd:element name="paymentDaysOffset" type="DateOffset">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies any offset from the adjusted Calculation Period start date or adjusted Calculation Period end date applicable to each Payment Date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="BusinessCentersOrReference.model" minOccurs="0" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CommoditySettlementPeriodsNotionalQuantity">
    <xsd:annotation>
      <xsd:documentation>The notional quantity of electricity that applies to one or more groups of Settlement Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityNotionalQuantity">
        <xsd:sequence>
          <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The range(s) of Settlement Periods to which the Notional Quantity applies.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CommoditySettlementPeriodsNotionalQuantitySchedule">
    <xsd:annotation>
      <xsd:documentation>The notional quantity schedule of electricity that applies to one or more groups of Settlement Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementPeriodsNotionalQuantityStep" type="CommodityNotionalQuantity" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>For an electricity transaction, the Notional Quantity for a given Calculation Period during the life of the trade which applies to the range(s) of Settlement Periods referenced by settlementPeriodsReference. There must be a settlementPeriodsNotionalQuantityStep specified for each Calculation Period, regardless of whether the NotionalQuantity changes or remains the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The range(s) of Settlement Periods to which the Fixed Price steps apply.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommoditySettlementPeriodsPriceSchedule">
    <xsd:annotation>
      <xsd:documentation>The fixed price schedule for electricity that applies to one or more groups of Settlement Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementPeriodsPriceStep" type="FixedPrice" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">For an electricity transaction, the Fixed Price for a given Calculation Period during the life of the trade which applies to the range(s) of Settlement Periods referenced by settlementPeriods Reference. There must be a Fixed Price step specified for each Calculation Period, regardless of whether the Fixed Price changes or remains the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The range(s) of Settlement Periods to which the Fixed Price steps apply.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommoditySpreadSchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Spread per Calculation Period. There must be a Spread specified for each Calculation Period, regardless of whether the Spread changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="spreadStep" type="Money" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The spread per Calculation Period. There must be a spread step specified for each Calculation Period, regardless of whether the spread changes or remains the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommodityStrikeSchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Strike Price per Unit per Calculation Period. There must be a Strike Price per Unit step specified for each Calculation Period, regardless of whether the Strike changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="strikePricePerUnitStep" type="NonNegativeMoney" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The strike price per unit per Calculation Period. There must be a strike price per unit specified for each Calculation Period, regardless of whether the price changes or remains the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CommoditySwap">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Commodity Swap.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Product">
        <xsd:sequence>
          <xsd:element name="effectiveDate" type="AdjustableOrRelativeDate">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Specifies the effective date of this leg of the swap. When defined in relation to a date specified somewhere else in the document (through the relativeDate component), this element will typically point to the effective date of the other leg of the swap.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="terminationDate" type="AdjustableOrRelativeDate">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Specifies the termination date of this leg of the swap. When defined in relation to a date specified somewhere else in the document (through the relativeDate component), this element will typically point to the termination date of the other leg of the swap.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementCurrency" type="IdentifiedCurrency">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The currency into which the Commodity Swap Transaction will settle. If this is not the same as the currency in which the Commodity Reference Price is quoted on a given floating leg of the Commodity Swap Transaction, then an FX rate should also be specified for that leg.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice maxOccurs="unbounded">
            <xsd:element name="fixedLeg" type="FixedPriceLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Fixed Price Leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="floatingLeg" type="FloatingPriceLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Floating Price leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="coalPhysicalLeg" type="CoalPhysicalLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Physically settled coal leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="electricityPhysicalLeg" type="ElectricityPhysicalLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Physically settled electricity leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="gasPhysicalLeg" type="GasPhysicalLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Physically settled natural gas leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="oilPhysicalLeg" type="OilPhysicalLeg">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Physically settled oil or refined products leg.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element ref="additionalCommoditySwapLeg" />
          </xsd:choice>
          <xsd:group ref="CommodityContent.model" minOccurs="0" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="DisruptionFallback">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A Disruption Fallback.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityMarketDisruptionFallbackScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-market-disruption-fallback" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery conditions for electricity.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:sequence>
        <xsd:element name="deliveryPoint" type="ElectricityDeliveryPoint">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The point at which delivery of the electricity will occur.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="deliveryType" type="ElectricityDeliveryType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Indicates the under what conditions the Parties' delivery obligations apply.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="transmissionContingency" type="ElectricityTransmissionContingency" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Indicates that the performance of the buyer or seller shall be excused (under the conditions specified) if transmission of the elctricity is unavailable or interrupted.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:sequence>
        <xsd:annotation>
          <xsd:documentation xml:lang="en">For EEI transactions, indicates that this transaction is for an "into" product.</xsd:documentation>
        </xsd:annotation>
        <xsd:element name="deliveryZone" type="CommodityDeliveryPoint">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The zone covering potential delivery points for the electricity.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="electingPartyReference" type="PartyReference" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Indicates the party able to decide which delivery point within the deliveryPoint is used for delivery. For EEI transactions, this should reference the seller of the electricity.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliveryFirm">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery obligation options specific to a firm transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="forceMajeure" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If true, indicates that the buyer and seller should be excused of their delivery obligations when such performance is prevented by Force Majeure. For EEI transactions, this would indicate "Firm (LD)" If false, indicates that the buyer and seller should not be excused of their delivery obligations when such performance is prevented by Force Majeure. For EEI transactions, this would indicate "Firm (No Force Majeure)"</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliveryPeriods">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Delivery Periods for a physically settled electricity trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityDeliveryPeriods">
        <xsd:sequence>
          <xsd:element name="settlementPeriods" type="SettlementPeriods" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The periods within the Delivery Periods during which the electricity will be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliveryPoint">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the types of the Delivery Point for a physically settled electricity trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="deliveryPointScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliverySystemFirm">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery obligation options specific to a system firm transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="applicable" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates that the trade is for a System Firm product. Should always be set to "true".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="system" type="CommodityDeliveryPoint" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliveryType">
    <xsd:choice>
      <xsd:element name="firm" type="ElectricityDeliveryFirm">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates under what condtitions the Parties' delivery obligations apply.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="nonFirm" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If present and set to true, indicates that delivery or receipt of the electricity may be interrupted for any reason or for no reason, without liability on the part of either Party. This element should never have a value of false.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="systemFirm" type="ElectricityDeliverySystemFirm">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates that the electricity is intended to be supplied from the owned or controlled generation or pre-existing purchased power assets of the system specified.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="unitFirm" type="ElectricityDeliveryUnitFirm">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates that the electricity is intended to be supplied from a generation asset which can optionally be specified.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="ElectricityDeliveryUnitFirm">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery obligation options specific to a unit firm transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="applicable" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates that the trade is for a Unit Firm product. Should always be set to "true".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="generationAsset" type="CommodityDeliveryPoint" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ElectricityPhysicalDeliveryQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the physical quantity of the electricity to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityNotionalQuantity">
        <xsd:sequence>
          <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A pointer style reference to the range(s) of Settlement Periods to which this quantity applies.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityPhysicalDeliveryQuantitySchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Allows the documentation of a shaped quantity trade where the quantity changes over the life of the transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityPhysicalQuantitySchedule">
        <xsd:sequence>
          <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A pointer style reference to the range(s) of Settlement Periods to which this quantity applies.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityPhysicalLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Physically settled leg of a physically settled electricity transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PhysicalLeg">
        <xsd:sequence>
          <xsd:element name="deliveryPeriods" type="CommodityDeliveryPeriods">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the Delivery or Supply Periods. Unless the quantity or price is to vary periodically during the trade or physical delivery occurs on a periodic basis, periodsSchedule should be used and set to 1T.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementPeriods" type="SettlementPeriods" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the Settlement Periods in which the electricity will be delivered. The Settlement Periods will apply from and including the Effective Date up to and including the Termination Date. If more than one settlementPeriods element is present this indicates multiple ranges of Settlement Periods apply to the entire trade - for example off-peak weekdays and all day weekends. Settlement Period ranges should not overlap.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementPeriodsSchedule" type="SettlementPeriodsSchedule" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the Settlement Periods in which the electricity will be delivered for a "shaped" trade i.e. where different Settlement Period ranges will apply to different periods of the trade.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="electricity" type="ElectricityProduct">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the electricity to be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryConditions" type="ElectricityDelivery">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The physical delivery conditions for the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryQuantity" type="ElectricityPhysicalQuantity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the quantity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityPhysicalQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The quantity of gas to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityPhysicalQuantityBase">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="physicalQuantity" type="ElectricityPhysicalDeliveryQuantity" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The Quantity per Delivery Period.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="physicalQuantitySchedule" type="ElectricityPhysicalDeliveryQuantitySchedule" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Allows the documentation of a shaped quantity trade where the quantity changes over the life of the transaction. Note that if the range of Settlement Periods also varies over the life of the transaction this element should not be used. Instead, physicalQuantity should be repeated for each range of Settlement Periods that apply at any point during the trade.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="totalPhysicalQuantity" type="UnitQuantity" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The Total Quantity of the commodity to be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ElectricityProduct">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The specification of the electricity to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="type" type="ElectricityProductTypeEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of electricity product to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="voltage" type="PositiveDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The voltage, expressed as a number of volts, of the electricity to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ElectricityTransmissionContingency">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A structure to specify the tranmission contingency and the party that bears the obligation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="contingency" type="ElectricityTransmissionContingencyType">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The conditions under which the party specified in contingentParty will be excused from damages if transmission is interrupted or curtailed.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="contingentParty" type="PartyReference" maxOccurs="2">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The party to which the contingency applies.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="ElectricityTransmissionContingencyType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The type of transmission contingency, i.e. what portion of the transmission the delivery obligations are applicable.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="electricityTransmissionContingencyScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/electricity-transmission-contingency" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="FixedPrice">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the Fixed Price.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="price" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Fixed Price.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="Price.model" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="FixedPriceLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Fixed Price Leg of a Commodity Swap.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Leg">
        <xsd:sequence>
          <xsd:group ref="PayerReceiver.model" />
          <xsd:group ref="CommodityCalculationPeriods.model" />
          <xsd:group ref="CommodityFixedPrice.model" />
          <xsd:group ref="CommodityNotionalQuantity.model" />
          <xsd:group ref="CommodityPaymentDates.model" />
          <xsd:group ref="CommodityFreightFlatRate.model" minOccurs="0" />
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:ID" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="FloatingLegCalculation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type to capture details relevant to the calculation of the floating price.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="pricingDates" type="CommodityPricingDates">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Commodity Pricing Dates.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="averagingMethod" type="AveragingMethodEnum" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The parties may specify a Method of Averaging where more than one pricing Dates is being specified as being applicable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="conversionFactor" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If the Notional Quantity is specified in a unit that does not match the unit in which the Commodity Reference Price is quoted, the scaling or conversion factor used to convert the Commodity Reference Price unit into the Notional Quantity unit should be stated here. If there is no conversion, this element is not intended to be used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="rounding" type="Rounding" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Rounding direction and precision for price values.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0">
        <xsd:element name="spread" type="Money">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The spread over or under the Commodity Reference Price for this leg of the trade. This element is intended to be used for basis trades.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="spreadSchedule" type="CommoditySpreadSchedule" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The spread over or under the Commodity Reference Price for this leg of the trade for each Calculation Period. This element is intended to be used for basis trades.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="fx" type="CommodityFx" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">FX observations to be used to convert the observed Commodity Reference Price to the Settlement Currency.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="FloatingPriceLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Floating Price Leg of a Commodity Swap.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Leg">
        <xsd:sequence>
          <xsd:group ref="PayerReceiver.model" />
          <xsd:group ref="CommodityCalculationPeriods.model" />
          <xsd:element name="commodity" type="Commodity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Specifies the underlying instrument. At this time, only underlyers of type Commodity are supported; the choice group in the future could offer the possibility of adding other types later.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="CommodityNotionalQuantity.model" />
          <xsd:element name="calculation" type="FloatingLegCalculation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Defines details relevant to the calculation of the floating price.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="CommodityPaymentDates.model" />
          <xsd:group ref="CommodityFreightFlatRate.model" minOccurs="0" />
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:ID" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GasDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The specification of the gas to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="CommodityDeliveryPoints.model" />
      <xsd:element name="deliveryType" type="DeliveryTypeEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates whether the buyer and seller are contractually obliged to consume and supply the specified quantities of the commodity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:sequence minOccurs="0">
        <xsd:element name="buyerHub" type="CommodityHub">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The hub code of the gas buyer.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="sellerHub" type="CommodityHub">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The hub code of the has seller.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="GasDeliveryPoint">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A scheme identifying the types of the Delivery Point for a physically settled gas trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="deliveryPointScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="GasDeliveryPeriods">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Delivery Periods for a physically settled gas trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityDeliveryPeriods">
        <xsd:sequence minOccurs="0">
          <xsd:element name="supplyStartTime" type="PrevailingTime">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The time at which gas delivery should start on each day of the Delivery Period(s).</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="supplyEndTime" type="PrevailingTime">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The time at which gas delivery should end on each day of the Delivery Period(s).</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GasPhysicalLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Physically settled leg of a physically settled gas transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PhysicalLeg">
        <xsd:sequence>
          <xsd:element name="deliveryPeriods" type="GasDeliveryPeriods">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the Delivery or Supply Periods. Unless the quantity or price is to vary periodically during the trade or physical delivery occurs on a periodic basis, periodsSchedule should be used and set to 1T.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="gas" type="GasProduct">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the gas to be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryConditions" type="GasDelivery">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The physical delivery conditions for the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryQuantity" type="GasPhysicalQuantity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the quantity. For Fixed trades where the quantity is known at the time of confirmation, a single quantity or a quantity per Delivery Period may be specified. For Variable trades minimum and maximum trades may be specified.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GasPhysicalQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The quantity of gas to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommodityPhysicalQuantityBase">
        <xsd:choice>
          <xsd:group ref="CommodityFixedPhysicalQuantity.model">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A quantity that is known at the time the transaction is executed.</xsd:documentation>
            </xsd:annotation>
          </xsd:group>
          <xsd:sequence>
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A quantity that can vary within set limits at the instruction of the specified party.</xsd:documentation>
            </xsd:annotation>
            <xsd:element name="minPhysicalQuantity" type="CommodityNotionalQuantity" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The minimum quantity to be delivered. If separate minimums need to be specified for different periods (e.g. a minimum per day and a minimum per month) this element should be repeated.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="maxPhysicalQuantity" type="CommodityNotionalQuantity" maxOccurs="unbounded">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The maximum quantity to be delivered. If separate minimums need to be specified for different periods (e.g. a minimum per day and a minimum per month) this element should be repeated.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="electingParty" type="PartyReference" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Indicates the party able to choose whether the gas is delivered for a particular period e.g. a swing or interruptible contract.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:sequence>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GasProduct">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the characteristics of the gas being traded in a physically settled gas transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="type" type="GasProductTypeEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of gas to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0">
        <xsd:element name="calorificValue" type="NonNegativeDecimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The calorific value of the gas to be delivered, specified in megajoules per cubic meter (MJ/m3).</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="quality" type="GasQuality">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The quality of the gas to be delivered.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="GasQuality">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The quantity of gas to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="gasQualityScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-gas-quality" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="Lag">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An observation period that is offset from a Calculation Period.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="lagDuration" type="Period">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The period during which observations will be made. If a firstObservationDateOffset is specified, the observation period will start the specified interval prior to each Calculation Period - i.e. if the firstObservationDateOffset is 4 months and the lagDuration is 3 months, observations will be taken in months 4,3 and 2 (but not 1) prior to each Calculation Period. If no firstObservationDate is specified, the observation period will end immediately preceding each Calculation Period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="firstObservationDateOffset" type="Period" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The interval between the start of each lagDuration and the start of each respective calculation period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="LagReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Allows a lag to reference one already defined elsewhere in the trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="Lag" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="MarketDisruptionEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A Market Disruption Event.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityMarketDisruptionScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-market-disruption" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="NonPeriodicFixedPriceLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The details of a fixed payment. Can be used for a forward transaction or as the base for a more complex fixed leg component such as the fixed leg of a swap.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Leg">
        <xsd:sequence>
          <xsd:group ref="PayerReceiver.model" />
          <xsd:element name="fixedPrice" type="FixedPrice">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Fixed price on which fixed payments are based.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="totalPrice" type="NonNegativeMoney" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The total amount of the fixed payment for all units of the underlying commodity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="quantityReference" type="QuantityReference">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A pointer style reference to a quantity defined on another leg.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="CommodityPaymentDates.model" />
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:ID" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="OilDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery conditions for an oil product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="pipeline" type="OilPipelineDelivery">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specified the delivery conditions where the oil product is to be delivered by pipeline.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="transfer" type="OilTransferDelivery">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specified the delivery conditions where the oil product is to be delivered by title transfer.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="importerOfRecord" type="PartyReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies which party is the Importer of Record for the purposes of paying customs duties and applicable taxes or costs related to the import of the oil product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0">
        <xsd:element name="absoluteTolerance" type="AbsoluteTolerance">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specifies the allowable quantity tolerance as an absolute quantity.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="percentageTolerance" type="PercentageTolerance">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Specifies the allowable quantity tolerance as a percentage of the quantity.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OilPhysicalLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Physically settled leg of a physically settled oil product transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PhysicalLeg">
        <xsd:sequence>
          <xsd:element name="deliveryPeriods" type="CommodityDeliveryPeriods">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the Delivery or Supply Periods. Unless the quantity or price is to vary periodically during the trade or physical delivery occurs on a periodic basis, periodsSchedule should be used and set to 1T.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="oil" type="OilProduct">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The specification of the oil product to be delivered.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryConditions" type="OilDelivery">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The physical delivery conditions for the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="deliveryQuantity" type="CommodityPhysicalQuantity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The different options for specifying the quantity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="OilPipelineDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery conditions specific to an oil product delivered by pipeline.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="pipelineName" type="CommodityPipeline">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The name of pipeline by which the oil product will be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="withdrawalPoint" type="CommodityDeliveryPoint" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The location at which the transfer of the title to the commodity takes place.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="entryPoint" type="CommodityDeliveryPoint" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The point at which the oil product will enter the pipeline.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="deliverableByBarge" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Whether or not the delivery can go to barge. For trades documented under the ISDA Master Agreement and Oil Annex, this should always be set to 'false'.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="risk" type="CommodityDeliveryRisk" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies how the risk associated with the delivery is assigned. For trades documented under the ISDA Master Agreement and Oil Annex, this presence of this element indicates that the provisions of clause (b)(i) of the ISDA Oil Annex are being varied.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="cycle" type="CommodityPipelineCycle" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The cycle(s) during which the oil product will be transported in the pipeline.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OilProduct">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The specification of the oil product to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="type" type="OilProductType">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of oil product to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="grade" type="CommodityProductGrade">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The grade of oil product to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="OilProductType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The type of physical commodity product to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="commodityOilProductTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/commodity-oil-product-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="OilTransferDelivery">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The physical delivery conditions specific to an oil product delivered by title transfer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="applicable" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates that the oil product will be delivered by title transfer. Should always be set to "true".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="deliveryLocation" type="CommodityDeliveryPoint" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The location at which the transfer of the title to the commodity takes place.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PercentageTolerance">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The acceptable tolerance in the delivered quantity of a physical commodity product in terms of a percentage of the agreed delivery quantity.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="postitive" type="RestrictedPercentage">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The maximum percentage amount by which the quantity delivered can exceed the agreed quantity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="negative" type="RestrictedPercentage">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The maximum percentage amount by which the quantity delivered can be less than the agreed quantity.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="option" type="PartyReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Indicates whether the tolerance it at the seller's or buyer's option.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PhysicalLeg" abstract="true">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The common components of a physically settled leg of a Commodity Swap. This is an abstract type and should be extended by commodity-specific types.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Leg">
        <xsd:sequence>
          <xsd:group ref="PayerReceiver.model" />
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:ID" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="QuantityScheduleReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pointer tyle reference to a Quantity schedule defined elsewhere.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CommodityNotionalQuantitySchedule" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="QuantityReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pointer tyle reference to a Quantity defined elsewhere.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CommodityPhysicalQuantityBase" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SequencedDisruptionFallback">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A Disruption Fallback with the sequence in which it should be applied relative to other Disruption Fallbacks.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="fallback" type="DisruptionFallback">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Disruption fallback that applies to the trade.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="sequence" type="xsd:positiveInteger">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Sequence in which the reference to the disruption fallback should be applied.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SettlementPeriods">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Specifies a set of Settlement Periods associated with an Electricity Transaction for delivery on an Applicable Day or for a series of Applicable Days.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="duration" type="SettlementPeriodDurationEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The length of each Settlement Period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="applicableDay" type="DayOfWeekEnum" minOccurs="0" maxOccurs="7">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the Applicable Day with respect to a range of Settlement Periods. This element can only be omitted if includesHolidays is present, in which case this range of Settlement Periods will apply to days that are holidays only.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="startTime" type="OffsetPrevailingTime">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the hour-ending Start Time with respect to a range of Settlement Periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="endTime" type="OffsetPrevailingTime">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the hour-ending End Time with respect to a range of Settlement Periods. If neither startTime nor endTime contain an offset element and endTime is earlier than startTime, this indicates that the time period "wraps around" midnight. For example, if startTime is 23:00 and endTime is 01:00 then Settlement Periods apply from 00:00 to 01:00 and 23:00 to 00:00 on each included day.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice minOccurs="0">
        <xsd:element name="excludeHolidays" type="CommodityBusinessCalendar">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Indicates that days that are holidays according to the referenced commodity business calendar should be excluded from this range of Settlement Periods, even if such day is an applicable day.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="includeHolidays" type="CommodityBusinessCalendar">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Indicates that days that are holidays according to the referenced commodity business calendar should be included in this range of Settlement Periods, even if such day is not an applicable day.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="SettlementPeriodsFixedPrice">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the Fixed Price applicable to a range or ranges of Settlement Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="FixedPrice">
        <xsd:sequence>
          <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SettlementPeriodsReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Allows a set of Settlement Periods to reference one already defined elsewhere in the trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="SettlementPeriods" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SettlementPeriodsSchedule">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The specification of the Settlement Periods in which the electricity will be delivered for a "shaped" trade i.e. where different Settlement Period ranges will apply to different periods of the trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementPeriodsStep" type="SettlementPeriodsStep" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The range of Settlement Periods per Calculation Period. There must be a range of Settlement Periods specified for each Calculation Period, regardless of whether the range of Settlement Periods changes or stays the same between periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityDeliveryPeriodsPointer.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SettlementPeriodsStep">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A reference to the range of Settlement Periods that applies to a given period of a transaction.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementPeriodsReference" type="SettlementPeriodsReference" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The specification of the Settlement Periods in which the electricity will be delivered. The Settlement Periods will apply for the duration of the appliable period. If more than one settlementPeriods element is present this indicates multiple ranges of Settlement Periods apply for the duration of the applicable period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="UnitQuantity">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A quantity and associated unit.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="quantityUnit" type="QuantityUnit">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Quantity Unit is the unit of measure applicable for the quantity on the Transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="quantity" type="NonNegativeDecimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Amount of commodity per quantity frequency.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:element name="additionalCommodityForwardLeg" abstract="true" />
  <xsd:element name="additionalCommoditySwapLeg" abstract="true" />
  <xsd:element name="commodityForward" type="CommodityForward" substitutionGroup="product">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Defines a commodity forward product.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="commodityOption" type="CommodityOption" substitutionGroup="product">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Defines a commodity option product.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="commoditySwap" type="CommoditySwap" substitutionGroup="product">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Defines a commodity swap product.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:group name="CommodityAsian.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Model group containing features specific to asian/averaging commodity options.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="effectiveDate" type="AdjustableOrRelativeDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The effective date of the Commodity Option Transaction. Note that the Termination/Expiration Date should be specified in expirationDate within the CommodityAmericanExercise type or the CommodityEuropeanExercise type, as applicable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:element name="calculationPeriodsSchedule" type="CommodityCalculationPeriodsSchedule">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">A parametric representation of the Calculation Periods of the Commodity Option Transaction.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="calculationPeriods" type="AdjustableDates">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">An absolute representation of the Calculation Period start dates of the Commodity Option Transaction.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="pricingDates" type="CommodityPricingDates">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The dates on which the option will price.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="averagingMethod" type="AveragingMethodEnum" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Method of Averaging if there is more than one Pricing Date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityDeliveryPeriodsPointer.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Model group to enable users to reference a Delivery Periods schedule in the form of a series of actual dates in a deliveryPeriods container or in the form of a parameterised schedule in a deliveryPeriodsSchedule container.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="deliveryPeriodsReference" type="CalculationPeriodsReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A pointer style reference to the Delivery Periods defined elsewhere.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="deliveryPeriodsScheduleReference" type="CalculationPeriodsScheduleReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A pointer style reference to the Calculation Periods Schedule defined elsewhere.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityDeliveryPoints.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A Delivery Point, applicable to physically settled commodity transactions.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="deliveryPoint" type="GasDeliveryPoint">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The physical or virtual point at which the commodity will be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:sequence>
        <xsd:element name="entryPoint" type="CommodityDeliveryPoint">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The physical or virtual point at which the commodity enters a transportation system.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="withdrawalPoint" type="CommodityDeliveryPoint">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The physical or virtual point at which the commodity is withdrawn from a transportation system.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityCalculationPeriods.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Calculation Periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="calculationDates" type="AdjustableDates">
        <xsd:annotation>
          <xsd:documentation>The Calculation Period dates for this leg of the trade where the Calculation Periods are all one day long, typically a physically-settled emissions or metals trade. Only dates explicitly included determine the Calculation Periods and there is a Calculation Period for each date specified.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationPeriods" type="AdjustableDates">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Calculation Period start dates for this leg of the swap. This type is only intended to be used if the Calculation Periods differ on each leg. If Calculation Periods mirror another leg, then the calculationPeriodsReference element should be used to point to the Calculation Periods on that leg - or the calculationPeriodsScheduleReference can be used to point to the Calculation Periods Schedule for that leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationPeriodsSchedule" type="CommodityCalculationPeriodsSchedule">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Calculation Periods for this leg of the swap. This type is only intended to be used if the Calculation Periods differ on each leg. If Calculation Periods mirror another leg, then the calculationPeriodsReference element should be used to point to the Calculation Periods on the other leg - or the calculationPeriodsScheduleReference can be used to point to the Calculation Periods Schedule for that leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityCalculationPeriodsPointer.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Enables users to reference a Calculation Periods schedule in the form of a series of actual dates in a calculationPeriods container or in the form of a parameterised schedule in a calculationPeriodsSchedule container.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityCalculationPeriodsPointer.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Model group to enable users to reference a Calculation Periods schedule in the form of a series of actual dates in a calculationPeriods container or in the form of a parameterised schedule in a calculationPeriodsSchedule container.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="calculationPeriodsReference" type="CalculationPeriodsReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A pointer style reference to the Calculation Periods defined on another leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationPeriodsScheduleReference" type="CalculationPeriodsScheduleReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A pointer style reference to the Calculation Periods Schedule defined on another leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationPeriodsDatesReference" type="CalculationPeriodsDatesReference">
        <xsd:annotation>
          <xsd:documentation>A pointer style reference to single-day-duration Calculation Periods defined on another leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityCoalComposition.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Items defining the chemical composition of the coal product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="moisture" type="CoalAttributePercentage" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The moisture content of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ash" type="CoalAttributePercentage" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The ash content of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="sulfur" type="CoalAttributePercentage" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The sulfur/sulphur content of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="SO2" type="CoalAttributePercentage" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The sulfur/sulphur dioxide content of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="volatile" type="CoalAttributePercentage" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The volatile content of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityCoalProperties.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Items defining the physical attributes of the coal product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="BTUperLB" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The number of British Thermal Units per Pound of the coal product.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="topSize" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The smallest sieve opening that will result in less than 5% of a sample of the coal product remaining.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="finesPassingScreen" type="CoalAttributeDecimal" minOccurs="0" />
      <xsd:element name="grindability" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Hardgrove Grindability Index value of the coal to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="ashFusionTemperature" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The temperature at which the ash form of the coal product fuses completely in accordance with the ASTM International D1857 Standard Test Methodology.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityCoalReducingAtmosphere.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Items defining the attributes of the coal product determined by ash fusion tests.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="initialDeformation" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The temperature at which an ash cone shows evidence of deformation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="softeningHeightWidth" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The temperature at which the height of an ash cone equals its width. (Softening temperature).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="softeningHeightHalfWidth" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The temperature at which the height of an ash cone equals half its width. (Hemisphere temperature).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="fluid" type="CoalAttributeDecimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The temperature at which the ash cone flattens.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityContent.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Items common to all Commodity Transactions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="commonPricing" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Common pricing may be relevant for a Transaction that references more than one Commodity Reference Price. If Common Pricing is not specified as applicable, it will be deemed not to apply.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="marketDisruption" type="CommodityMarketDisruption" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Market disruption events as defined in the ISDA 1993 Commodity Definitions or in ISDA 2005 Commodity Definitions, as applicable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementDisruption" type="CommodityBullionSettlementDisruptionEnum" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The consequences of Bullion Settlement Disruption Events.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="rounding" type="Rounding" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Rounding direction and precision for amounts.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityFinancialOption.model">
    <xsd:annotation>
      <xsd:documentation>Items specific to financially-settled commodity options.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="commodity" type="Commodity">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the underlying component. At the time of the initial schema design, only underlyers of type Commodity are supported; the choice group in the future could offer the possibility of adding other types later.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityAsian.model" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A group containing properties specific to Asian options.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:group ref="CommodityNotionalQuantity.model" />
      <xsd:element name="exercise" type="CommodityExercise">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The parameters for defining how the commodity option can be exercised and how it is settled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityStrikePrice.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The different options for specifying the Strike price per unit. This will consists of a single strike price of a strike price schedule.</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityFixedPhysicalQuantity.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying a fixed physical quantity of commodity to be delivered.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="physicalQuantity" type="CommodityNotionalQuantity">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The Quantity per Delivery Period.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="physicalQuantitySchedule" type="CommodityPhysicalQuantitySchedule">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Allows the documentation of a shaped quantity trade where the quantity changes over the life of the transaction.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="totalPhysicalQuantity" type="UnitQuantity" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Total Quantity of the commodity to be delivered.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityFixedPrice.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Fixed Price.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="fixedPriceSchedule" type="CommodityFixedPriceSchedule">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Allows the specification of a Fixed Price that varies over the life of the trade.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:choice>
          <xsd:element name="fixedPrice" type="FixedPrice">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Fixed price on which fixed payments are based.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="worldscaleRate" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">For a WET Voyager Charter Commodity Swap, the number of Worldscale Points for purposes of the calculation of a Fixed Amount.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="contractRate" type="NonNegativeMoney">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">For a DRY Voyage Charter or Time Charter Commodity Swap, the price per relevant unit for pruposes of the calculation of a Fixed Amount.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementPeriodsPrice" type="SettlementPeriodsFixedPrice" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">For an electricity transaction, the fixed price for one or more groups of Settlement Periods on which fixed payments are based. If the fixed price differs for different groups of Settlement Periods, this element should be repeated.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:choice>
      </xsd:choice>
      <xsd:element name="totalPrice" type="NonNegativeMoney" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The total amount of all fixed payments due during the term of the trade.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityFreightFlatRate.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The Flat Rate, applicable to Wet Voyager Charter Freight Swaps.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="flatRate" type="FlatRateEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Whether the Flat Rate is the New Worldwide Tanker Nominal Freight Scale for the Freight Index Route taken at the Trade Date of the transaction or taken on each Pricing Date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="flatRateAmount" type="NonNegativeMoney" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If flatRate is set to "Fixed", the actual value of the Flat Rate.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityNonPeriodicPaymentDates.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Payment Date.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="paymentDates" type="AdjustableDatesOrRelativeDateOffset">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Dates on which payments will be made.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="masterAgreementPaymentDates" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If present and true indicates that the Payment Date(s) are specified in the relevant master agreement.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityNotionalQuantity.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Notional Quantity. A flat notional for the term of the trade may be specified, or else the Notional Quantity per Calculation Period. In the latter case, there must be a notional quantity specified for each Calculation Period, regardless of whether the Notional Quantity changes or remains the same between periods.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:sequence>
        <xsd:choice>
          <xsd:element name="notionalQuantitySchedule" type="CommodityNotionalQuantitySchedule">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Allows the documentation of a shaped notional trade where the notional changes over the life of the transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="notionalQuantity" type="CommodityNotionalQuantity">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The Notional Quantity.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementPeriodsNotionalQuantity" type="CommoditySettlementPeriodsNotionalQuantity" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation>For an electricity transaction, the Notional Quantity for a one or more groups of Settlement Periods to which the Notional Quantity is based. If the schedule differs for different groups of Settlement Periods, this element should be repeated.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:choice>
        <xsd:element name="totalNotionalQuantity" type="xsd:decimal" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The Total Notional Quantity.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:element name="quantityReference" type="QuantityReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A pointer style reference to a quantity defined on another leg.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityPaymentDates.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Payment Date. This will consist of either a set of Payment Dates or else a Payment Date schedule.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="relativePaymentDates" type="CommodityRelativePaymentDates">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Payment Dates of the trade relative to the Calculation Periods.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="CommodityNonPeriodicPaymentDates.model" />
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityPhysicalOption.model">
    <xsd:annotation>
      <xsd:documentation>Items specific to financially-settled commodity options.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element ref="commoditySwap" />
        <xsd:element ref="commodityForward" />
      </xsd:choice>
      <xsd:element name="physicalExercise" type="CommodityPhysicalExercise">
        <xsd:annotation>
          <xsd:documentation>The parameters for defining how the commodity option can be exercised into a physical transaction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityStrikePrice.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying the Strike price per unit.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="strikePricePerUnit" type="NonNegativeMoney">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The currency amount of the strike price per unit.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="strikePricePerUnitSchedule" type="CommodityStrikeSchedule" />
    </xsd:choice>
  </xsd:group>
  <xsd:group name="CommodityUSCoalProduct.model">
    <xsd:annotation>
      <xsd:documentation>Items specific to the definition of a US Coal Product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="btuQualityAdjustment" type="CoalQualityAdjustments">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Quality Adjustment formula to be used where the Actual Shipment BTU/Lb value differs from the Standard BTU/Lb value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="so2QualityAdjustment" type="CoalQualityAdjustments" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The Quality Adjustment formula to be used where the Actual Shipment SO2/MMBTU value differs from the Standard SO2/MMBTU value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="CommodityUSCoalDelivery.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Items specific to the definition of the delivery of a US Coal Product.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="quantityVariationAdjustment" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If true, indicates that QVA is applicable. If false, indicates that QVA is inapplicable.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="transportationEquipment" type="CoalTransportationEquipment" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The transportation equipment with which the Coal Product will be delivered and received.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="risk" type="CommodityDeliveryRisk" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies how the risk associated with the delivery is assigned.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="LagOrReference.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Allows a Lag or a LagReference to be specified.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="lag" type="Lag">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The pricing period per calculation period if the pricing days do not wholly fall within the respective calculation period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="lagReference" type="LagReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Allows a lag to reference one already defined elsewhere in the trade.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="Price.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Price model group.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="priceCurrency" type="Currency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Currency of the fixed price.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="priceUnit" type="QuantityUnit">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The unit of measure used to calculate the Fixed Price.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="PricingDays.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The different options for specifying which days are pricing days within a pricing period. Unless a lag element is present, the pricing period will be the calculation period.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="dayType" type="CommodityDayTypeEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of day on which pricing occurs.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="dayDistribution" type="CommodityFrequencyType">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The method by which the pricing days are distributed across the pricing period.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="dayCount" type="xsd:positiveInteger" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The number of days over which pricing should take place.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <xsd:sequence>
          <xsd:element name="dayOfWeek" type="DayOfWeekEnum" maxOccurs="7">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The day(s) of the week on which pricing will take place during the pricing period.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="dayNumber" type="xsd:integer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The occurrence of the dayOfWeek within the pricing period on which pricing will take place, e.g. the 3rd Friday within each Calculation Period. If omitted, every dayOfWeek will be a pricing day.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
</xsd:schema>

