<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><!--xsd:include schemaLocation=":/parameter.xsd"/-->
  <xsd:element name="Project" type="ProjectType"/>
  <xsd:simpleType name="DoubleOrHex">
    <xsd:union>
      <xsd:simpleType>
        <xsd:restriction base="xsd:double"/>
      </xsd:simpleType>
      <xsd:simpleType>
        <xsd:restriction base="xsd:hexBinary"/>
      </xsd:simpleType>
    </xsd:union>
  </xsd:simpleType>
  <xsd:simpleType name="FloatEncodingType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="HumanReadable"/>
      <xsd:enumeration value="HexBinary"/>
    </xsd:restriction>
  </xsd:simpleType>
        <!--Project-->
        <xsd:complexType abstract="true" name="ProjectType"/>
        <xsd:complexType name="Clustering">
                <xsd:complexContent>
                        <xsd:extension base="ProjectType">
                          <xsd:sequence>
                            <xsd:element name="FloatEncoding" minOccurs="0" type="FloatEncodingType"/>
                            <xsd:element name="Input" type="ClusteringInputType"/>
                            <xsd:element name="ListOutput" minOccurs="0" type="ListOutputType"/>
                          </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
<!-- removed
          <xsd:complexType name="DiscriminantAnalysis">
                <xsd:complexContent>
                        <xsd:extension base="ProjectType">
                                <xsd:sequence>
                                        <xsd:element name="Input" type="DiscriminantAnalysisInputType"/>
                                        <!/-/-xsd:element name="ListOutput" type="xsd:string"/ /-/->
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
end removed -->
        <xsd:complexType name="Learn">
          <xsd:complexContent>
            <xsd:extension base="ProjectType">
              <xsd:sequence>
                <xsd:element name="FloatEncoding" minOccurs="0" type="FloatEncodingType"/>
                <xsd:element name="Input" type="LearnInputType"/>
                <xsd:element name="ListOutput" minOccurs="0" type="ListLearnOutputType"/>
              </xsd:sequence>
            </xsd:extension>
          </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="Predict">
          <xsd:complexContent>
            <xsd:extension base="ProjectType">
              <xsd:sequence>
                <xsd:element name="FloatEncoding" minOccurs="0" type="FloatEncodingType"/>
                <xsd:element name="Input" type="PredictInputType"/>
                <xsd:element name="ListOutput" minOccurs="0" type="ListPredictOutputType"/>
                <!--xsd:element name="ListOutput" type="xsd:string"/ -->
              </xsd:sequence>
            </xsd:extension>
          </xsd:complexContent>
        </xsd:complexType>
        <!--End Project-->
        <xsd:complexType name="SelectVariableType">
          <xsd:sequence>
            <xsd:choice>
              <xsd:element name="Variable" type="xsd:positiveInteger" maxOccurs="unbounded"/>
              <xsd:element name="ALL"/>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
        <xsd:complexType name="SelectIndividualType">
          <xsd:sequence>
            <xsd:element name="Individual" type="xsd:positiveInteger" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>

        <!-- Input Type -->
        <xsd:complexType name="InputType">
                <xsd:sequence>
                        <xsd:element name="Data" type="xsd:anyURI"/>
                        <xsd:element name="SelectVariable" type="SelectVariableType" minOccurs="0"/>
                        <xsd:element name="SelectIndividual" type="SelectIndividualType" minOccurs="0"/>
                        <xsd:element minOccurs="0" name="ListModel" type="ListModelType"/>
                </xsd:sequence>
        </xsd:complexType>

        <!-- Derived Type of Input : Clustering -->
        <xsd:complexType name="ClusteringInputType">
                <xsd:complexContent>
                        <xsd:extension base="InputType">
                          <xsd:sequence>
                            <xsd:element name="ListNbCluster" type="ListNbClusterType"/>
                            <!--xsd:element minOccurs="0" name="ListModel" type="ListModelType"/ (inherited) -->
                            <xsd:element minOccurs="0" name="Strategy" type="StrategyType"/>
                            <xsd:element minOccurs="0" name="ListCriterion" type="ClusteringListCriterion"/>
                            <xsd:choice minOccurs="0">
                              <xsd:element name="Label" type="xsd:anyURI"/>
                              <xsd:element name="Partition" type="xsd:anyURI"/>
                            </xsd:choice>
                            <xsd:element minOccurs="0" name="Weights" type="xsd:anyURI"/>
                          </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
 <!--   removed
        <xsd:complexType name="DiscriminantAnalysisInputType">
                <xsd:complexContent>
                        <xsd:extension base="InputType">
                                <xsd:sequence>
                                        <xsd:element name="DataToClassify" type="xsd:string"/>
                                        <xsd:element minOccurs="0" name="ListCriterion" type="DiscriminantAnalysisListCriterion"/>
                                        <xsd:element name="DiscriminantVariable" type="xsd:positiveInteger"/>
                                        <xsd:element minOccurs="0" name="Parameter" type="xsd:string"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
 end removed -->
        <!-- Nouveau: InputType spécialisé séparément pour Learn et Predict (versus un InputType pour DiscriminantAnalysis  unique  auparavant)
        La liste des paramètres à été revue, par exemple nbCluster -->
        <!-- Derived Type of Input : AD-->
        <xsd:complexType name="LearnInputType">
                <xsd:complexContent>
                        <xsd:extension base="InputType">
                          <xsd:sequence>
                            <!--xsd:element name="Partition" type="xsd:anyURI"/-->
                            <xsd:choice>
                              <xsd:element name="Label" type="xsd:anyURI"/>
                              <xsd:element name="Partition" type="xsd:anyURI"/>
                            </xsd:choice>

                            <!--xsd:element minOccurs="0" name="ListModel" type="ListModelType" (inherited) /-->
                            <xsd:element minOccurs="0" name="ListCriterion" type="LearnListCriterion"/>
                            <xsd:element minOccurs="0" name="NbCVBlocks" type="xsd:positiveInteger"/>
                            <xsd:element minOccurs="0" name="Weights" type="xsd:anyURI"/>
                            <!-- ENLEVé: xsd:element minOccurs="0" name="Parameter" type="xsd:string"/ -->
                          </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>

        <xsd:complexType name="PredictInputType"> <!--il n'est pas extension de InputType! -->
          <xsd:sequence>
            <xsd:element name="Data" type="xsd:anyURI"/>
            <xsd:element name="SelectVariable" type="SelectVariableType" minOccurs="0"/>
            <xsd:element name="Parameter" type="xsd:anyURI"/>
            <!-- c'est un bon choix, une alternative serait d'avoir (à la place du paremeter) un OutputType (comme on le fait dans R). Mais c'est certainement moins souple-->
          </xsd:sequence>
        </xsd:complexType>
        <!-- End Input Type-->

        <!-- NbClusters Type-->
        <xsd:complexType name="ListNbClusterType">
                <xsd:sequence>
                        <xsd:element maxOccurs="unbounded" name="NbCluster" type="xsd:positiveInteger"/>
                </xsd:sequence>
        </xsd:complexType>
        <!-- End NbClusters Type-->

        <!-- Model -->
        <!-- ListModel Type-->
        <xsd:complexType name="ListModelType">
                <xsd:choice>
                        <xsd:sequence>
                                <xsd:element name="EDDAModel" type="GaussianType"/>
                                <xsd:element minOccurs="0" name="HDModel" type="HDType">
                                        <xsd:unique name="MyListDkNbCluster2">
                                                <xsd:selector xpath="./ListDk"/>
                                                <xsd:field xpath="@NbCluster"/>
                                        </xsd:unique>
                                </xsd:element>
                        </xsd:sequence>
                        <xsd:sequence>
                                <xsd:element name="HDModel" type="HDType">
                                        <xsd:unique name="MyListDkNbCluster1">
                                                <xsd:selector xpath="./ListDk"/>
                                                <xsd:field xpath="@NbCluster"/>
                                        </xsd:unique>
                                </xsd:element>
                                <xsd:element minOccurs="0" name="EDDAModel" type="GaussianType"/>
                        </xsd:sequence>
                        <xsd:sequence>
                                <xsd:element name="BinaryModel" type="BinaryType"/>
                        </xsd:sequence>
                        <xsd:sequence>
                                <xsd:element name="CompositeModel" type="CompositeType"/>
                        </xsd:sequence>
                </xsd:choice>
        </xsd:complexType>
        <xsd:complexType name="GaussianType">
                <xsd:sequence>
                        <xsd:element name="Model" maxOccurs="unbounded" type="GaussianNameType"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="GaussianNameType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Default"/>
                        <xsd:enumeration value="Gaussian_p_L_I"/>
                        <xsd:enumeration value="Gaussian_p_Lk_I"/>
                        <xsd:enumeration value="Gaussian_p_L_B"/>
                        <xsd:enumeration value="Gaussian_p_Lk_B"/>
                        <xsd:enumeration value="Gaussian_p_L_Bk"/>
                        <xsd:enumeration value="Gaussian_p_Lk_Bk"/>
                        <xsd:enumeration value="Gaussian_p_L_C"/>
                        <xsd:enumeration value="Gaussian_p_Lk_C"/>
                        <xsd:enumeration value="Gaussian_p_L_D_Ak_D"/>
                        <xsd:enumeration value="Gaussian_p_Lk_D_Ak_D"/>
                        <xsd:enumeration value="Gaussian_p_L_Dk_A_Dk"/>
                        <xsd:enumeration value="Gaussian_p_Lk_Dk_A_Dk"/>
                        <xsd:enumeration value="Gaussian_p_L_Ck"/>
                        <xsd:enumeration value="Gaussian_p_Lk_Ck"/>
                        <xsd:enumeration value="Gaussian_pk_L_I"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_I"/>
                        <xsd:enumeration value="Gaussian_pk_L_B"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_B"/>
                        <xsd:enumeration value="Gaussian_pk_L_Bk"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_Bk"/>
                        <xsd:enumeration value="Gaussian_pk_L_C"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_C"/>
                        <xsd:enumeration value="Gaussian_pk_L_D_Ak_D"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_D_Ak_D"/>
                        <xsd:enumeration value="Gaussian_pk_L_Dk_A_Dk"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_Dk_A_Dk"/>
                        <xsd:enumeration value="Gaussian_pk_L_Ck"/>
                        <xsd:enumeration value="Gaussian_pk_Lk_Ck"/>
                </xsd:restriction>
        </xsd:simpleType>
        <xsd:complexType name="HDType">
                <xsd:sequence>
                        <xsd:element name="Model" maxOccurs="unbounded" type="HDNameType"/>
                        <xsd:choice>
                                <xsd:sequence>
                                        <xsd:element name="D" type="xsd:positiveInteger"/>
                                        <xsd:element minOccurs="0" name="ListDk" type="ListDkType" maxOccurs="unbounded">
                                                <xsd:unique name="MyDkNum2">
                                                        <xsd:selector xpath="./Dk"/>
                                                        <xsd:field xpath="@Num"/>
                                                </xsd:unique>
                                        </xsd:element>
                                </xsd:sequence>
                                <xsd:sequence>
                                        <xsd:element name="ListDk" type="ListDkType" maxOccurs="unbounded">
                                                <xsd:unique name="MyDkNum1">
                                                        <xsd:selector xpath="./Dk"/>
                                                        <xsd:field xpath="@Num"/>
                                                </xsd:unique>
                                        </xsd:element>
                                        <xsd:element minOccurs="0" name="D" type="xsd:positiveInteger"/>
                                </xsd:sequence>
                        </xsd:choice>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:complexType name="ListDkType">
                <xsd:sequence>
                        <xsd:element name="Dk" maxOccurs="unbounded">
                                <xsd:complexType>
                                        <xsd:simpleContent>
                                                <xsd:extension base="xsd:positiveInteger">
                                                        <xsd:attribute name="Num" type="xsd:positiveInteger" use="required"/>
                                                </xsd:extension>
                                        </xsd:simpleContent>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:sequence>
                <xsd:attribute name="NbCluster" type="xsd:positiveInteger" use="required"/>
        </xsd:complexType>
        <xsd:simpleType name="HDNameType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Default"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkjBkQkDk"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkBkQkDk"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkjBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_p_AjBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkjBQkD"/>
                        <xsd:enumeration value="Gaussian_HD_p_AjBQkD"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_p_AkBQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkjBkQkDk"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkBkQkDk"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkjBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AjBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkjBQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AjBQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkBkQkD"/>
                        <xsd:enumeration value="Gaussian_HD_pk_AkBQkD"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End Quantitative Model -->

        <!-- Qualitative Model -->
        <xsd:complexType name="BinaryType">
                <xsd:sequence>
                        <xsd:element name="Model" maxOccurs="unbounded" type="BinaryNameType"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="BinaryNameType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Default"/>
                        <xsd:enumeration value="Binary_p_E"/>
                        <xsd:enumeration value="Binary_p_Ej"/>
                        <xsd:enumeration value="Binary_p_Ek"/>
                        <xsd:enumeration value="Binary_p_Ekj"/>
                        <xsd:enumeration value="Binary_p_Ekjh"/>
                        <xsd:enumeration value="Binary_pk_E"/>
                        <xsd:enumeration value="Binary_pk_Ej"/>
                        <xsd:enumeration value="Binary_pk_Ek"/>
                        <xsd:enumeration value="Binary_pk_Ekj"/>
                        <xsd:enumeration value="Binary_pk_Ekjh"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End Qualitative Model -->

        <!-- Composite Model -->
        <xsd:complexType name="CompositeType">
                <xsd:sequence>
                        <xsd:element name="Model" maxOccurs="unbounded" type="CompositeNameType"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="CompositeNameType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Default"/>
                        <xsd:enumeration value="Heterogeneous_pk_E_L_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_E_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_E_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_E_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ek_L_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ek_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ek_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ek_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ej_L_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ej_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ej_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ej_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekj_L_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekj_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekj_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekj_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekjh_L_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekjh_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekjh_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_pk_Ekjh_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_E_L_B"/>
                        <xsd:enumeration value="Heterogeneous_p_E_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_p_E_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_E_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ek_L_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ek_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ek_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ek_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ej_L_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ej_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ej_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ej_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekj_L_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekj_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekj_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekj_Lk_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekjh_L_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekjh_Lk_B"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekjh_L_Bk"/>
                        <xsd:enumeration value="Heterogeneous_p_Ekjh_Lk_Bk"/>
                </xsd:restriction>
        </xsd:simpleType>

        <!-- End Model -->

        <!--  Strategy -->
        <xsd:complexType name="StrategyType">
                <xsd:sequence>
                        <xsd:element minOccurs="0" name="NbTry" type="xsd:positiveInteger"/>
                        <xsd:element minOccurs="0" name="Init" type="InitType"/>
                        <xsd:element minOccurs="0" name="ListAlgo">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element maxOccurs="unbounded" name="Algo" type="AlgoType"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:sequence>
        </xsd:complexType>

        <!-- InitType -->
        <xsd:complexType abstract="true" name="InitType"/>

        <!-- Derived Init Type -->
        <xsd:complexType name="RANDOM">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="NbTry" type="xsd:positiveInteger"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="SMALL_EM">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="NbTry" type="xsd:positiveInteger"/>
                                        <xsd:element minOccurs="0" name="StopRule" type="StopRuleType"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="CEM_INIT">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="NbTry" type="xsd:positiveInteger"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="SEM_MAX">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="StopRule" type="StopRuleSEMType"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="PARAMETER">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="1" name="Parameter" type="xsd:string"/>
                                </xsd:sequence><!--xsd:attribute name="NbParameters" type="xsd:positiveInteger" use="required"/-->
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="PARTITION">
                <xsd:complexContent>
                        <xsd:extension base="InitType">
                                <xsd:sequence>
                                  <!--xsd:element minOccurs="1" maxOccurs="unbounded" name="Partition" type="xsd:anyURI"/-->
                                  <xsd:choice  minOccurs="1" maxOccurs="unbounded" >
                                    <xsd:element name="Label" type="xsd:anyURI"/>
                                    <xsd:element name="Partition" type="xsd:anyURI"/>
                                  </xsd:choice>

                                </xsd:sequence><!-- xsd:attribute name="NbPartitions" type="xsd:positiveInteger" use="required"/-->
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType><!-- Stop Rule Type -->
        <xsd:complexType name="StopRuleType">
                <xsd:choice>
                        <xsd:sequence>
                                <xsd:element name="Epsilon" type="EpsilonType"/>
                                <xsd:element minOccurs="0" name="NbIteration" type="NbIterationType"/>
                        </xsd:sequence>
                        <xsd:sequence>
                                <xsd:element name="NbIteration" type="NbIterationType"/>
                                <xsd:element minOccurs="0" name="Epsilon" type="EpsilonType"/>
                        </xsd:sequence>
                </xsd:choice>
        </xsd:complexType>
        <xsd:complexType name="StopRuleSEMType">
                <xsd:sequence>
                        <xsd:element name="NbIteration" type="NbIterationType"/>
                </xsd:sequence>
        </xsd:complexType>
        <!-- End Stop Rule Type -->

        <!-- NbIteration -->
        <xsd:simpleType name="NbIterationType">
                <xsd:restriction base="xsd:positiveInteger">
                        <xsd:maxInclusive value="100000"/>
                        <xsd:minInclusive value="1"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End NbIteration -->

        <!-- Epsilon  -->
        <xsd:simpleType name="EpsilonType">
                <xsd:restriction base="xsd:double">
                        <xsd:maxInclusive value="1"/>
                        <xsd:minInclusive value="0"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End Epsilon -->
        <!-- End Init Type -->

        <!-- Algo -->
        <xsd:complexType abstract="true" name="AlgoType"/>
        <xsd:complexType name="EM">
                <xsd:complexContent>
                        <xsd:extension base="AlgoType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="StopRule" type="StopRuleType"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="CEM">
                <xsd:complexContent>
                        <xsd:extension base="AlgoType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="StopRule" type="StopRuleType"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <xsd:complexType name="SEM">
                <xsd:complexContent>
                        <xsd:extension base="AlgoType">
                                <xsd:sequence>
                                        <xsd:element minOccurs="0" name="StopRule" type="StopRuleSEMType"/>
                                </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
        </xsd:complexType>
        <!-- End Algo -->

        <!-- Name AlgoType -->
        <xsd:simpleType name="NameAlgoType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="EM"/>
                        <xsd:enumeration value="CEM"/>
                        <xsd:enumeration value="SEM"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End Name AlgoType -->

        <!--Criterion -->
        <!-- Clustering Criterion -->
        <xsd:complexType name="ClusteringListCriterion">
                <xsd:sequence>
                        <xsd:element maxOccurs="3" name="Criterion" type="ClusteringCriterionType"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="ClusteringCriterionType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="BIC"/>
                        <xsd:enumeration value="ICL"/>
                        <xsd:enumeration value="NEC"/>
                </xsd:restriction>
        </xsd:simpleType>


        <!-- Changer en LearnListCriterion : oui-->
        <!-- LearnListCriterion -->
        <xsd:complexType name="LearnListCriterion">
                <xsd:sequence>
                        <xsd:element maxOccurs="2" name="Criterion" type="LearnCriterionType"/>
                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="LearnCriterionType">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="CV"/>
                        <!-- DCV n'est plus maintenu -->
                       <!-- xsd:enumeration value="DCV"/-->
                        <xsd:enumeration value="BIC"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!-- End LearnListCriterion -->
<!-- removed
        <!/-/- Parameter Type /-/->
        <xsd:complexType abstract="true" name="ParameterType">
                <xsd:sequence>
                        <xsd:element minOccurs="1" name="Proportion">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element maxOccurs="unbounded" minOccurs="1" name="ClusterProportion">
                                                        <xsd:complexType>
                                                                <xsd:simpleContent>
                                                                        <xsd:extension base="doubleBetween0and1">
                                                                                <xsd:attribute name="Cluster" type="xsd:positiveInteger" use="required"/>
                                                                        </xsd:extension>
                                                                </xsd:simpleContent>
                                                        </xsd:complexType>
                                                </xsd:element>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:sequence>
                <xsd:attribute name="NbClusters" type="xsd:positiveInteger" use="required"/>
                <xsd:attribute name="NbDimensions" type="xsd:positiveInteger" use="required"/>
        </xsd:complexType>

        <!/-/- type positiveDouble /-/->
        <xsd:simpleType name="positiveDouble">
                <xsd:restriction base="xsd:double">
                        <xsd:minInclusive value="0"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!/-/- End positiveDouble /-/->

        <!/-/- type doubleBetween0and1 /-/->
        <xsd:simpleType name="doubleBetween0and1">
                <xsd:restriction base="xsd:double">
                        <xsd:maxInclusive value="1"/>
                        <xsd:minInclusive value="0"/>
                </xsd:restriction>
        </xsd:simpleType>
        <!/-/- End doubleBetween0and1 /-/->
end removed -->
<!-- List Output Type (Clustering + Learn) -->
        <xsd:complexType name="ListOutputType">
                <xsd:sequence>
                        <xsd:element name="Output" type="OutputType" maxOccurs="unbounded"/>
                </xsd:sequence>
        </xsd:complexType>

        <!-- Output Type -->
        <xsd:complexType name="OutputType">
                <xsd:sequence>
                        <xsd:element name="Model" type="AllModelNameType"/>
                        <xsd:element name="NbCluster" type="xsd:positiveInteger"/>
                        <xsd:choice>
                                <xsd:element ref="Error"/>
                                <xsd:group ref="OutputGroup"/>
                        </xsd:choice>

                </xsd:sequence>
        </xsd:complexType>

        <xsd:group name="OutputGroup">
                  <xsd:sequence>
                           <xsd:element name="ListOutputCriterion" type="ListOutputCriterionType"/>
                        <xsd:element name="Likelihood" type="DoubleOrHex"/>
                        <xsd:element name="Parameter" type="xsd:anyURI"/>
                        <xsd:element name="Label" type="xsd:anyURI"/>
                        <xsd:element name="Proba" type="xsd:anyURI"/>
                        <xsd:element name="Custom"  minOccurs="0" type="xsd:anyURI"/>
                  </xsd:sequence>
        </xsd:group>
       <xsd:complexType name="ListLearnOutputType">
                <xsd:sequence>
                        <xsd:element name="Output" type="LearnOutputType" maxOccurs="unbounded"/>
                </xsd:sequence>
        </xsd:complexType>

        <!-- Output Type -->
        <xsd:complexType name="LearnOutputType">
                <xsd:sequence>
                        <xsd:element name="Model" type="AllModelNameType"/>
                        <xsd:element name="NbCluster" type="xsd:positiveInteger"/>
                        <xsd:choice>
                                <xsd:element ref="Error"/>
                                <xsd:group ref="LearnOutputGroup"/>
                        </xsd:choice>

                </xsd:sequence>
        </xsd:complexType>
        <xsd:simpleType name="ListOfPositiveIntType">
          <xsd:list itemType="xsd:positiveInteger"/>
        </xsd:simpleType>
        <xsd:simpleType name="ListOfNNIntType">
          <xsd:list itemType="xsd:nonNegativeInteger"/>
        </xsd:simpleType>
        <xsd:complexType name="VectOfIntType">
        <xsd:sequence>
        <xsd:element name="cell" type="xsd:nonNegativeInteger"  maxOccurs="unbounded"/>
        </xsd:sequence>
        </xsd:complexType>
       <xsd:complexType name="MatrixOfNNIntType">
        <xsd:sequence>
        <xsd:element name="row" type="ListOfNNIntType"  maxOccurs="unbounded"/>
        </xsd:sequence>
        </xsd:complexType>
         <xsd:complexType name="MAPType">
                <xsd:sequence>
                        <xsd:element name="ErrorRate"  type="DoubleOrHex"/>
                       <xsd:element name="Classification" type="MatrixOfNNIntType"/>

                </xsd:sequence>
        </xsd:complexType>

        <xsd:group name="LearnOutputGroup">
                  <xsd:sequence>
  <xsd:group ref="OutputGroup"/>
 <xsd:element name="CVLabels" minOccurs="0" type="xsd:anyURI"/>
<xsd:element name="CVClassification" minOccurs="0" type="MAPType"/>
<xsd:element name="MapClassification" type="MAPType"/>
<xsd:element name="Custom"  minOccurs="0" type="xsd:anyURI"/> 
                  </xsd:sequence>
        </xsd:group>
 <!-- List Predict Output Type -->
        <xsd:complexType name="ListPredictOutputType">
                <xsd:sequence>
                        <xsd:element name="Output" type="PredictOutputType" maxOccurs="unbounded"/>
                </xsd:sequence>
        </xsd:complexType>

        <!-- Output Type -->
        <xsd:complexType name="PredictOutputType">
         <xsd:choice>
           <xsd:element ref="Error"/>
           <xsd:sequence>
             <xsd:element name="Label" type="xsd:anyURI"/>
             <xsd:element name="Proba" type="xsd:anyURI"/>
           </xsd:sequence>
         </xsd:choice>
        </xsd:complexType>



        <!-- All Model Name-->
        <xsd:simpleType name="AllModelNameType">
                   <xsd:union memberTypes="BinaryNameType HDNameType GaussianNameType CompositeNameType" />
          </xsd:simpleType>

          <!-- List Criterion -->
          <xsd:complexType name="ListOutputCriterionType">
                  <xsd:sequence>
                          <xsd:element name="OutputCriterion" maxOccurs="unbounded">
                                  <xsd:complexType>
                                          <xsd:sequence>
                                                  <xsd:element name="CriterionName" type="AllCriterionNameType"/>
                                                  <xsd:choice>
                                                          <xsd:element name="CriterionValue" type="DoubleOrHex"/>
                                                            <xsd:element ref="Error"/>
                                                  </xsd:choice>
                                          </xsd:sequence>
                                  </xsd:complexType>
                          </xsd:element>
                  </xsd:sequence>
          </xsd:complexType>
        <!-- End List Criterion -->

        <xsd:simpleType name="AllCriterionNameType">
                <xsd:union memberTypes="ClusteringCriterionType LearnCriterionType" />
        </xsd:simpleType>

        <!-- End Output Type -->

        <xsd:element name="Error" type="xsd:string"/>

<!-- End List Output Type -->

</xsd:schema>
