<?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" ecore:nsPrefix="fpml" ecore:package="org.fpml" ecore:documentRoot="FpML" targetNamespace="http://www.fpml.org/2010/FpML-4-9" version="$Revision: 7269 $" attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xsd:include schemaLocation="fpml-reporting-4-9.xsd" />
  <xsd:complexType name="AllegedCashflow">
    <xsd:sequence>
      <xsd:group ref="DefinitionAndCashflows.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AllegedNettedCashflow">
    <xsd:sequence>
      <xsd:group ref="DefinitionAndNettedCashflows.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AssertedCashflow">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type that defines a cashflow (or set of cashflows for cross-currency swap) asserted by one of the parties.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="DefinitionAndCashflows.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AssertedNettedCashflow">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type that defines a cashflow (or set of cashflows for cross-currency swap) asserted by one of the parties.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="DefinitionAndNettedCashflows.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AssertedPosition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type that defines a position asserted by one of the parties.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="PositionIdAndVersion.model" />
      <xsd:group ref="PositionWithoutId.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CancelNettedTradeCashflows">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for cancellation of payments to be reconciled. A message sent to indicate that previously asserted TradeCashFlows are no longer in effect. For example, this may be caused by a trade's being terminated or assigned after a TradeCashflowsAsserted message has been sent but before the payment date.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NotificationMessage">
        <xsd:sequence>
          <xsd:group ref="IdAndNettedTradeCashflows.model" />
          <xsd:element name="matchId" type="MatchId" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A unique identifier assigned by matching service to each set of matched cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CancelTradeCashflows">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for cancellation of payments to be reconciled. A message sent to indicate that previously asserted TradeCashFlows are no longer in effect. For example, this may be caused by a trade's being terminated or assigned after a TradeCashflowsAsserted message has been sent but before the payment date.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NotificationMessage">
        <xsd:sequence>
          <xsd:group ref="IdAndTradeCashflows.model" />
          <xsd:element name="matchId" type="MatchId" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A unique identifier assigned by matching service to each set of matched cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CalculationDetails">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A cashflow component with optional calculation details that explain how the cashflow amount was computed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="grossCashflow" type="GrossCashflow" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Payment details of this cash flow component, including currency, amount and payer/payee.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="observationElements" type="CashflowObservation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The underlyer rate or price observation(s) used to compute the amount of this cashflow component.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationElements" type="CashflowCalculationElements" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CashflowCalculationElements">
    <xsd:sequence>
      <xsd:element name="numberOfUnits" type="UnderlyerReferenceUnits" minOccurs="0" />
      <xsd:element name="notional" type="CashflowNotional" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Identifies the notional in effect for this calculation period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="underlyer" type="TradeUnderlyer" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The underlyer(s) used to calculate the amount of this cashflow component. The underlyer(s) will remain unaltered from the values specified in the underlying transaction (i.e. the Fixed Rate on a Credit Default Swap).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculatedRate" type="CashflowFixing" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The computed rate(s) or price(s) used to calculate the amount of this cashflow component. These computed rates or prices may include averaging and/or various types of rate treatment rules.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationPeriod" type="CashflowCalculationPeriod" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The period details for calculation/accrual periods that comprise this cashflow component.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CashflowCalculationPeriod">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The period calculation details for a calculation/accrual period. This will include information about the dates and duration of the accrual period, the rate fixing(s), the notional in effect, and the amount of the accrual.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="calculatedRateReference" type="CashflowFixingReference" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the fixing details defined somewhere in the document.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adjustedStartDate" type="xsd:date" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Date that defines the beginning of the calculation period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adjustedEndDate" type="xsd:date" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Date that defines the end of the calculation period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="numberOfDays" type="xsd:positiveInteger" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The number of days from the adjusted effective / start date to the adjusted termination / end date calculated in accordance with the applicable day count fraction.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="fixedRateStepReference" type="StepReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the fixed rate schedule's step in order to identify the calculation period fixed rate.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="dayCountFraction" type="DayCountFraction" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The specification for how the number of days between two dates is calculated for purposes of calculation of a fixed or floating payment amount and the basis for how many days are assumed to be in a year. Day Count Fraction is an ISDA term. The equivalent AFB (Association Francaise de Banques) term is Calculation Basis.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="dayCountYearFraction" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The year fraction value of the calculation period, result of applying the ISDA rules for day count fraction defined in the ISDA Annex.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="compoundingMethod" type="CompoundingMethodEnum" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">If more that one calculation period contributes to a single payment amount this element specifies whether compounding is applicable, and if so, what compounding method is to be used. This element must only be included when more that one calculation period contributes to a single payment amount.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="accruedAmount" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The amount of payment accrued during this accrual period. This is required only when there are multiple calculation periods within the same cashflow component, for example when the calculation period is shorter than the payment period.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CashflowFixing">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Details of the computation of a computed rate or price used to calculate the amount of a cashflow component. This computed rate or price may include averaging and/or various types of rate treatment rules. The details include all of the observations, the calculation parameters, and the resulting value.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="observationReference" type="CashflowObservationReference" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the observation details of a particular rate observation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculatedValue" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The value computed based on averaging the underlying observation and applying any spreads, multipliers, and cap and floors values. average or treated value computed based on the underlyer observations, following the calculation rules.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="multiplier" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A rate multiplier to apply to the floating rate. The multiplier can be a positive or negative decimal. This element should only be included if the multiplier is not equal to 1 (one).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="spread" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The ISDA Spread, if any, which applies for the calculation period. It also defines spread as price. The spread is a per annum rate, expressed as a decimal. For purposes of determining a calculation period amount, if positive the spread will be added to the floating rate and if negative the spread will be subtracted from the floating rate. A positive 10 basis point (0.1%) spread would be represented as 0.001.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="capValue" type="Strike" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The cap rate or price, if any, which applies to the floating rate for the calculation period. The cap rate (strike) is only required where the floating rate on a swap stream is capped at a certain strike level. The cap rate is assumed to be exclusive of any spread and is a per annum rate, expressed as a decimal. A cap rate of 5% would be represented as 0.05.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="floorValue" type="Strike" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The floor rate or price, if any, which applies to the floating rate for the calculation period. The floor rate (strike) is only required where the floating rate on a swap stream is floored at a certain strike level. The floor rate is assumed to be exclusive of any spread and is a per annum rate, expressed as a decimal. The floor rate of 5% would be represented as 0.05.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CashflowFixingReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining a reference to a cash flow fixing component defined somewhere in the document.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CashflowFixing" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CashflowId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An identifier used to identify a single component cashflow.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="cashflowIdScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CashflowNotional">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The notional/principal value/quantity/volume used to compute the cashflow.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="currency" type="Currency">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The currency in which an amount is denominated.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="units" type="xsd:normalizedString">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The units in which an amount (not monetary) is denominated.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="amount" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The quantity of notional (in currency or other units).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="CashflowObservation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An observation of a rate or a price of an underlyer used in the computation of a cash flow amount.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="underlyerReference" type="TradeUnderlyerReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The underlyer whose rate or price is observed. Reference to an underlyer defined within the calculationElements structure.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="underlyingAsset" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">In cases where the underlying index is observed by observing the value of a specific security different from the index (typically a futures price), the specific security whose price was observed. For example, the underlying index might be NYMEX Crude Oil, and the underlying asset whose price is observed on a particular day might be CLU7. The index is specified via the underlyerReference, while the specific asset is specified via the underlyingAsset.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="observationDate" type="xsd:date">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The date when the rate is observed. Corresponds to adjustedFixingDate on the Interest Rate Derivatives subschema.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="observedValue" type="BasicQuotation" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The observed rate or price, together with descriptive information such as units.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="weight" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The factor used to weight the observation in computing a weighted average. This is typically based on the number of days weighting to be associated with the rate observation, i.e. the number of days such rate is in effect. This is applicable in the case of a weighted average method of calculation where more than one observate date is established for a single calculation period. If omitted all observations are weighted equally. For Equity Derivatives Products it defines the basket percentage.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" use="optional" />
  </xsd:complexType>
  <xsd:complexType name="CashflowObservationReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a cash flow obervation component.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="CashflowObservation" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="DefinePosition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type that allows a position to be defined. It includes identification information (ID and version), trade information, etc.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Position">
        <xsd:sequence>
          <xsd:element name="forceMatch" type="PositionReference" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation>An optional reference to a position supplied by the matching party that is known to match this one.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="GrossCashflow">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A payment component owed from one party to the other for the cash flow date. This payment component should by of only a single type, e.g. a fee or a cashflow from a cashflow stream.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:sequence minOccurs="0">
        <xsd:element name="cashflowId" type="CashflowId">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Unique identifier for a cash flow.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="partyTradeIdentifierReference" type="PartyTradeIdentifierReference" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>Pointer-style reference to the partyTradeIdentifier block within the tradeIdentifyingItems collection, which identifies the parent trade for this cashflow.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:group ref="PayerReceiver.model" />
        <xsd:element name="cashflowAmount" type="Money">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Cash flow amount in a given currency to be paid/received.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:element name="cashflowType" type="CashflowType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Defines the type of cash flow. For instance, a type of fee, premium, principal exchange, leg fee.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="InitialPortfolioDefinition">
    <xsd:complexContent>
      <xsd:extension base="PortfolioDefinition">
        <xsd:sequence>
          <xsd:element name="newPortfolioDefinition" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Indicates whether it's a definition of a new portfolio (true) or an update to an existing one (false).</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="MatchId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An identifier used to identify matched cashflows.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="matchIdScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="NettedTradeCashflowsAsserted">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for assertion of payments to be reconciled. Notification message that submits cashflows that need to be reconciled per payment date.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NotificationMessage">
        <xsd:sequence>
          <xsd:group ref="TradeCashflowsDefinition.model" />
          <xsd:group ref="NettedTradeCashflows.model" />
          <xsd:element name="matchId" type="MatchId" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A unique identifier assigned by either party, or matching service, as agreed, to each set of matched cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="NettedTradeCashflowsMatchResult">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for sending match results. Response message that returns the status of the set of cashflows for multiple trades that have been reconciled.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ResponseMessage">
        <xsd:sequence>
          <xsd:element name="status" type="TradeCashflowsStatus">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Reconciliation status of the set of cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:sequence>
              <xsd:element name="assertedCashflow" type="AssertedNettedCashflow">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Cashflow (or set of cashflows for cross-currency swap) asserted by one of the parties.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="proposedMatch" type="NettedTradeCashflowsProposedMatch" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">"Other side's" cashflow that meets the minimimum matching criteria and is proposed as match to the cashflow that is being asserted.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
            <xsd:element name="allegedCashflow" type="AllegedNettedCashflow">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Cashflow (or set of cashflows for cross-currency swap) asserted by the "other side's" party.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="NettedTradeCashflowsProposedMatch">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">"Other side's" cashflow that meets the minimimum matching criteria and is proposed as match to the cash flow that is being asserted.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="IdAndNettedTradeCashflows.model" />
      <xsd:element name="matchId" type="MatchId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A unique identifier assigned by the matching service to each set of matched cashflows.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="difference" type="TradeDifference" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A type used to record the details of a difference between two sides of a payment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PaymentDetails">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Details on the referenced payment. e.g. Its cashflow components, settlement details.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="paymentReference" type="PaymentReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The reference to the identified payment strucutre.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="grossCashflow" type="GrossCashflow" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Payment details of this cash flow component, including currency, amount and payer/payee.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementInformation" type="SettlementInformation" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The information required to settle a currency payment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PaymentId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An identifier used to identify a matchable payment.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="paymentIdScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PaymentMatching">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A global type describing the payment exposed to the matching process, along with its gross component(s) and calculation details.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="identifier" type="PaymentId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Unique identifier assigned by either party or matching service, as agreed, to a payment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="PayerReceiver.model" />
      <xsd:element name="paymentAmount" type="Money">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Payment amount in a given currency to be paid/received.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationDetails" type="CalculationDetails" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The set of cash flow components with calculations that comprise this payment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PortfolioDefinition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The set of elements that identify a portfolio.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="portfolioName" type="xsd:normalizedString" />
      <xsd:element name="asOfDate" type="xsd:date" />
      <xsd:element name="definingParty" type="PartyReference" />
      <xsd:element name="matchingParty" type="PartyReference" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PositionMatchResult">
    <xsd:sequence>
      <xsd:element name="status" type="PositionMatchStatus">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reconciliation status of the position.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="assertedPosition" type="AssertedPosition">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Position asserted by one of the parties.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="proposedMatch" type="PositionProposedMatch" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">"Other side's" position that meets the minimimum matching criteria and is proposed as match to the position that is being asserted.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <xsd:element name="allegedPosition" type="AssertedPosition">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Position asserted by the "other side's" party.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PositionMatchStatus">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A coding scheme used to describe the matching status of a position.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="positionStatusScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/position-status" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PositionProposedMatch">
    <xsd:sequence>
      <xsd:group ref="PositionIdAndVersion.model" />
      <xsd:group ref="PositionWithoutId.model" minOccurs="0" />
      <xsd:element name="matchId" type="MatchId" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A unique identifier assigned by the matching service to each set of matched positions.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="difference" type="TradeDifference" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A type used to record the details of a difference between two sides of a position.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PositionReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type that allows referencing a position by ID and version.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="PositionIdAndVersion.model" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PositionsAcknowledged">
    <xsd:complexContent>
      <xsd:extension base="ResponseMessage">
        <xsd:sequence>
          <xsd:element name="portfolio" type="PortfolioDefinition">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Contains the portfolio definition.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="definedPosition" type="PositionReference" />
            <xsd:element name="removedPosition" type="PositionReference" />
            <xsd:element name="unprocessedPosition" type="UnprocessedPosition" />
          </xsd:choice>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PositionsAsserted">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Request that a portfolio be defined, either by replacing any pre-existing definition, or by updating or removing individual positions.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="RequestMessage">
        <xsd:sequence>
          <xsd:element name="portfolio" type="InitialPortfolioDefinition">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Contains the portfolio definition.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="submissionsComplete" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Indicates whether all portfolio updates have been submitted for this as-of date</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Either start from scratch and define new positions, or just update and remove positions</xsd:documentation>
            </xsd:annotation>
            <xsd:sequence>
              <xsd:element name="replaceAllPositions" type="Empty">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Indicates that this message replaces all previous positions for this portfolio.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="definePosition" type="DefinePosition" maxOccurs="unbounded">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Used to specify a new position.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
              <xsd:element name="definePosition" type="DefinePosition">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Used to specify a position, whether it is a new or updated position.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="removePosition" type="PositionReference">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Used to remove a position from the portfolio.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:choice>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PositionsMatchResults">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reports the results of the portfolio reconciliation operation. It states the matching results for multiple positions, supporting the match, mismatched, unmatched and alleged position results.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ResponseMessage">
        <xsd:sequence>
          <xsd:element name="portfolio" type="PortfolioDefinition">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Contains the portfolio definition.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="positionMatchResult" type="PositionMatchResult" maxOccurs="unbounded" />
          <xsd:element name="matchCompleted" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Flag indicating whether the Matching Service has finished sending all matching results.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="RequestPortfolio">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining the content model for a message requesting a portfolio (for reconciliation purposes).</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="RequestMessage">
        <xsd:sequence>
          <xsd:element name="asOfDate" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The date for which this request desires positions and valuations.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:element name="portfolioName" type="xsd:normalizedString">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The name of the portfolio that is requested.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="requestedPositions" type="RequestedPositions">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">The name of the data set (portfolio, product type, etc.) that this request corresponds to. Describes the desired report.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="party" type="Party" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="StepReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a Schedule's Step.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="Step" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TradeCashflowsAsserted">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for assertion of payments to be reconciled. Notification message that submits cashflows that need to be reconciled per payment date at the trade level.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="NotificationMessage">
        <xsd:sequence>
          <xsd:group ref="TradeCashflowsDefinition.model" />
          <xsd:group ref="TradeCashflows.model" />
          <xsd:element name="matchId" type="MatchId" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A unique identifier assigned by either party, or matching service, as agreed, to each set of matched cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TradeCashflowsId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An identifier used to identify the collection of cashflows for a particular trade on a particular day.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="tradeCashflowsIdScheme" type="xsd:anyURI" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="TradeCashflowsMatchResult">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Message for sending match results. Response message that returns the status of the set of cashflows (more than one in the case of cross-currency swaps) that have been reconciled.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ResponseMessage">
        <xsd:sequence>
          <xsd:element name="status" type="TradeCashflowsStatus">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Reconciliation status of the set of cashflows.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:choice>
            <xsd:sequence>
              <xsd:element name="assertedCashflow" type="AssertedCashflow">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">Cashflow (or set of cashflows for cross-currency swap) asserted by one of the parties.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="proposedMatch" type="TradeCashflowsProposedMatch" minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                  <xsd:documentation xml:lang="en">"Other side's" cashflow that meets the minimimum matching criteria and is proposed as match to the cashflow that is being asserted.</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
            <xsd:element name="allegedCashflow" type="AllegedCashflow">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">Cashflow (or set of cashflows for cross-currency swap) asserted by the "other side's" party.</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One party element for each of the principal parties and any other party that is referenced.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TradeCashflowsProposedMatch">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">"Other side's" cashflow that meets the minimimum matching criteria and is proposed as match to the cash flow that is being asserted.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="IdAndTradeCashflows.model" />
      <xsd:element name="matchId" type="MatchId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A unique identifier assigned by the matching service to each set of matched cashflows.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="difference" type="TradeDifference" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A type used to record the details of a difference between two sides of a payment.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="TradeCashflowsStatus">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An coding scheme used to describe the matching status of a TradeCashFlows element.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="tradeCashflowsStatusScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/trade-cashflows-status" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="TradeDetails">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Summary trade economic details used to help identify a trade where no shared trade ID is available.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="tradeDate" type="IdentifiedDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The trade date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="effectiveDate" type="AdjustableDate2">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The earliest of all the effective dates of all constituent streams.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="terminationDate" type="AdjustableDate2">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The latest of all of the termination dates of the constituent streams.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="productType" type="ProductType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A classification of the type of product. FpML does not define domain values for this element.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="underlyer" type="TradeUnderlyer" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The set of underlyers to the trade that can be used in computing the trade's cashflows. If this information is needed to identify the trade, all of the trade's underlyers should be specified, whether or not they figure into the cashflow calculation. Otherwise, only those underlyers used to compute this particular cashflow need be supplied.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="notional" type="CashflowNotional" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The notional or notionals in effect on the last day of the last calculation period in each stream.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="TradeIdentifyingItems">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Data elements that can be used to identify the trade for which cashflows are being communicated. This includes both explicit trade identifiers and summary economic details.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="partyTradeIdentifier" type="PartyTradeIdentifier" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Structure defining one or more trade identifiers allocated to the trade by a party. It is expected that for external communication of trade there will be only one tradeId sent in the document per party.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="tradeDetails" type="TradeDetails" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Structure that holds some trade-specific elements for identifying the trade only in the case of trades that have not been negotiated through electronic platforms and for which the counterparty's trade ID has not been captured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="TradeUnderlyer">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The underlying asset/index/reference price etc. whose rate/price may be observed to compute the value of the cashflow. It can be an index, fixed rate, listed security, quoted currency pair, or a reference entity (for credit derivatives).</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="floatingRate" type="FloatingRate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A floating rate.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="fixedRate" type="Schedule">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The fixed rate or fixed rate schedule expressed as explicit fixed rates and dates. In the case of a schedule, the step dates may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="underlyingAsset">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Define the underlying asset when it is a listed security.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="referenceEntity" type="LegalEntity">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The corporate or sovereign entity on which you are buying or selling protection and any successor that assumes all or substantially all of its contractual and other obligations. It is vital to use the correct legal name of the entity and to be careful not to choose a subsidiary if you really want to trade protection on a parent company. Please note, Reference Entities cannot be senior or subordinated. It is the obligations of the Reference Entities that can be senior or subordinated. ISDA 2003 Term: Reference Entity</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="TradeUnderlyerReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a trade underlyer component.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="TradeUnderlyer" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="UnderlyerReferenceUnits">
    <xsd:sequence>
      <xsd:element name="underlyerReference" type="TradeUnderlyerReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the underlyer defined within the calculationElements structure.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="quantity" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Amount of units.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="UnprocessedPosition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type describing the situation when an entire position change cannot be processed. It includes the position identification information and the reason that the position change could not be processed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="PositionIdAndVersion.model" />
      <xsd:element name="reason" type="Reason" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:group name="DefinitionAndCashflows.model">
    <xsd:sequence>
      <xsd:group ref="TradeCashflowsDefinition.model" />
      <xsd:group ref="TradeCashflows.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="DefinitionAndNettedCashflows.model">
    <xsd:sequence>
      <xsd:group ref="TradeCashflowsDefinition.model" />
      <xsd:group ref="NettedTradeCashflows.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="IdAndNettedTradeCashflows.model">
    <xsd:sequence>
      <xsd:element name="tradeCashflowsId" type="TradeCashflowsId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Unique identifier assigned by either party to a set of cashflows.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="NettedTradeCashflows.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="IdAndTradeCashflows.model">
    <xsd:sequence>
      <xsd:element name="tradeCashflowsId" type="TradeCashflowsId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Unique identifier assigned by either party to a set of cashflows.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="TradeCashflows.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="NettedTradeCashflows.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A group describing the cashflows owing on a particular adjustedPaymentDate for set of trades.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="tradeIdentifyingItems" type="TradeIdentifyingItems" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of structures holding a reference or references to each trade through the tradeId, and optionally some trade-specific elements for identifying the trade in the case of trades that have not been negotiated through electronic platforms, and for which the counterparty's trade ID has not been captured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adjustedPaymentDate" type="xsd:date">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The adjusted date in which the payments are being paid/received.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="payment" type="PaymentMatching" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the payment that is exposed to the matching process. Usually there will be a single payment but for cross-currency swaps a different payment per currency shall be provided.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="PositionWithoutId.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A group specifying the position model without including position identification elements.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="reportingRoles" type="ReportingRoles" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Information about the roles of the parties with respect to reporting the positions.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="constituent" type="PositionConstituent">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The components that create this position.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="scheduledDate" type="ScheduledDate" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Position level schedule date, such as final payment dates, in a simple and flexible format.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="valuation" type="AssetValuation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Valuation reported for the position, such as NPV or accrued interest. The asset/object references in the valuations should refer to the deal or components of the deal in the position, e.g. legs, streams, or underlyers.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="TradeCashflows.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A group describing the cashflows owing on a particular adjustedPaymentDate for a specific trade.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="tradeIdentifyingItems" type="TradeIdentifyingItems">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Structure that holds reference to the trade through the tradeId and optionally some trade-specific elements for identifying the trade in the case of trades that have not been negotiated through electronic platforms and for which the counterparty's trade ID has not been captured.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adjustedPaymentDate" type="xsd:date">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The adjusted date in which the payments are being paid/received.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="payment" type="PaymentMatching" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Specifies the payment that is exposed to the matching process. Usually there will be a single payment but for cross-currency swaps a different payment per currency shall be provided.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="TradeCashflowsDefinition.model">
    <xsd:sequence>
      <xsd:element name="asOfDate" type="xsd:dateTime" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The date and time at which the set of cashflows was defined.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="tradeCashflowsId" type="TradeCashflowsId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Unique identifier assigned by the party asserting the set of cashflows to be reconciled.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
</xsd:schema>

