﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://schemas.mbnd.eu/2011/sqlseriesprovider"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"
    xmlns:sql="http://schemas.mbnd.eu/2011/sqlseriesprovider"
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:simpleType name="requiredstring">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="tablelayout">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Row"/>
      <xs:enumeration value="Column"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="daymask">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Monday"/>
      <xs:enumeration value="Tuesday"/>
      <xs:enumeration value="Wednesday"/>
      <xs:enumeration value="Thursday"/>
      <xs:enumeration value="Friday"/>
      <xs:enumeration value="Saturday"/>
      <xs:enumeration value="Sunday"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="daymasklist">
    <xs:list itemType="sql:daymask"/>
  </xs:simpleType>

  <xs:simpleType name="frequency">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Daily"/>
      <xs:enumeration value="Weekly"/>
      <xs:enumeration value="Monthly"/>
      <xs:enumeration value="BiMonthly"/>
      <xs:enumeration value="Quarterly"/>
      <xs:enumeration value="QuadMonthly"/>
      <xs:enumeration value="SemiAnnual"/>
      <xs:enumeration value="Annual"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="class">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Stock"/>
      <xs:enumeration value="Flow"/>
      <xs:enumeration value="Step"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ratemethod">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Effective"/>
      <xs:enumeration value="Simple"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="scale">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="-15"/>
      <xs:maxInclusive value="15"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="maturitydays">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="futuresposition">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="noofsettlementdays">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="entitystate">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Active"/>
      <xs:enumeration value="Discontinued"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="dataprovider">
    <xs:sequence>
      <xs:element name="Name" type="sql:requiredstring">
        <xs:annotation>
          <xs:documentation>
            The name of the .NET Framework Data Provider.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConnectionString" type="sql:requiredstring">
        <xs:annotation>
          <xs:documentation>
            The connection string.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:attributeGroup name="command">
    <xs:attribute name="Command" type="sql:requiredstring" use="required"/>
    <xs:attribute name="IsStoredProcedure" type="xs:boolean" use="optional" default="false"/>
  </xs:attributeGroup>

  <xs:complexType name="query">
    <xs:attributeGroup ref="sql:command"/>
    <xs:attribute name="ParameterName" type="sql:requiredstring" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="identifierquery">
    <xs:complexContent>
      <xs:extension base="sql:query">
        <xs:attribute name="Separator" type="sql:requiredstring" use="optional" default=","/>
        <xs:attribute name="Quote" type="xs:string" use="optional" default="'"/>
        <xs:attribute name="MultipleIdentifiers" type="xs:boolean" use="optional" default="true"/>
        <xs:attribute name="InterpretSkippedDateAsMissingValue" type="xs:boolean" use="optional" default="false">
          <xs:annotation>
            <xs:documentation>
              Determines whether missing dates when the Command results in date-value pairs are interpreted as skipped dates or as missing values.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="metadataquery">
    <xs:complexContent>
      <xs:extension base="sql:identifierquery">
        <xs:attribute name="Layout" type="sql:tablelayout" default="Row"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="search">
    <xs:complexContent>
      <xs:extension base="sql:query">
        <xs:attribute name="Layout" type="sql:tablelayout" default="Row"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="descriptionconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="Description" use="optional"/>
  </xs:complexType>

  <xs:complexType name="daymaskconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:daymasklist" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:daymasklist" />
    <xs:attribute name="Name" type="sql:requiredstring" default="DayMask" use="optional"/>
  </xs:complexType>

  <xs:complexType name="frequencyconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:frequency" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:frequency" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Frequency" use="optional"/>
  </xs:complexType>

  <xs:complexType name="currencyconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:requiredstring" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:requiredstring" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Currency" use="optional"/>
  </xs:complexType>

  <xs:complexType name="displayunitconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:requiredstring" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:requiredstring" />
    <xs:attribute name="Name" type="sql:requiredstring" default="DisplayUnit" use="optional"/>
  </xs:complexType>

  <xs:complexType name="classconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:class" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:class" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Class" use="optional"/>
  </xs:complexType>

  <xs:complexType name="scaleconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:scale" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:scale" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Scale" use="optional"/>
  </xs:complexType>

  <xs:complexType name="regionconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:requiredstring" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:requiredstring" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Region" use="optional"/>
  </xs:complexType>

  <xs:complexType name="maturitydaysconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:maturitydays" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:maturitydays" />
    <xs:attribute name="Name" type="sql:requiredstring" default="MaturityDays" use="optional"/>
  </xs:complexType>

  <xs:complexType name="futurespositionconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:futuresposition" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:futuresposition" />
    <xs:attribute name="Name" type="sql:requiredstring" default="FuturesPosition" use="optional"/>
  </xs:complexType>

  <xs:complexType name="noofsettlementdaysconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:noofsettlementdays" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:noofsettlementdays" />
    <xs:attribute name="Name" type="sql:requiredstring" default="NoOfSettlementDays" use="optional"/>
  </xs:complexType>

  <xs:complexType name="ratemethodconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:ratemethod" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:ratemethod" />
    <xs:attribute name="Name" type="sql:requiredstring" default="RateMethod" use="optional"/>
  </xs:complexType>

  <xs:complexType name="entitystateconversion">
    <xs:sequence>
      <xs:element name="Conversion" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="From" type="sql:requiredstring" use="required"/>
          <xs:attribute name="To" type="sql:entitystate" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Default" type="sql:entitystate" />
    <xs:attribute name="Name" type="sql:requiredstring" default="EntityState" use="optional"/>
  </xs:complexType>

  <xs:complexType name="forecastcutoffdateconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="ForecastCutoffDate" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="maturitydateconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="MaturityDate" use="optional"/>
  </xs:complexType>

  <xs:complexType name="lastmodifiedtimestampconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="LastModifiedTimeStamp" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="startdateconversion">
    <xs:attribute name="Default" type="xs:date" />
    <xs:attribute name="Name" type="sql:requiredstring" default="StartDate" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="lastvaluedateconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="LastValueDate" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="lastvalueconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="LastValue" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="previouslastvalueconversion">
    <xs:attribute name="Name" type="sql:requiredstring" default="PreviousLastValue" use="optional"/>
  </xs:complexType>

  <xs:complexType name="commentconversion">
    <xs:attribute name="Default" type="xs:string" />
    <xs:attribute name="Name" type="sql:requiredstring" default="Comment" use="optional"/>
  </xs:complexType>

  <xs:complexType name="rootnode">
    <xs:choice>
      <xs:element name="Dynamic" type="sql:dynamicnode">
        <xs:annotation>
          <xs:documentation>
            Generate browse tree nodes based on a SQL query. The values of the parent dynamic nodes will be
            used as parameters to the query with the value of the @Id attribute as parameter name.
          </xs:documentation>
        </xs:annotation>
        <xs:unique name="dynamicidfromroot">
          <xs:selector xpath=".//sql:Dynamic|."/>
          <xs:field xpath="@Id"/>
        </xs:unique>
      </xs:element>
      <xs:sequence>
        <xs:element name="Static" maxOccurs="unbounded" type="sql:staticnode">
          <xs:annotation>
            <xs:documentation>
              A static tree node.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType abstract="true" name="nodebase">
    <xs:choice>
      <xs:element name="Dynamic" type="sql:dynamicnode">
        <xs:annotation>
          <xs:documentation>
            Generate browse tree nodes based on a SQL query. The values of the parent dynamic nodes will be
            used as parameters to the query with the value of the @Id attribute as parameter name.
          </xs:documentation>
        </xs:annotation>
        <xs:unique name="dynamicid">
          <xs:selector xpath=".//sql:Dynamic|."/>
          <xs:field xpath="@Id"/>
        </xs:unique>
      </xs:element>
      <xs:element name="Output" type="sql:outputnode">
        <xs:annotation>
          <xs:documentation>
            Leaf node that generates a series list based on a SQL query. The values of the parent dynamic
            nodes will be used as parameters to the query with the value of the @Id attribute as parameter name.

            The SQL query must return series names and metadata either in row or column representations and
            uses the defaults and conversions defined by the Metadata element.

            In layout mode Row the result must contain three columns: Identifier, MetadataName and MetadataValue.

            In layout mode Column the result must contain at least an Identifier column. The rest
            of the column names are used as metadata names.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:sequence>
        <xs:element name="Static" maxOccurs="unbounded" type="sql:staticnode">
          <xs:annotation>
            <xs:documentation>
              A static tree node.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="staticnode">
    <xs:complexContent>
      <xs:extension base="sql:nodebase">
        <xs:attribute name="Name" type="sql:requiredstring" use="required">
          <xs:annotation>
            <xs:documentation>
              The node name displayed in the application.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="dynamicnode">
    <xs:complexContent>
      <xs:extension base="sql:nodebase">
        <xs:attribute name="Id" type="sql:requiredstring" use="required"/>
        <xs:attributeGroup ref="sql:command"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="outputnode">
    <xs:attributeGroup ref="sql:command"/>
    <xs:attribute name="Layout" type="sql:tablelayout" default="Row"/>
  </xs:complexType>

  <xs:element name="SqlSeriesProvider">
    <xs:annotation>
      <xs:documentation>
        Configuration for a single SQL provider.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:all>
        <xs:element name="DataProvider" type="sql:dataprovider">
          <xs:annotation>
            <xs:documentation>
              The .NET Framework Data Provider.
            </xs:documentation>
          </xs:annotation>
        </xs:element>

        <xs:element name="Series">
          <xs:complexType>
            <xs:all>
              <xs:element name="Values" type="sql:identifierquery">
                <xs:annotation>
                  <xs:documentation>
                    Configuration for retrieving series values.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>

              <xs:element name="Metadata" type="sql:metadataquery" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configuration for retrieving series metadata.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>

        <xs:element name="Metadata" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Metadata default values and conversions configuration.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:all>
              <xs:element name="Description" type="sql:descriptionconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Description attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="DayMask" type="sql:daymaskconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the DayMask attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="DayMaskFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="Frequency" type="sql:frequencyconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Frequency attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="FrequencyFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="Currency" type="sql:currencyconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Currency attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="CurrencyFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="DisplayUnit" type="sql:displayunitconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the DisplayUnit attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="DisplayUnitFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="Class" type="sql:classconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Class attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="ClassFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="Scale" type="sql:scaleconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Scale attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="ScaleFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="Region" type="sql:regionconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the Region attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="RegionFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="StartDate" type="sql:startdateconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the StartDate attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="LastValueDate" type="sql:lastvaluedateconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the LastValueDate attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="LastValue" type="sql:lastvalueconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the LastValue attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="PreviousLastValue" type="sql:previouslastvalueconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the PreviousLastValue attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="LastModifiedTimeStamp" type="sql:lastmodifiedtimestampconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the LastModifiedTimeStamp attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Comment" type="sql:commentconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults Comment attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ForecastCutoffDate" type="sql:forecastcutoffdateconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the ForecastCutoffDate attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="MaturityDate" type="sql:maturitydateconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the MaturityDate attribute.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="MaturityDays" type="sql:maturitydaysconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the MaturityDays attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="MaturityDaysFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="FuturesPosition" type="sql:futurespositionconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the FuturesPosition attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="FuturesPositionFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="RateMethod" type="sql:ratemethodconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the RateMethod attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="RateMethodFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <!-- EntityState added in MB 1.20 -->
              <xs:element name="EntityState" type="sql:entitystateconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the EntityState attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="EntityStateFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
              <xs:element name="NoOfSettlementDays" type="sql:noofsettlementdaysconversion" minOccurs="0">
                <xs:annotation>
                  <xs:documentation>
                    Configures defaults and conversions for the NoOfSettlementDays attribute.
                  </xs:documentation>
                </xs:annotation>
                <xs:unique name="NoOfSettlementDaysFromMustBeUnique">
                  <xs:selector xpath="sql:Conversion"/>
                  <xs:field xpath="@sql:From"/>
                </xs:unique>
              </xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>

        <xs:element name="BrowseTree" type="sql:rootnode" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Browse tree configuration.
            </xs:documentation>
          </xs:annotation>
        </xs:element>

        <xs:element name="Search" type="sql:search" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Series search configuration. 
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
