<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="Swap">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining swap streams and additional payments between the principal parties involved in the swap.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Product">
        <xsd:sequence>
          <xsd:element name="swapStream" type="InterestRateStream" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The swap streams.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="earlyTerminationProvision" type="EarlyTerminationProvision" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Parameters specifying provisions relating to the optional and mandatory early terminarion of a swap transaction.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="cancelableProvision" type="CancelableProvision" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A provision that allows the specification of an embedded option within a swap giving the buyer of the option the right to terminate the swap, in whole or in part, on the early termination date.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="extendibleProvision" type="ExtendibleProvision" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">A provision that allows the specification of an embedded option with a swap giving the buyer of the option the right to extend the swap, in whole or in part, to the extended termination date.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="additionalPayment" type="Payment" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Additional payments between the principal parties.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="additionalTerms" type="SwapAdditionalTerms" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">Contains any additional terms to the swap contract.</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
	<xsd:complexType name="Product" abstract="true">
		<xsd:annotation>
			<xsd:documentation xml:lang="en">The base type which all FpML products extend.</xsd:documentation>
		</xsd:annotation>
		<xsd:group ref="Product.model"/>
		<xsd:attribute name="id" type="xsd:ID"/>
	</xsd:complexType>
	<xsd:complexType name="ProductId">
		<xsd:simpleContent>
			<xsd:extension base="xsd:normalizedString">
				<xsd:attribute name="productIdScheme" type="xsd:anyURI"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
</xsd:schema>