<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://projets.admisource.gouv.fr/xemelios/technical/schemas/xsd2html.xsl"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="TCritere.xsd" />
  <xs:include schemaLocation="TListeResultat.xsd" />
  <xs:include schemaLocation="TProperty.xsd" />
  
  
  <xs:complexType name="TPlugin">
    <xs:sequence>
      <xs:element name="header" type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            Utilise uniquement pour les plugins de type export.
            Si cette valeur est fournie, cette ligne est ecrite
            entete du fichier exporte  
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="property" type="TProperty" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="critere" type="TCritere" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="liste-export" type="TListeExport" minOccurs="0" maxOccurs="1" />
      <xs:element name="critere-optionnel" type="TCritereRef" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" use="required" type="xs:NCName">
      <xs:annotation>
        <xs:documentation>
          Représente un identifiant unique pour le plugin au sein d'un element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="class" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          La classe de ce plugin 
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="separator" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          Utilise uniquement dans les plugin de type export, c'est le caractere
          (ou la chaine) a utiliser comme separateur entre chaque champ.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="title" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          Le titre de ce plugin tel qu'il est affiche dans la liste des plugins
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" type="TPluginType" use="required"/>
    <xs:attribute name="available-persistences" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          Cet attribut contient la liste des implementations de
          persistence pour lesquelles ce plugin est valable.
          C'est une liste d'identifiant de persistences tels qu'ils
          apparaissent dans le xemelios.properties, separes par des
          virgules ou des points-virgules
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="sum-possible" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          Cet attribut permet de préciser les opérations de colonnes définies sur les champs
          de résultats s'appliquant sur cette colonne précise. Il ne s'applique que pour
          le type = 'search', et est obligatoire dans ce cas.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    </xs:complexType>
  
  <xs:simpleType name="TPluginType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="search">
        <xs:annotation>
          <xs:documentation>
            Les plugins de recherche
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="export">
        <xs:annotation>
          <xs:documentation>
            Les plugins d'export
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:complexType name="TListeExport">
    <xs:sequence>
      <xs:element name="champ" type="TChamp" minOccurs="1" maxOccurs="unbounded"></xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>