<?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="TSpecial-key.xsd"/>
    <xs:include schemaLocation="TRecherchePaire.xsd"/>
    <xs:include schemaLocation="TEntete.xsd"/>
    <xs:include schemaLocation="TEtat.xsd"/>
    <xs:include schemaLocation="namespace.xsd"/>
    <xs:include schemaLocation="TParameters.xsd"/>
    <xs:include schemaLocation="TDeleteFilter.xsd"/>
    <xs:include schemaLocation="TTraitementExterne.xsd"/>
    <xs:include schemaLocation="TResource.xsd"/>

    <xs:complexType name="TDocument">
        <xs:sequence>
            <xs:element name="namespaces" type="TNamespace" minOccurs="0"/>
            <xs:element name="special-key" minOccurs="0" maxOccurs="3" type="TSpecial-key"/>
            <!--xs:element name="delete-filter" type="TDeleteFilter" minOccurs="0" maxOccurs="unbounded"/-->
            <xs:element name="default-budget" minOccurs="0" maxOccurs="unbounded" type="TDefault-budget"/>
            <xs:element name="collectivite-path" maxOccurs="1" type="TCollectiviteInformations">
                <xs:annotation>
                    <xs:documentation> Cette information est utilisee a l'import pour determiner sur quelle collectivite porte ce flux XML. Si cette information n'est pas fournie ou n'est pas trouvee, Xemelios demande a l'utilisateur de saisir le code et le libelle de la collectivite. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="budget-path" minOccurs="0" maxOccurs="1" type="TRecherchePaire">
                <xs:annotation>
                    <xs:documentation> Cette information est utilisee a l'import pour determiner sur quel budget porte ce flux XML. Si l'information n'est pas fournie ou n'est pas trouvee, Xemelios demande a l'utilisateur de saisir le code et le libelle du budget. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="resource" minOccurs="0" maxOccurs="unbounded" type="TResource">
                <xs:annotation>
                    <xs:documentation>
                        Permet de définir un ensemble de ressources qui pourront être réutilisées ailleurs
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="reference-nomenclature-path" minOccurs="0" maxOccurs="1" type="TRecherchePaire">
                <xs:annotation>
                    <xs:documentation> Cette information est utilisee pour determiner sur quel budget porte ce flux XML. Si l'information n'est pas fournie ou n'est pas trouvee, Xemelios demande a l'utilisateur de saisir le code et le libelle du budget. </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="parameters" type="TParameters" minOccurs="0" maxOccurs="1"/>
            <xs:element name="entete" minOccurs="0" maxOccurs="unbounded" type="TEntete"/>
            <xs:element name="etat" minOccurs="1" maxOccurs="unbounded" type="TEtat"/>
            <xs:element name="traitementexterne" minOccurs="0" maxOccurs="unbounded" type="TTraitementExterne"/>
        </xs:sequence>

        <xs:attribute name="balise" use="required" type="xs:NCName">
            <xs:annotation>
                <xs:documentation> Identifie la balise de ce type de document. A la constitution du schema, il est preferable que la balise choisie soit unique dans la liste des documents que Xemelios sera amene a traiter. Ce n'est cependant pas obligatoire. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="extension" use="required" type="xs:NCName">
            <xs:annotation>
                <xs:documentation> L'extension par defaut des fichiers pour ce type de document. En general, il s'agira de xhl </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="id" use="required" type="xs:NCName">
            <xs:annotation>
                <xs:documentation> Identifiant unique du type de document. Contrairement à la balise, l'identifiant doit etre unique dans Xemelios. Il est impossible d'avoir deux types de documents differents avec le meme identifiant. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="import-class" use="required">
            <xs:annotation>
                <xs:documentation> classe responsable de l'import. Il n'y a pas de classe d'import definie par defaut, il faut la préciser pour chaque document. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="libelle-extension" use="optional">
            <xs:annotation>
                <xs:documentation> libelle de l'extension. Ce libelle est affiche dans la boite de dialogue d'ouverture de fichiers. Si cette information n'est pas fournie, le titre est utilise. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="persistence-config" use="required">
            <xs:annotation>
                <xs:documentation> Emplacement relatif (par rapport au repertoire des fichiers de configuration) du fichier de configuration de persistence. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="referentiel" use="required" type="xs:NCName">
            <xs:annotation>
                <xs:documentation> Identifiant de la balise du referentiel. Cette balise doit etre situee au neme niveau que les balises d'etat ou d'entetes de documents. Un document peut ne pas avoir de nomenclature. Les nomenclatures sont definies par type de document et par collectivite. Il est de la responsabilite des editeurs de contenu XML de fournir des nomenclatures exhaustives. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="referentiel-xslt-file" use="optional" type="xs:string">
            <xs:annotation>
                <xs:documentation> Emplacement (relatif au repertoire des configurations) de la XSL a appliquer aux nomenclatures avant d'importer. Si aucune XSL n'est specifiee, il n'est applique aucune transformation prealable a l'import. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="schema" use="optional" type="xs:NCName">
            <xs:annotation>
                <xs:documentation> Emplacement du schema du document. Cette information est purement informative et ne sert a aucun moment a pratiquer une validation des documents. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="titre" use="required" type="xs:string">
            <xs:annotation>
                <xs:documentation> Titre du document. Cette information est obligatoire, elle est utilisee dans les menus et les boites de dialogue de Xemelios. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="menu-grouping" use="optional" default="group">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="split"/>
                    <xs:enumeration value="group"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="isControlable" type="xs:boolean" default="false"/>
        <xs:attribute name="control-config-file" type="xs:string" use="optional"/>
        <xs:attribute name="pj-namespace-uri" type="xs:anyURI" use="optional"/>
        <xs:attribute name="displayInMenuIf" type="xs:string" use="optional"/>
        <xs:attribute name="ordre-presentation" type="xs:int" use="optional" default="1000"/>
        <xs:attribute name="global-import-xslt-file" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>emplacement relatif de la xsl d'import globale pour les controles editeurs</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="global-uri-transformer" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Classe a utiliser pour transormer les URI de navigation inter-documents en parametres xsl</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="default-etat-global" type="xs:NCName" use="optional">
            <xs:annotation>
                <xs:documentation>En visualisation autonome, quel état utiliser</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="libelle-collectivite" type="xs:string" use="optional" default="Collectivité">
            <xs:annotation>
                <xs:documentation>Le libellé à afficher dans les boite de dialogues quand on demande la collectivité, ou dans la fenêtre de recherche</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="link-resolver" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Nom de la classe chargée d'interpréter les liens pour les règles complexes de navigation.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="browsable" type="xs:boolean" default="false"/>
        <xs:attribute name="default-browsable-etat" type="xs:IDREF"/>
        <xs:attribute name="natIdColl" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>
                    Nature de l'identifiant de la collectivité : SIREN, SIRET, etc...
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="importable" type="xs:boolean" default="true" use="optional">
            <xs:annotation>
                <xs:documentation>Permet de définir qu'un document n'est pas importable. Utile pour les documents multi-collectivité, quand on veut forcer l'usage d'une variante exclusive pour l'import.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="TDefault-budget" mixed="true">
        <xs:annotation>
            <xs:documentation> Les budgets definis servent a l'import quand le budget n'a pas ete trouve dans le flux XML ; on presente alors a l'utilisateur les budgets par defauts definits et les budgets existants pour la collectivite pour laquelle il importe. Le code budget est dans l'attribut "value", la description dans le contenu. </xs:documentation>
        </xs:annotation>
        <xs:attribute name="value" use="required" type="xs:integer"/>
    </xs:complexType>

</xs:schema>
