<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//UR1//DTD docbookAllegeEsup//FR"
"http://www.esup-portail.org/consortium/espace/docbook/xxe/dtd/docbook_allege_esup.dtd">
<article lang="FR">
  <title>Présentation de l'offre de formation : Uniform</title>

  <articleinfo>
    <abstract>
      <para>Uniform se présente sous forme d'une servlet et permet d'afficher
      des dossiers de formation respectant les régles d'usages CDM-fr écrites
      par le groupe technique conduit la DT / SDTICE durant l'année
      2005.</para>
    </abstract>

    <author>
      <firstname>Loïc Pénet, Rachid Si Youcef et Claude Viéville</firstname>

      <surname></surname>

      <affiliation>
        <orgname><ulink url="http://www.univ-lille1.fr"> Université des
        Sciences et Technologies de Lille </ulink></orgname>
      </affiliation>
    </author>

    <revhistory>
      <revision>
        <revnumber>3.0</revnumber>

        <date>Le 25 janvier 2006</date>
      </revision>

      <revision>
        <revnumber>3.1</revnumber>

        <date>Le 21 juillet 2006</date>
      </revision>

      <revision>
        <revnumber>3.1-RC5</revnumber>

        <date>Le 25 septembre 2007</date>
      </revision>

      <revision>
        <revnumber>3.2 </revnumber>

        <date>Le 17 octobre 2007</date>
      </revision>
    </revhistory>
  </articleinfo>

  <para>Uniform permet à un établissement de présenter de façon personnalisée
  une offre de formation. Les dossiers de formations sont stockés au format
  CDM et respectent les règles d'usage définies par le groupe CDM-fr. Pour
  plus détail sur ces régles d'usages, nous vous conseillons de visiter le
  site <ulink url="http://www.educnet.education.fr/articles/cdm-fr.htm">
  CDM-fr </ulink> . Lors de la rédaction de ce document, des variables notées
  {nomdelavariable} ont été utilisées : la dernière section en donne la
  signification.</para>

  <section>
    <title>Présentation générale</title>

    <section>
      <title>Généralités</title>

      <para>Uniform manipule des documents XML respectant le format CDM-fr.
      Chacun de ces documents représente un dossier de formation "complet",
      avec les éléments décrivant l'organisation, le "diplôme" en lui-même et
      l'ensemble des unités d'enseignements, puis enfin les personnes
      concernées par cette formation.</para>

      <para>Uniform prend en compte une année fournie en paramétre de
      configuration (pour être compatible avec le canal SOF) de façon à
      restreindre l'affichage des dossiers de formations.</para>

      <para>Si un document présenté en entrée contient plusieurs diplômes
      (plusieurs éléments program), Uniform crée pour chacun d'eux un dossier
      de formation.</para>

      <para>Les dossiers de formation peuvent être "importés" manuellement par
      des lignes de commande ou par l'intermédiaire d'un <ulink
      url="http://sourcesup.cru.fr/fun/sof/index.html"> webservice compatible
      avec le canal SOF </ulink> .</para>

      <para>Chaque dossier est chargé dans l'espace de stockage, indexé et se
      voit créer un document de type PDF.</para>

      <para>La servlet propose à l'utilisateur de rechercher des formations
      suivant des critères de niveau d'étude, de domaine de formation ou à
      partir de mots contenus dans son intitulé ou sa description. Elle
      affiche des listes de diplômes, puis permet de visualiser le dossier de
      formation, de consulter les semestres et les contenus de chaque unité
      d'enseignement.</para>

      <para>Uniform est une application reposant sur la manipulation de
      document XML et la présentation des écrans HTML est générée par des
      transformations dont les régles sont écrites dans des fichiers de type
      XSL. Les contenus des dossiers de formations restent accessibles au
      format CDM-fr ce qui peut faire d'Uniform une source XML.</para>
    </section>

    <section>
      <title>Les fonctions étendues</title>

      <para>En plus de se comporter comme un afficheur de dossiers de
      formations, Uniform offre les deux fonctionnalités avancées suivantes
      :</para>

      <itemizedlist>
        <listitem>
          <para>Uniform offre un dépôt des dossiers de formation accessible
          depuis le <emphasis role="bold"> protocole OAI-PMH
          </emphasis></para>
        </listitem>

        <listitem>
          <para>Unform se présente désormais aussi comme un " <emphasis
          role="bold">middleware</emphasis> " : son moteur de recherche et les
          dossiers de formations sont accessibles depuis des applications
          distantes par le biais d'un <emphasis
          role="bold">webservice</emphasis> . Ces applications peuvent prendre
          la forme d'une <emphasis role="bold">servlet</emphasis> ou d'une
          <emphasis role="bold">portlet</emphasis> qui s'intégrera dans le
          portail esup. Un exemple de servlet (incluant une archive java) est
          disponible sur le site de sourcesup (Client webservice uniform)
          .</para>
        </listitem>
      </itemizedlist>

      <para>Grâce à ces fonctionnalités, un service qui intégre un
      "moissonneur" de type OAI-PMH pourra indexer les documents d'un site
      uniform. Cela permettra de mettre en place un serveur régional d'offre
      de formation.</para>
    </section>
  </section>

  <section>
    <title>Passage de la version 3.0 à la version 3.1-RC[1-3]</title>

    <para>Les fichiers de configuration d'uniform ont été modifiés lors du
    passage de la version 3.0 à 3.1. Cette section décrit la procèdure à
    éxécuter pour faire évoluer vos propres fichiers de configuration.</para>

    <para>De même, si vous avez fait évoluer les feuilles xsl de présentation,
    il vous faut aussi écuter la procédure décrite plus loin dans la section "
    <emphasis role="bold"> Reprise des éléments de la présentation </emphasis>
    ".</para>

    <para>Après avoir dézippé l'archive esup-uniform.3.1-RCx, vous devez avoir
    un répertoire comportant votre application actuelle en version 3.0
    (esup-uniform.3.0-RC2) et un répertoire correspondant à la version
    d'uniform 3.1 ayant pour nom esup-uniform.3.1.RCx. C'est dans ce dernier
    répertoire que vous allez préparer la migration d'uniform.</para>

    <section>
      <title>Evolution du fichier uniform-config.xml</title>

      <para>Copiez le fichier
      <varname>properties/uniform-config.sample.xml</varname> en le nommant
      <varname>properties/uniform-config.xml</varname> puis editez le.</para>

      <para>Vous allez y reporter les valeurs qui sont actuellement présentes
      dans votre fichier <varname>properties/uniform-config.xml</varname> de
      la version 3.0</para>

      <para>Voici la liste des éléments qu'il faut recopier de la version 3.0
      vers la version 3.1 :</para>

      <itemizedlist>
        <listitem>
          <para><emphasis>/uniform/data-base/@path</emphasis> et
          <emphasis>/uniform/data-base/@name</emphasis></para>
        </listitem>

        <listitem>
          <para><emphasis>/uniform/init-base</emphasis></para>
        </listitem>

        <listitem>
          <para><emphasis>/uniform/xsl/sof2cdm</emphasis>
          <emphasis>/uniform/xsl/dom2pdf</emphasis>
          <emphasis>/uniform/xsl/sof2orgUnit</emphasis> <emphasis>
          /uniform/xsl/extract-program </emphasis></para>
        </listitem>

        <listitem>
          <para><emphasis> /uniform/lucene-config/year-search
          </emphasis></para>
        </listitem>

        <listitem>
          <para><emphasis>/uniform/view/pas</emphasis>
          <emphasis>/uniform/view/lang</emphasis>
          <emphasis>/uniform/view/affiche-mode</emphasis></para>
        </listitem>
      </itemizedlist>

      <para>L'élément de la <emphasis>version 3.0</emphasis>
      <emphasis>/uniform/xsl/profil-name</emphasis> doit être déplacé vers
      <emphasis>/uniform/view/profil-name</emphasis> de la version 3.1</para>
    </section>

    <section>
      <title>Evolution du fichier de configuration du moteur de
      recherche</title>

      <para>Le nom par défaut de ce fichier de configuration a été modifié :
      en version 3.0 il s'appelait <varname>lucenequery.xml</varname> , en
      version3.1 il s'appelle désormais
      <varname>search-engine-config.xml</varname></para>

      <para>Copiez le fichier <varname>
      properties/search-engine-config.sample.xml </varname> en le nommant
      <varname>properties/search-engine-config.xml</varname> puis editez le si
      vous avez été amené à faire évoluer le fichier
      <varname>lucenequery.xml</varname> pour votre application version
      3.0</para>

      <para>Il faut transférer les attributs
      <emphasis>/xquery/indexes/index/@id</emphasis> et
      <emphasis>/xquery/indexes/index/@xpath</emphasis> de chacun de vos
      éléments <emphasis>/xquery/indexes/index</emphasis> de la version 3.0
      respectivement vers les attributs <emphasis>
      /search-engine/folder/communs-indexes/index/@name </emphasis> et
      <emphasis> /search-engine/folder/communs-indexes/index/@terms
      </emphasis> .</para>

      <para>Si cet index doit être utilisé en recherche texte intégral, vous
      pouvez ommettre l'attribut <emphasis>keyword</emphasis> , dans le cas
      contraire, il faut ajouter l'attribut <emphasis>keyword</emphasis> à la
      valeur <emphasis>true</emphasis> .</para>

      <para>Dans la version 3.0, l'élément <emphasis>/xquery/sort</emphasis>
      contient une séquence d'éléments <emphasis>key</emphasis> contenant un
      attribut <emphasis>id</emphasis> , que vous devez reporter dans la
      version3.1 dans l'élement <emphasis>
      /search-engine/languages/language[@name='fr-FR']/sort </emphasis> en
      créant pour chaque élément <emphasis>key</emphasis> un élément
      <emphasis>by</emphasis> dont la valeur de l'attribut
      <emphasis>index</emphasis> doit prendre la valeur de l'attibut
      <emphasis>id</emphasis> (version 3.0)</para>
    </section>

    <section>
      <title>Reprises des fichiers de la version 3.0</title>

      <para>Le fichier <varname>build.properties</varname> de la version 3.0
      doit être recopié dans la version 3.1</para>

      <para>Le répertoire <varname>{initdb}</varname> de la version 3.0 doit
      aussi être recopié dans la version 3.1</para>

      <para>Si vous avez fait évoluer le fichier
      <varname>properties/variablesExt.xml</varname> dans la version 3.0, il
      faut reporter toutes les valeurs qui ont été modifiées ou ajoutées dans
      le fichier <varname>properties/variablesExt</varname> .xml de la version
      3.1</para>
    </section>

    <section>
      <title>Reprise des éléments de la présentation</title>

      <para>Si vous avez fait évoluer des fichiers de contrôle de la
      présentation qui se trouvent sous le répertoire
      <varname>webpages</varname> , il faut aussi les recopier de la version
      3.0 à la version 3.1. Il s'agir de fichiers de type css, xsl, gif ou
      jpg</para>

      <para>En ce qui concerne les feuille xsl qui générent les pages HTML,
      situées dans <varname>webpages/stylesheets/commun</varname> ou
      <varname>webpages/stylesheets/{profil}</varname> (ex: {profil} =
      lyceen), il faut modifier les url qui appellent le service uniform en
      suivant la règle suivante : les paramètres <varname>_voir</varname>
      <varname>_retour</varname> et <varname>_objet</varname> sont remplacés
      par le paramètre unique nommé <varname>_redirect</varname> .
      <varname>_redirect</varname> prendra la valeur
      <varname>{_cmd}_{_retour}_{objet}</varname> . Par exemple, si dans une
      url, <varname>_mode=voir</varname> <varname>_retour=liste</varname> et
      <varname>_objet=program</varname> alors <varname>_redirect</varname>
      vaut <varname>voir_liste_program</varname> .</para>
    </section>

    <section>
      <title>Indexation de la base</title>

      <para>Pour que la nouvelle configuration du moteur de recherche soit
      prise en compte, il est indispensable de ré-indexer la base compléte.
      Exécutez la commande <command>ant indexdb</command> .</para>
    </section>
  </section>

  <section>
    <title>Passage de la version 3.1-RC[1-3] à la version 3.1-RC5</title>

    <section>
      <title>Modifier le fichier build.properties</title>

      <para>A la fin du fichier build.properties, ajouter les lignes suivantes
      :</para>

      <itemizedlist>
        <listitem>
          <para>Pour fixer le code rne de l'étabissement</para>

          <para><programlisting>rne={coderne}</programlisting> ex :
          rne=0593559Y</para>
        </listitem>

        <listitem>
          <para>Pour fixer l'adresse email de l'administrateur de l'entrepôt
          oai</para>

          <para><programlisting>
admin.email=admin@univ.fr</programlisting></para>
        </listitem>

        <listitem>
          <para>Pour fixer le type de création d'enregistrement OAI-PMH : 2
          types sont à votre disposition. Par défaut c'est custom.sample sinon
          on peut activer celle utlisée dans l'unr npdc</para>

          <para><programlisting>#definir les enregistrements oai 
customoai=customoai.sample
#customoai=customoai.unrnpdc</programlisting></para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Modifier le fichier properties/uniform-config.xml</title>

      <para>Ajouter l'élément <emphasis role="bold"> site pour fixer l'url
      d'accès à l'application uniform. Cet élément doit être le premier enfant
      de l'élément uniform. </emphasis></para>

      <para><programlisting>&lt;site&gt;
    &lt;url&gt;http://localhost:8080/cdm&lt;/url&gt;
&lt;/site&gt;</programlisting></para>
    </section>

    <para>Ajouter l'élément oai pour fixer l'espace de nom et le
    "schemaLocation" pour la validation des enregistrements oai-pmh.</para>

    <para><programlisting>&lt;oai nameSpace="http://cdm-fr.fr/2006/CDM-frSchema" schemaLocation="http://cdm-fr.fr/2006/schemas/CDM-fr.xsd"/&gt;</programlisting>Si
    vous souhaitez utiliser une autre version de schéma comme c'est le cas
    actuellment (et temporairement dans l'unr npdc), vous devez modifier les
    valeurs dans les attributs de cet enregistrement. Par exemple pour l'unr
    npdc l'élément oai devient :</para>

    <para><programlisting>&lt;oai nameSpace="http://formations.univ-lille1.fr/2006/CDM-unrnpdcSchema" schemaLocation="http://formations.univ-lille1.fr/xsd/2006/CDM-unrnpdc.xsd"/&gt;</programlisting></para>

    <section>
      <title>Modifier le fichier initdb/{db-name}/constantes.xml</title>

      <para>Ajouter l'élément oai suivant comme dernier enfant de l'élément
      /constantes</para>

      <programlisting>&lt;oai&gt; &lt;!-- decommentez l'élément record si vous
    utilisez SOF et si vous avez ajoutez un élément
    typeObjet dans un élément infoBlock/extension/* --&gt;
    &lt;!--&lt;records&gt;
        &lt;typeObjet&gt;29&lt;/typeObjet&gt;
        &lt;typeObjet&gt;30&lt;/typeObjet&gt;
     &lt;/records&gt;--&gt;
    &lt;sets&gt;
      &lt;set spec="catalogue-of" name="Catalogue de l'offre de formation"/&gt;
    &lt;/sets&gt;
&lt;/oai&gt;</programlisting>
    </section>

    <section>
      <title>Ajuster le dépôt OAI-PMH</title>

      <section>
        <title>Génération des enregistrements</title>

        <para>Si vous utilisez SOF et si vous avez adapté sa génération CDM en
        l'adaptant pour lui ajouter dans l'élément <emphasis role="bold">
        program/infoBlock/extension/*/typeObjet </emphasis> le type d'objet
        interne de SOF, vous pouvez alors ajuster la fabrication des
        enregistrements qui apparaîtront dans le dépôt en modifiant les
        éléments typeObjet qui donne lieu à la création d'un enregistrement
        OAI-PMH.</para>

        <para>Si vous n'utilisez pas SOF, pour modifier le comportement par
        défaut d'uniform, il faut modifier le template "extractOAIIDS" du
        fichier <emphasis role="bold">
        webpages/stylesheets/xml2xml/construireDossier.xsl. </emphasis></para>
      </section>

      <section>
        <title>Contenu d'un enregistrement</title>

        <para>Par défaut Uniform génére un enregistrement OAI dans lequel il
        glisse le dossier de formation.</para>

        <para>Si vous devez ajuster le contenu de l'enregistrement OAI-PMH, il
        faut intervenir dans le fichier <emphasis role="bold">
        webpages/stylesheets/xml2xml/customoai.xsl. </emphasis></para>
      </section>
    </section>
  </section>

  <section>
    <title>Passage de la version 3.1-RC4 à la version 3.1-RC5</title>

    <section>
      <title>Modifier le fichier build.properties</title>

      <para>A la fin du fichier build.properties, ajouter la ligne suivante
      :</para>

      <itemizedlist>
        <listitem>
          <para>Pour fixer le type de création d'enregistrement OAI-PMH : 2
          types sont à votre disposition. Par défaut c'est custom.sample sinon
          on peut par exemple activer celle utlisée dans l'unr npdc</para>

          <para><programlisting>#definir les enregistrements oai 
customoai=customoai.sample
#customoai=customoai.unrnpdc</programlisting></para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Modifier le fichier properties/uniform-config.xml</title>

      <para></para>
    </section>

    <para>Ajouter l'élément oai pour fixer l'espace de nom et le
    "schemaLocation" pour la validation des enregistrements oai-pmh.</para>

    <para><programlisting>&lt;oai nameSpace="http://cdm-fr.fr/2006/CDM-frSchema" schemaLocation="http://cdm-fr.fr/2006/schemas/CDM-fr.xsd"/&gt;</programlisting>Si
    vous souhaitez utiliser une autre version de schéma comme c'est le cas
    actuellement (et temporairement dans l'unr npdc), vous devez modifier les
    valeurs dans les attributs de cet enregistrement. Par exemple pour l'unr
    npdc l'élément oai devient :</para>

    <para><programlisting>&lt;oai nameSpace="http://formations.univ-lille1.fr/2006/CDM-unrnpdcSchema" schemaLocation="http://formations.univ-lille1.fr/xsd/2006/CDM-unrnpdc.xsd"/&gt;</programlisting></para>
  </section>

  <section>
    <title>Passage de la version 3.1-RC5 à la version 3.2</title>

    <section>
      <title>Reprises des fichiers de la version 3.1</title>

      <para>Le fichier <varname>build.properties</varname> de la version 3.1
      doit être recopié dans la version 3.2</para>

      <para>Le répertoire <varname>{initdb}</varname> de la version 3.1 doit
      aussi être recopié dans la version 3.2</para>

      <para>Si vous avez fait évoluer le fichier
      <varname>properties/variablesExt.xml</varname> dans la version 3.1, il
      faut reporter toutes les valeurs qui ont été modifiées ou ajoutées dans
      le fichier <varname>properties/variablesExt</varname> .xml de la version
      3.2</para>
    </section>

    <section>
      <title>Reprise des éléments de la présentation</title>

      <para>Si vous avez fait évoluer des fichiers de contrôle de la
      présentation qui se trouvent sous le répertoire
      <varname>webpages</varname> , il faut aussi les recopier de la version
      3.1 à la version 3.2. Il s'agir de fichiers de type css, xsl, gif ou
      jpg</para>

      <para></para>
    </section>

    <para></para>

    <section>
      <title>Préserver le fichier xml2xml/construireDossier.xsl</title>

      <para>Attention, il ne faut ABSOLUMENT pas écraser le fichier
      xml2xml/construireDossier.xsl qui provient de cette version 3.2. Il a
      été lourdement modifié pour prendre en compte les nouvelles
      fonctionnalités de génération de documents pdf. Vous avez peut-être été
      amené à l'ajuster pour définir la liste des enregistrements oai-pmh.
      dans ce cas reporter les modifications que vous y avez effectué dans le
      fichier de la version 3.2.</para>
    </section>

    <section>
      <title>Configurer la génération des documents pdf</title>

      <para>Au contraire de la version 3.1 qui générait un document pdf pour
      l'ensemble du dossier, cette version 3.2 permet de générer des documents
      pdf por chaque prcours de formation ou pour chaque élément pédagogique.
      Comme la génération des documents pdf est un processus "lent", il est
      possible de demander la génération de ces documents uniqument en mode
      "batch" en utilisant la commande <emphasis role="bold">ant
      create_pdf.</emphasis></para>

      <para><emphasis>Il faut effectuer ce réglage dans le fichier
      uniform-config.xml en vous aidant à la fois du fichier
      uniform-config.sample.xml et des informations qui ont été ajoutés plus
      bas dans ce même document.</emphasis></para>

      <para><emphasis></emphasis></para>

      <para><emphasis></emphasis></para>
    </section>

    <section>
      <title>Modifier la feuille de transformation cdm2pdf</title>

      <para>Désormais un paramètre de transformation supplémentaire est envoyé
      par Uniform lors de la transformation à l'aide la feuille
      xml2xml/cdm2pdf.xsl. Il s'agit du paramètre nommé ID qui prend la valeur
      de l''attribut @id de l'élément CDM qui doit être transformé. </para>

      <para>Il est conseillé d''utiliser la directive xsl:key telle qu'elle
      définie dans le fichier cdm2pdf.xsl livré avec cette version.</para>

      <programlisting>&lt;xsl:key name="objet" match="orgUnit | program | subProgram | course" use="@id"/&gt;</programlisting>
    </section>

    <para>Pour atteindre un objet qui porte un attribut id dans le document
    CDM-fr, on peut donc ensuite utiliser :</para>

    <programlisting>key('objet', $ID) </programlisting>
  </section>

  <section>
    <title>Installation de la servlet</title>

    <section>
      <title>Généralités</title>

      <para>L'application se présente sous forme d'une servlet qui a été
      testée à l'aide d'un serveur d'application <ulink
      url="http://tomcat.apache.org/"> Tomcat 5.5.9 </ulink></para>

      <para>L'application contient des données d'exemple dans le dossier
      <varname>{import}</varname> . Des documents décrivant des formations y
      sont disponibles. Nous conseillons d'installer d'abord la servlet
      Uniform en ne modifiant que les paramètres que nous vous indiquons dans
      la section "Installation rapide de la servlet".</para>

      <para>Liste des pré-requis à vérifier avant l'installation d'uniform
      :</para>

      <itemizedlist>
        <listitem>
          <para>Le logiciel ant (version &gt;= 1.6),</para>
        </listitem>

        <listitem>
          <para>le JDK (version &gt;=1.4.2),</para>
        </listitem>

        <listitem>
          <para>le serveur d'application tomcat (version &gt;= 5.5)</para>
        </listitem>
      </itemizedlist>

      <para>La servlet est construite pour manipuler des dossiers de formation
      au format CDM-fr. Un dossier de formation contient les éléments qui
      décrivent "l'orgUnit" de l'établissement ainsi que les autres "orgUnit"
      qui participent à la formation (les composantes de l'établissement),
      suivi par des éléments "program" contenant la formation, puis une liste
      d'éléments de type "course" pour se terminer éventuellement avec des
      éléments de type "person". S'il y a plusieurs éléments program alors, il
      ne doit y avoir qu'un seul élément program qui représente le diplôme
      attribué : cet élément, à son tour peut référencer des options ou des
      spécialités en référençant (/CDM/program/programStructure/refProgram)
      d'autres éléments program.</para>

      <para>Ces dossiers de formations sont indexés et un document PDF est
      généré pour chacun d'eux puis le tout est chargé dans l'espace de
      stockage d'Uniform qui n'est, dans cette version, qu'un simple système
      de fichiers.</para>

      <para>Des commandes sont proposées pour charger les dossiers de
      formations, mais il est aussi possible de coupler la servlet <ulink
      url="http://sourcesup.cru.fr/fun/sof/index.html"> au canal SOF </ulink>
      qui, par l'intermédiaire d'un webservice, peut envoyer ou effacer un
      dossier de formation.</para>

      <para>Si vous disposez d'un document CDM-fr contenant plusieurs éléments
      "program", une commande particulière permet de construire les dossiers
      de formation (section "commandes agissant sur l'espace de stockage
      d'Uniform").</para>
    </section>

    <section>
      <title>Installation rapide de la servlet (première installation)</title>

      <para>Suivez les étapes définies dans cette section pour mettre en place
      une première fois la servlet et vérifier son bon fonctionnement.</para>

      <para>Note : Vous pouvez éviter la copie manuelle des fichiers de
      configuration en exécutant la commande <command>ant
      prepareData</command></para>

      <section>
        <title>Adaptation à l'environnement d'exécution</title>

        <para>Effectuez une copie du fichier build.sample.properties en le
        nommant build.properties, puis éditez ce fichier de configuration pour
        ajuster les données suivantes :</para>

        <itemizedlist>
          <listitem>
            <para><varname>tomcat.home</varname> : chemin d'accès au
            répertoire de base de tomcat,</para>
          </listitem>

          <listitem>
            <para><varname>ws.base</varname> : l'URL (absolue) qui donnera
            l'accès à l'application,</para>
          </listitem>

          <listitem>
            <para><varname>log.file</varname> : chemin d'accès au fichier des
            log d'Uniform (en absolu),</para>
          </listitem>

          <listitem>
            <para><varname>stat.file</varname> : chemin d'accès au fichier des
            statistiques d'accès aux documents de formations (en
            absolu).</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Mise en place du stockage des dossiers de formations</title>

        <para>Effectuez une copie du fichier <varname>
        properties/uniform-config.sample.xml </varname> en le nommant
        <varname>uniform-config.xml</varname> , puis éditez le pour y modifier
        :</para>

        <itemizedlist>
          <listitem>
            <para><emphasis> /uniform/data-base/@path </emphasis> (variable
            <varname>{db.path}</varname> ) : chemin absolu du répertoire
            réservé au stockage d'Uniform</para>
          </listitem>

          <listitem>
            <para><emphasis> /uniform/data-base/@name </emphasis> (variable
            <varname>{db.name}</varname> ) : nom donné à votre stockage
            Uniform</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Préparer le stockage des dossiers de formation</title>

        <para>Créez le répertoire spécifié par la valeur de
        <varname>{db.path}</varname> du fichier de configuration Uniform en
        prenant soin que l'application ait le droit d'y créer des
        fichiers.</para>

        <para>Exécuter la commande <command>ant initdb</command> qui va, après
        avoir "créé les dossiers Web et compilé le code de l'application",
        déposer deux documents fournis par défaut avec l'application :
        <varname>{constantes}.xml</varname> (le référentiel) et
        <varname>{orgname}.xml</varname> (la description de l'établissement
        valeur orgunit-universite par défaut).</para>
      </section>

      <section>
        <title>Importer manuellement des documents CDM-fr</title>

        <para>L'application est fournie avec 3 documents CDM-fr qui servent à
        vérifier le bon fonctionnement de l'application dans votre
        environnement d'exécution. Il faut dans cette étape les importer dans
        le répertoire de stockage d'Uniform.</para>

        <para>Exécutez <command>ant import_dir -DcodAnu=2006</command></para>

        <para><remark> Précisons ici que la valeur de l'argument codAnu
        représente l'année de début d'une année scolaire. Ainsi quand
        codAnu=2006 alors les dossiers de formation sont relatifs à l'année
        scolaire 2006/2007. </remark></para>
      </section>

      <section>
        <title>Déploiement de l'application</title>

        <para>L'application doit maintenant être déployée vers le serveur
        d'application.</para>

        <para>Exécutez la commande <command>ant deploy</command> qui déploie
        la servlet dans le serveur d'application. Après avoir lancé ou
        redémarré Tomcat, l'application est accessible à l'URL définie par la
        variable <varname>{ws.base}/cdm</varname></para>

        <para>Vous devez obtenir un écran où sont affichées des informations
        concernant "l'université virtuelle" et un diagramme des études de
        cette université.</para>

        <para>Cliquez alors sur la loupe située sous ce diagramme des études.
        Un nouvel écran doit afficher une liste composée des 3 formations
        "importées". Cliquez sur l'une d'elle, et l'écran suivant affiche les
        données relatives à cette formation.</para>

        <para>Si l'application fonctionne, vous pouvez alors entreprendre la
        configuration de l'application décrite à la section qui suit.</para>
      </section>
    </section>

    <section>
      <title>Configuration de l'application</title>

      <para>Lors de la première installation rapide, un ensemble de cinq
      fichiers qui contiendront des données propres à votre installation et
      qui ne seront pas "effacés" lors d'une prochaine installation a été créé
      soit manuellement pour deux d'entre eux soit automatiquement pour les
      trois autres.</para>

      <para>Voici la liste de ces fichiers : <itemizedlist>
          <listitem>
            <para><varname>build.properties</varname> (créé à partir de
            build.sample.properties)</para>
          </listitem>

          <listitem>
            <para><varname> properties/uniform-config.xml </varname> (créé à
            partir de properties/uniform-config.sample.xml)</para>
          </listitem>

          <listitem>
            <para><varname> properties/{search-engine-config}.xml </varname>
            (créé automatiquement à partir de
            properties/search-engine-config.sample.xml)</para>
          </listitem>

          <listitem>
            <para><varname> properties/variablesExt.xml </varname> (créé
            automatiquement à partir de
            properties/variablesExt.sample.xml)</para>
          </listitem>

          <listitem>
            <para>webpages/stylesheets/xml2xml/customoai.xml</para>
          </listitem>

          <listitem>
            <para><varname> {initdb}/{db.name}/{constantes}.xml </varname>
            (créé automatiquement à partir de
            initdb/constantes.sample.xml)</para>
          </listitem>

          <listitem>
            <para><varname> {initdb}/{db.name}/{orgname}.xml </varname> (créé
            automatiquement à partir de
            initdb/orgunit-universite.sample.xml)</para>
          </listitem>
        </itemizedlist></para>

      <para>En résumé, les fichiers de configuration fournis s'appellent
      prefixe.sample.ext et les fichiers exploités par l'application
      prefixe.ext. C'est maintenant dans ces fichiers, et non dans les
      fichiers fournis, que vous devez introduire vos modifications.</para>

      <para>La commande <command>ant validate</command> permet de vérifier que
      le fichier de configuration properties/uniform-config.xml est
      valide.</para>

      <section>
        <title>Information sur votre établissement</title>

        <para>Pour qu'Uniform affiche des informations propres à votre
        établissement vous devez disposer d'un document CDM-fr incluant un
        élément orgUnit décrivant votre établissement.</para>

        <para>Copiez ce document dans le répertoire <varname>import</varname>
        , puis exécutez la commande <command> ant import_orgunit
        -Dfile=[filename] </command></para>

        <para>Ce document remplace <varname>{initdb}/{db.name}/</varname>
        {orgname}.xml et met à jour le document pré-existant dans le système
        de stockage d'Uniform à partir des informations contenus dans le
        document CDM-fr dont le nom est [filename].</para>

        <para>Si toutefois vous ne disposez pas d'un tel document nous pouvez
        éditer le document
        <varname>{initdb}/{db.name}/{orgname}.xml,</varname> puis effectuer
        une commande <command>ant initdb</command> pour mettre à jour le
        système de stockage d'Uniform.</para>

        <section>
          <title>Liste des commandes agissant sur le stockage Uniform</title>

          <para>Voici la liste des commandes qui permettent d'agir sur
          l'espace de stockage d'Uniform :</para>

          <itemizedlist>
            <listitem>
              <para><command>ant cleandb</command> : vide totalement l'espace
              de stockage ainsi que la base d'index</para>
            </listitem>

            <listitem>
              <para><command>ant prepare</command> : met en place les
              répertoires dans l'espace de stokage d'Uniform</para>
            </listitem>

            <listitem>
              <para><command>ant initdb</command> : appelle ant prepare puis
              copie les documents orgunit-universite.xml et constantes.xml
              dans l'espace de stockage d'Uniform</para>
            </listitem>

            <listitem>
              <para><command> ant import_orgunit -Dfile=[document] </command>
              : extrait du fichier <varname>import/[document].xml</varname>
              l'élément orgUnit représentant l'établissement, le copie dans
              <varname> {initdb}/{db.name}/{orgname}.xml </varname> et enfin
              le charge dans l'espace de stockage d'Uniform.</para>
            </listitem>

            <listitem>
              <para><command> ant import_program -Dfile=[document]
              -DcodAnu=[annee] </command> : à partir du fichier { <varname>
              import}/[document].xml </varname> , crée autant de dossiers de
              formations qu'il y a d'éléments <varname>/CDM/program</varname>
              , puis charge chacun de ces dossiers dans l'espace de stokage
              d'Uniform, calcule les index et crée le document PDF associé.
              L'argument <varname>[annee]</varname> fixe l'année pour laquelle
              le document sera visible.</para>
            </listitem>

            <listitem>
              <para><command> ant import_dir -DcodAnu=[annee] </command> :
              charge l'ensemble des fichiers présents dans le répertoire {
              <varname>import}</varname> dans l'espace de stokage d'Uniform,
              les rend visible pour l'année définie par
              <varname>[annee]</varname> , calcule les index et crée les
              documents PDF.</para>
            </listitem>

            <listitem>
              <para><command> ant remove_program -DcodAnu=[annee] -Did=[docid]
              </command> : supprime de l'espace de stockage d'Uniform le
              document identifié (attribut
              <varname>/CDM/program/@ident</varname> ) par [docid] pour
              l'année fixée par <varname>[annee]</varname></para>
            </listitem>

            <listitem>
              <para><command> ant remove_codAnu -DcodAnu=[annee] </command> :
              supprime de l'espace de stockage d'Uniform tous les documents de
              l'année fixée par <varname>[annee]</varname></para>
            </listitem>

            <listitem>
              <para><command>ant indexdb</command> : efface puis recalcule
              tous les index de l'espace de stockage d'Uniform.</para>

              <para><remark> Précisons ici que la valeur de l'argument codAnu
              représente l'année de début d'une année scolaire. Ainsi quand
              codAnu=2006 alors les dossiers de formation sont relatifs à
              l'année scolaire 2006/2007. </remark></para>
            </listitem>

            <listitem>
              <para><emphasis role="bold">ant </emphasis><emphasis
              role="bold">create_oai -DcodAnu=[annee]</emphasis> : efface puis
              recrée tous les enregistrements oai correspondant au millésime
              défini par la valeur du paramètre codAnu</para>
            </listitem>

            <listitem>
              <para><emphasis role="bold">ant</emphasis><emphasis
              role="bold">create_pdf -DcodAnu=[annee] </emphasis>: efface puis
              recrée tous les documents pdf correspondant au millésime défini
              par la valeur du paramètre codAnu</para>
            </listitem>
          </itemizedlist>
        </section>
      </section>
    </section>

    <section>
      <title>Commande à destination du serveur d'application</title>

      <para>Voici la commande utile lorsqu'une modification a eu lieu dans un
      des fichiers de configuration :</para>

      <para><itemizedlist>
          <listitem>
            <para><command>ant deploy</command> : recharge la nouvelle version
            de l'application dans le serveur d'application après avoir effacé
            l'ancienne version, reconstruit le dossier Web et recompilé
            l'application.</para>
          </listitem>
        </itemizedlist></para>
    </section>

    <section>
      <title>Liste des variables de configuration</title>

      <section>
        <title>Les variables de configuration propres au build.xml</title>

        <para><itemizedlist>
            <listitem>
              <para><varname>tomcat.home</varname> : ajuste le répertoire de
              base d'un serveur d'application</para>
            </listitem>

            <listitem>
              <para><varname>deploy.home</varname> : ajuste le répertoire qui
              héberge les applications au sein du serveur d'application</para>
            </listitem>
          </itemizedlist> Vous n'avez pas à modifier les variables suivantes :
        app.name, app.version et package.name.</para>
      </section>

      <section>
        <title>Les variables pour ajuster les log et les statistiques</title>

        <para>Ces variables sont insérées automatiquement dans le fichier
        properties/log4j.properties</para>

        <itemizedlist>
          <listitem>
            <para><varname>log.file</varname> : chemin absolu du fichier des
            log d'Uniform</para>
          </listitem>

          <listitem>
            <para><varname>stat.file</varname> : chemin absolu du fichier des
            statistiques d'Uniform. Dans cette version il n'y a pas
            d'utilitaire pour exploiter ces statistiques.</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>La variable pour le webservice SOF</title>

        <para><varname>{ws.base}/services/sof</varname> détermine l'URL
        d'appel du webservice par lequel le <ulink
        url="http://sourcesup.cru.fr/fun/sof/index.html"> canal SOF </ulink>
        pourra déposer et effacer des documents dans Uniform.</para>
      </section>
    </section>

    <section>
      <title>Variables permettant un réglage fin d'Uniform</title>

      <para>Un réglage fin d'Uniform exige une intervention dans deux autres
      fichiers : <emphasis>properties/uniform-config.xml</emphasis> et
      <emphasis>properties/search-engine-config.xml</emphasis></para>

      <section>
        <title>Variables du fichier uniform-config.xml</title>

        <para>Les variables sont nommées avec le xpath des éléments contenus
        dans le document
        <varname>properties/uniform-config.xml</varname></para>

        <itemizedlist>
          <listitem>
            <para><varname>/uniform/data-base/@path</varname> (variable {
            <varname>db.path</varname> }) : chemin absolu vers le répertoire
            du stockage Uniform (vous devez le créer vous même)</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/data-base/@name</varname> (variable
            <varname>{db.name}</varname> ) : nom du stockage que va utiliser
            Uniform (créé automatiquement au démarrage d'Uniform)</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/data-base/init-base/@path </varname>
            (variable <varname>{initdb}</varname> ) : chemin éventuellement
            relatif au répertoire d'Uniform (celui où est exécutée la commande
            ant) vers le répertoire contenant les documents {orgname}.xml et
            {constantes}.xml.</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/data-base/init-base/orgUnit-name
            </varname> (variable <varname>{orgname}</varname> ) : préfixe du
            fichier contenant le document décrivant votre établissement</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/data-base/import-path </varname>
            (variable <varname>{import}</varname> ) :</para>

            <para>chemin éventuellement relatif au répertoire d'Uniform (celui
            où est exécutée la commande ant) vers le répertoire à partir
            duquel Uniform viendra lire les documents importés manuellement
            dans son espace de stockage.</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/data-base/init-base/constantes </varname>
            (variable <varname>{constantes}</varname> ) : préfixe du nom du
            fichier contenant le référentiel de votre établissement</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/data-base/connection </varname> : définit
            le login et le mot de passe d'accès à l'application depuis le
            webservice SOF</para>

            <para>L'attribut @login : le login</para>

            <para>L'attribut @pass : le mot de passe</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/xsl/sof-to-cdm</varname> : le préfixe de
            la feuille XSL qui permet de rendre compatible CDM-fr un document
            créé par <ulink url="http://sourcesup.cru.fr/fun/sof/index.html">
            SOF </ulink></para>
          </listitem>

          <listitem>
            <para><varname>/uniform/xsl/dom-to-PDF</varname> (variable
            <varname>{topdf}</varname> ) : le préfixe de la feuille XSL qui
            permet de créer un document PDF à partir d'un document
            CDM-fr</para>

            <para>Cet élément permet aussi de définir à travers la valeur de 3
            attributs le comportement d'uniform lors de la création des
            documents pdf</para>

            <para><itemizedlist>
                <listitem>
                  <para>@mention : (valeur par défaut "y") définit si un
                  document pdf doit être créé pour chaque mention lors d'un
                  import manuel (valeur "batch") ou d'un import par le
                  webservice (valeur "=ws"). Si la valeurr vaut "y", alors un
                  document pdf est créé quelque soit le mode d'import. Si la
                  valeur vaut "n", alors aucun document pdf n'est créé pour la
                  mention.</para>
                </listitem>

                <listitem>
                  <para>@elp : (valeur par défaut "n") définit si un document
                  pdf doit être créé pour chaque élément pédagogique (elp)
                  lors d'un import manuel (valeur "batch") ou d'un import par
                  le webservice (valeur "=ws"). Si la valeurr vaut "y", alors
                  un document pdf est créé quelque soit le mode d'import. Si
                  la valeur vaut "n", alors aucun document pdf n'est créé pour
                  un elp.</para>
                </listitem>

                <listitem>
                  <para>@parcours : (valeur par défaut "n") définit si un
                  document pdf doit être créé pour chaque parcours lors d'un
                  import manuel (valeur "batch") ou d'un import par le
                  webservice (valeur "=ws"). Si la valeurr vaut "y", alors un
                  document pdf est créé quelque soit le mode d'import. Si la
                  valeur vaut "n", alors aucun document pdf n'est créé pour un
                  parcours</para>
                </listitem>
              </itemizedlist></para>
          </listitem>

          <listitem>
            <para><varname> /uniform/xsl/sof-to-orgUnit </varname> : le
            préfixe de la feuille XSL qui permet d'extraire l'orgUnit de type
            université à partir d'un document de formation complet</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/xsl/extract-program </varname> : le
            préfixe de la feuille XSL qui permet d'extraire un dossier de
            formation à partir d'un document CDM-fr contenant plus d'une
            formation (plusieurs éléments program). </para>

            <para>C'est dan le fichier défini par cet élément (par défaut
            construireDossier.xsl) que l'on peut personnaliser les régles de
            génération :<itemizedlist>
                <listitem>
                  <para>des dossiers de formation</para>
                </listitem>

                <listitem>
                  <para>des enregistrements oai</para>
                </listitem>

                <listitem>
                  <para>des documents pdf pour les éléments pédagogiques
                  (course CDM-fr) </para>
                </listitem>

                <listitem>
                  <para>des documents pdf pour les parcours </para>
                </listitem>
              </itemizedlist></para>

            <para>des documents et des enregistrements oai</para>
          </listitem>

          <listitem>
            <para><emphasis>/uniform/xsl/cdm-to-oai</emphasis> : la feuille de
            transformation qui permet de générer un enregistrement au format
            OAI à partir d'un enregistrement au format CDM</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/xsl/constants-to-listSets </varname> : la
            feuille de transformation qui permet de définir les ensembles
            (sets) du dépôt OAI-PMH à partir du référentiel de
            l'établissement</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/xsl/slight-cdm</varname> : la feuille de
            transformation qui permet de transformer le dossier CDM pour un
            affichage dans une liste</para>
          </listitem>

          <listitem>
            <para>/uniform/xsl/cdm-document : la feuille de transformation qui
            permet de définir la structure générale d'un document CDM dans
            lequel l'application pourra "injecter" des éléments issus des LOV
            de SOF (des constantes au sens uniform)</para>
          </listitem>

          <listitem>
            <para>/uniform/xsl/lov-sof-update : la feuille de transformation
            qui est utlisée lorsqu'un élément lov doit être mis à jour
            (modification)</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/xsl/profil</varname> (variable
            <varname>{profil}</varname> ) : le nom du profil choisi au
            démarrage d'Uniform. Ce profil peut être modifié lors d'une
            requête Web.</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/lucene-config/file-name </varname>
            (variable <varname>{xquery}</varname> ) : nom du fichier de
            configuration du moteur de recherche Lucene. Ce fichier est
            contenu dans le répertoire properties (valeur par défaut
            <emphasis> search-engine-config.xml </emphasis> )</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/lucene-config/year-search </varname> :
            année pour la quelle les dossiers de formation seront visibles par
            l'application Uniform</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/view/profil</varname> (variable
            <varname>{profil}</varname> ) : le nom du profil choisi au
            démarrage d'Uniform. Ce profil peut être modifié lors d'une
            requête Web.</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/view/pas</varname> (variable
            <varname>{pas}</varname> ) : nombre de "program" affichés par
            page.</para>

            <para>L'attribut activated permet d'activer ou de désactiver le
            mécanisme d'afichage par lot de dossiers. Si l'attribut activated
            est à la valeut true alors le mécansime d'afichage par lot est
            activé. S'il vaut false alors ce mécanisme est désactivé.</para>
          </listitem>

          <listitem>
            <para><varname>/uniform/view/lang</varname> (variable
            <varname>{lang}</varname> ) : langue par défaut d'Uniform
            (actuellement ne fonctionne qu'avec fr-FR)</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/catalog-web-service/max-sessions
            </varname> : détermine le nombre de sessions simultannées en mode
            webservice" que pourra supporter uniform</para>
          </listitem>

          <listitem>
            <para><varname> /uniform/catalog-web-service/minutes-out-session
            </varname> : détermine le temps au bout duqel une session web
            service inactive est détruite par uniform.</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Réglage de l'indexation</title>

        <para>L'indexation des documents de formation peut être paramétrée par
        les données de configuration du fichier
        <varname>properties/{xquery}.xml</varname> .</para>

        <para>Le moteur d'indexation permet d'indexer des dossiers XML et de
        repérer des éléments "enfants" de ce dossier à la condition que cet
        <emphasis role="bold"> élément possède un attribut permettant de
        l'identifier sans ambiguïté </emphasis> .</para>

        <para>Par défaut, Uniform est livré avec uniquement trois index
        déclarés.</para>

        <para>Le fichier de configuration est structuré en deux éléments
        principaux : <emphasis role="bold">folder</emphasis> et <emphasis
        role="bold">languages</emphasis> .</para>

        <para>L'élément <emphasis role="bold">folder</emphasis> définit les
        règles d'indexation sur le dossier CDM tandis que l'élément <emphasis
        role="bold">languages</emphasis> est lui-même composé d'éléments
        language qui définissent le comportement d'une part l'indexation en
        fonction de la langue (d'une part, les mots "vides" et les caractères
        spéciaux et, d'autre part, les index à prendre en compte pour trier
        les résultats d'une recherche.</para>

        <section>
          <title>L'élément Folder</title>

          <para>L'élément <emphasis role="bold">folder</emphasis> possède un
          attribut <emphasis>identFolder</emphasis> pour lequel on doit fixer
          le xpath pour capturer l'identifiant principal du dossier XML. Ainsi
          pour un dossier CDM, l'attribut identFolder vaut :
          /CDM/program[1]/@ident ou /CDM/program[1]/@id suivant que l'on
          utilise @ident ou @id pour identifier le dossier.</para>

          <section>
            <title>L'élément focus</title>

            <para>Ce folder est décomposé en un élément <emphasis role="bold">
            common-indexes </emphasis> et en une séquence de <emphasis
            role="bold">focus</emphasis> . Chacun de ces deux éléments est
            composé d'une séquence d' <emphasis
            role="bold">index.</emphasis></para>

            <para>Un focus représente un élément enfant de <emphasis
            role="bold">folder</emphasis> qui peut être identifié sans
            ambiguïté.</para>

            <section>
              <title>Utilisation d'un focus</title>

              <para>Pour repérer tel ou tel élément d'un dossier (=folder), il
              faut défnir un élément <emphasis role="bold">focus</emphasis> à
              qui des attributs <emphasis>nom</emphasis> et
              <emphasis>scope</emphasis> sont attribués. L'attribut
              <emphasis>scope</emphasis> définit à l'aide d'un
              <emphasis>xpath</emphasis> la portée de ce focus. Par exemple,
              si on veut repérer les éléments de type course on définira alors
              un focus avec un attribut <emphasis>scope</emphasis> à la valeur
              /CDM/course ou si on veut repérer tous les éléments program sauf
              le premier du document, on définira alors
              <emphasis>scope</emphasis> à la valeur
              /CDM/program[position()!=1]</para>
            </section>

            <section>
              <title>L'attribut xpath</title>

              <para>Dans un focus, l' attribut <emphasis>xpath</emphasis> peut
              être défini en absolu ou en relatif. Dans ce dernier cas, c'est
              la valeur de l'attribut <emphasis>scope</emphasis> qui détermine
              le contexte de ce xpath. Si la valeur de
              <emphasis>scope</emphasis> n'est pas renseignée alors il est
              fixé à <emphasis role="bold">/</emphasis> par le moteur.</para>
            </section>

            <section>
              <title>L'attribut ident</title>

              <para>Un focus peut aussi posséder un attribut
              <emphasis>ident</emphasis> qui permet de récupérer par un xpath
              "l'identifiant" associé à ce sous élément du dossier.</para>

              <para>Notons que les deux attributs
              <emphasis>identFolder</emphasis> et <emphasis>ident</emphasis>
              peuvent être utilisés dans les requêtes de recherche. Dans ce
              cas leur nom sera préfixé par le caractère
              <emphasis>@</emphasis> . De la même manière l'élément <emphasis
              role="bold">focus</emphasis> pourra faire partie d'une requête
              de recherche permettant ainsi à l'application de "choisir" des
              sous éléments du dossier comme résultat de la recherche. Par
              exemple, l'application peut demander à rechercher des "courses"
              en posstionnant la variable <emphasis>_focus</emphasis> à la
              valeur <emphasis>course</emphasis> si un folder a été défini
              pour cette valeur.</para>
            </section>
          </section>

          <section>
            <title>L'élément common-indexes</title>

            <para>L'élément <emphasis role="bold"> common-indexes </emphasis>
            contient les index qui font partie du "folder" qu'ils
            appartiennent ou pas à un des focus. Par contre si un de ces index
            appartient à un des focus, alors le focus fera partie du résultat
            de la recherche. Dans le cas contraire, seul le folder fera partie
            du résultat de recherche.</para>
          </section>

          <section>
            <title>L'élément index</title>

            <para>Dans un même focus, les index ont tous des noms différents.
            Par contre, deux focus peuvent avoir des index possédant le même
            nom. Toutefois, ces index doivent absolument possèder les mêmes
            valeurs pour leurs attributs <emphasis>result</emphasis> ,
            <emphasis>tokenized</emphasis> et <emphasis>keyword</emphasis>
            .</para>

            <para>Si un index d'un focus possède le même nom qu'un index
            défini dans l'élément <emphasis role="bold"> common-indexes
            </emphasis> , alors c'est l'index du focus qui est utilisé par le
            moteur.</para>

            <section>
              <title>Les attributs name et terms</title>

              <para>Un élément <emphasis role="bold">index</emphasis> possède
              au moins 2 attributs : <emphasis>name</emphasis> et
              <emphasis>terms</emphasis> . l'attribut
              <emphasis>name</emphasis> définit le nom de l'index tel qu'il
              sera appelé par l'application uniform. L'attribut
              <emphasis>terms</emphasis> definit une suite de xpaths séparés
              par un espace qui perrmettent de retrouver les éléments
              correspondant à cet index dans le document CDM.</para>
            </section>

            <section>
              <title>L'attribut tokenized</title>

              <para>En option, l'élément <emphasis
              role="bold">index</emphasis> peut possèder un attribut
              <emphasis>tokenized</emphasis> qui, lorsqu'il vaut true signifie
              que le texte correspondant à l'attribut
              <emphasis>terms</emphasis> sera décomposé en mots suivant les
              régles fixées par la langue : les mots vides sont transformés en
              espace, les majuscules remplacées par une minuscule ; de plus
              dans ce cas les caractères accentués sont remplacés par leur
              équivalent sans accent. Il faut aussi se rappeler que les index
              qui ont un attribut <emphasis>tokenized</emphasis> à true ne
              peuvent pas être utilisés dans le tri d'un résultat de
              recherche.</para>
            </section>

            <section>
              <title>L'attribut keyword</title>

              <para>Egalement en option, l'élément <emphasis
              role="bold">index</emphasis> peut avoir un attribut
              <emphasis>keyword</emphasis> à la valeur true. Dans ce cas, le
              texte correspondant à l'attribut <emphasis>terms</emphasis> est
              considéré tel quel dans sa totalité et sans modification comme
              un "mot-clé". Cependant, si le texte est réparti dans plusieurs
              "noeuds" du document CDM, alors chacun des noeuds devient un
              "mot-clé".</para>
            </section>

            <section>
              <title>L'attribut result</title>

              <para>Si l'élément <emphasis role="bold">index</emphasis>
              possède un attribut <emphasis>result</emphasis> à la valeur
              true, alors le texte correspondant à l'attribut
              <emphasis>terms</emphasis> est considéré tel quel dans sa
              totalité et sans modification comme un "mot-clé" et la valeur de
              ce mot-clé est renvoyée au module de présentation.</para>
            </section>

            <section>
              <title>L'attribut lang</title>

              <para>Enfin l'index peut posséder un attribut
              <emphasis>lang</emphasis> et dans ce cas le module d'analyse du
              texte à indexer fonctionne en prenant en compte la configuration
              de cette langue.</para>
            </section>

            <section>
              <title>Aucun des trois attributs n'est défini</title>

              <para>Si aucun des attributs <emphasis>tokenized</emphasis> ,
              <emphasis>keyword</emphasis> ou <emphasis>result</emphasis>
              n'existe ou est égal à true, alors, le texte correspondant à
              l'attribut <emphasis>terms</emphasis> est considéré dans sa
              totalité mais en remplaçant les caractères "spéciaux"
              (language/analyser/whites-chars) par des espaces, une suite
              d'espace par un seul espace, les majuscules par des minuscules
              et les caractères accentués par leur équivalents non accentués.
              En outre, si le texte est réparti sur plusieurs noeuds du
              dossier de formation alors chacun de ses noeuds est considéré
              séparément.</para>
            </section>

            <section>
              <title>Priorité entre les attributs result, tokenized et
              keyword</title>

              <para>Il faut aussi connaître la priorité entre ces trois
              attributs lorsqu'ils valent true car seul le plus prioritaire
              est pris en compte ; voici l'ordre de priorité :</para>

              <itemizedlist>
                <listitem>
                  <para>result</para>
                </listitem>

                <listitem>
                  <para>tokenized</para>
                </listitem>

                <listitem>
                  <para>keyword</para>
                </listitem>
              </itemizedlist>
            </section>
          </section>
        </section>

        <section>
          <title>L'élément languages</title>

          <para>L'élément <emphasis role="bold">languages</emphasis> définit
          dans un attribut <emphasis>defaultLanguage</emphasis> la langue
          utilisée par le moteur de recherche lorsqu'elle n'est pas précisée
          dans les index. En plus cet élément définit une séquence d'éléments
          <emphasis role="bold">language</emphasis> .</para>

          <para>Chaque élément <emphasis role="bold">language</emphasis> est
          identifié par un attribut <emphasis>name</emphasis> et comprend deux
          éléments : un élément qui permet de configurer le comportement de
          l'ananlyseur de texte (élément <emphasis
          role="bold">analyser</emphasis> ) et un élément qui permet de
          définir les index utilisés pour trier les dossiers résultant d'une
          recherche (élément <emphasis role="bold">sort</emphasis> ).</para>

          <section>
            <title>L'élément analyser</title>

            <para>L'élément <emphasis role="bold">analyser</emphasis> définit
            dans un élément <emphasis role="bold"> whites-chars </emphasis> la
            liste des caractères spéciaux qui seront remplacés par un espace
            quand l'attribut <emphasis>tokenized</emphasis> est à true ou
            l'attribut <emphasis>result</emphasis> est à true.</para>

            <para>L'élément <emphasis role="bold">analyser</emphasis> définit
            également une liste de mots "vides" qui sont remplacés par un
            espace quand l'attribut <emphasis>tokenized</emphasis> de l'index
            vaut true. Cet élément se nomme <emphasis role="bold">
            emptys-words. </emphasis></para>
          </section>

          <section>
            <title>L'élément sort</title>

            <para>Le tri d'une recherche est contrôlé par l'élément <emphasis
            role="bold">sort</emphasis> qui conteint une séquence d'éléments
            <emphasis role="bold">by</emphasis> ayant chacun un atrribut
            <emphasis>index</emphasis> qui permet de référencer un index
            lui-même défini par son attribut <emphasis>name</emphasis>
            .</para>
          </section>
        </section>
      </section>

      <section>
        <title>Mettre en place votre référentiel</title>

        <para>Cinq types de données manipulés par Uniform peuvent avoir des
        valeurs qui sont propres à votre établissement. Comme Uniform, dans
        une prochaine version, ouvrira un entrepôt de OAI-PMH pour échanger
        les dossiers de formations, nous avons prévu déjà d'indiquer les
        correspondances vers le dispositif qui viendra moissonner l'entrepôt.
        Ce dispositif pourrait être un serveur régional de formation.</para>

        <para>Voici les cinq types de références qui correspondent aux choix
        des concepteurs du <ulink
        url="http://sourcesup.cru.fr/fun/sof/index.html"> canal SOF </ulink>
        :</para>

        <itemizedlist>
          <listitem>
            <para><varname>domaineDiplome</varname> : défini le codage du
            domaine pour le diplôme (domaine au sens "LMD" du terme)</para>
          </listitem>

          <listitem>
            <para><varname>typeDiplome</varname> : défini le niveau du diplôme
            (L, M ou D, ...)</para>
          </listitem>

          <listitem>
            <para><varname>natureDiplome</varname> : défini la nature du
            diplôme (universitaire, national,...)</para>
          </listitem>

          <listitem>
            <para><varname>cycleDiplome</varname> : défini le cycle dans
            lequel est défini ce diplôme (pour les formations hors LMD la
            notion de cycle a été conservée)</para>
          </listitem>

          <listitem>
            <para><varname>publicDiplome</varname> : défini le type de
            public</para>
          </listitem>
        </itemizedlist>

        <para>Pour chacune de ces références ont doit indiquer :</para>

        <itemizedlist>
          <listitem>
            <para><varname>@id</varname> : la référence utilisée par la
            servlet Uniform</para>
          </listitem>

          <listitem>
            <para><varname>@import</varname> : la référence utilisée au sein
            de votre système de gestion des enseignements</para>
          </listitem>

          <listitem>
            <para><varname>@oai</varname> : la référence utilisée au niveau du
            système qui moissonne l'entrepôt (ex : le serveur régional de
            formation)</para>
          </listitem>
        </itemizedlist>

        <para>De plus, certains documents CDM sont parfois incomplets, et lors
        de l'opération de dépôt dans son système de stockage, Uniform tente de
        renseigner le niveau d'entrée et de sortie d'un diplôme. Pour cela, la
        référence typeDiplome peut en plus avoir les indications suivantes
        :</para>

        <itemizedlist>
          <listitem>
            <para><varname>@cdmLevel</varname> = niveau d'entrée du diplôme
            dans le référentiel CDM (vgs, bachelor, master...)</para>
          </listitem>

          <listitem>
            <para><varname>@cdmDegree</varname> = niveau de sortie dans le
            référentiel CDM (bachelor, master, phd)</para>
          </listitem>
        </itemizedlist>

        <para>Si une référence utilsée par uniform correspond à plusieurs
        références de votre système de gestion des enseignements, vous pouvez
        ajouter un élément <emphasis role="bold">import</emphasis> qui portera
        cette valeur.</para>

        <para>Enfin, dans l'état actuel de la livraison, nous avons prévu deux
        types de référentiels pour les domaines : un type pour chaque domaine
        (appelé "grandDomaineLocal") et un autre pour chaque sous-domaine
        (appelé "local"). Ce type est resté dans le document mais n'est pas
        exploité par Uniform. Vous pourriez aussi en ajouter un autre comme
        par exemple le référentiel "erasmus".</para>

        <para>Vous pouvez aussi ajouter d'autres référentiels mais ils ne
        seront pas pris en compte sans avoir effectué plusieurs opérations sur
        Uniform. Tout d'abord, il faut que le document chargé dans l'espace de
        stockage soit référencé, puis que ce champ soit indexé(modification du
        fichier de configuration <varname>properties/{xquery}</varname> ) et
        enfin que vous élaboriez une nouvelle grille de recherche à partir des
        indications fournies dans cette documentation à la section "Conception
        d'une grille de recherche".</para>
      </section>

      <section>
        <title>La gestion du référentiel par les listes LOV de SOF</title>

        <para>Le canal SOF permet de définir des listes de valeurs nommées
        qu'il envoie à uniform par l'intermédiaire du webservice. Uniform n'en
        connait pas le sens mais les insére dans le document XML au moment de
        son traitement par la feuille xsl de transformation. L'ensemble des
        listes LOV sont contenues dans un élément <emphasis
        role="bold">lovs-sof</emphasis> . Une liste LOV est contenue dans un
        élément <emphasis role="bold">lov-sof</emphasis> caractérisée par 3
        attributs :</para>

        <itemizedlist>
          <listitem>
            <para><emphasis>lang</emphasis> : le langage pour lequel sont
            définies les items de la liste,</para>
          </listitem>

          <listitem>
            <para><emphasis>code</emphasis> : le code de la liste,</para>
          </listitem>

          <listitem>
            <para><emphasis>lib</emphasis> : le libellé de la liste.</para>
          </listitem>
        </itemizedlist>

        <para>L'élément <emphasis role="bold">lov-sof</emphasis> contient une
        séquence d'éléments <emphasis role="bold">data</emphasis> représentant
        chacun un item de la liste.</para>

        <para>Cet élément <emphasis role="bold">data</emphasis> est
        caractérisé par un attribut <emphasis>code</emphasis> (le code de cet
        item) et contient un élément <emphasis role="bold">value</emphasis>
        portant le texte attribué à l'item dans la langue de la liste.</para>

        <para>Uniform insére l'élément <emphasis
        role="bold">lovs-sof</emphasis> en tant que dernier élément de
        l'élément <emphasis role="bold"> /CDM/properties/extension/constantes
        </emphasis> qui est présent dans tous les documents XML de type liste
        ou default. Cela permet donc de construire une grille de recherche en
        utilisant les valeurs des LOV de SOF au même titre que les
        "constantes" déjà définies dans les versions précédentes
        d'uniform.</para>
      </section>
    </section>
  </section>

  <section>
    <title>Uniform et les requêtes Web</title>

    <para>Cette section explique comment Uniform prend en compte les requêtes
    HTTP de type GET ou POST qui lui sont adressées.</para>

    <para>Les données affichées en HTML par un navigateur sont élaborées à
    partir de feuille XSL. Il est donc nécessaire de maîtriser ces deux
    technologies pour personnaliser les écrans. De plus, la connaissance des
    styles CSS devient assez vite indispensable.</para>

    <section>
      <title>La liste des commandes exécutées par l'application
      Uniform</title>

      <section>
        <title>Principe de fonctionnement</title>

        <para>Uniform ne manipule que des données XML au format CDM. Lorsqu'il
        exécute une commande il constitue "en interne" un document CDM et le
        transforme à l'aide d'une feuille XSL sélectionnée par les paramètres
        de la requête elle-même selon les règles expliquées à la section
        "paramètres interprétés par Uniform".</para>

        <para>Si la requête comporte le paramètre <emphasis
        role="bold">_xsl</emphasis> positionné à la valeur <emphasis
        role="bold">no</emphasis> , la transformation n'a pas lieu et le
        contenu "brut" XML est alors envoyé au navigateur.</para>

        <section>
          <title>Format du document CDM-fr correspondant à une requête de
          présentation des grilles de recherche</title>

          <para>Le document CDM est composé dans l'ordre de l'élément /
          <emphasis role="bold"> CDM/properties/infoBlock/extension/constantes
          </emphasis> dont le contenu correspond au fichier
          <varname>{constantes}.xml</varname> que vous avez chargé dans
          l'espace de stockage d'Uniform suivi par un élément <emphasis
          role="bold">/CDM/orgUnit</emphasis> dont le contenu correspond au
          fichier <varname>{orgname}.xml</varname> décrivant votre
          établissement. Ce contenu évoluera dynamiquement à chaque fois que
          le canal SOF demandera à charger une LOV.</para>

          <para>Ce document permet de composer les différents éléments de la
          grille de recherche.</para>
        </section>

        <section>
          <title>Format du document CDM-fr correspondant à une liste de
          formation</title>

          <para>Lorsqu'il y a lieu d'afficher une liste de formations, le
          document CDM-fr est composé dans l'ordre de l'élément / <emphasis
          role="bold"> CDM/properties/infoBlock/extension/constantes
          </emphasis> dont le contenu correspond au fichier
          <varname>{constantes}.xml</varname> que vous avez chargé dans
          l'espace de stockage d'Uniform suivi par un élément <emphasis
          role="bold">/CDM/orgUnit</emphasis> dont le contenu correspond au
          fichier <varname>{orgname}.xml</varname> décrivant votre
          établissement., suivi par une série d'éléments <emphasis
          role="bold">/CDM/program</emphasis> correspondant au résultat de la
          recherche.</para>
        </section>

        <section>
          <title>Format du document CDM-fr correspondant à un dossier de
          formation</title>

          <para>Lorsqu'il y a lieu d'afficher un dossier de formation ou le
          contenu d'une unité d'enseignement, le document CDM est alors le
          contenu de ce dossier de formation : on trouve une série d'éléments
          orgUnit, puis d'éléments program, puis d'éléments course, puis
          d'éléments person.</para>
        </section>
      </section>

      <section>
        <title>Le paramètre formation</title>

        <para>Pour des raisons de compatibilité avec la version en production
        à l'université de Lille 1, le paramètre <emphasis
        role="bold">formation</emphasis> associé à la valeur de la référence
        d'une formation affiche cette formation.</para>
      </section>

      <section>
        <title>Le paramètre _cmd</title>

        <para>A chaque requête, Uniform exécute la commande dont la valeur a
        été renseignée dans le paramètre <emphasis role="bold">_cmd</emphasis>
        <emphasis>.</emphasis></para>

        <para>Voici la liste des commandes :</para>

        <itemizedlist>
          <listitem>
            <para><varname>addToBasket</varname> : ajoute la formation
            référencée par <emphasis role="bold">_oid</emphasis> dans le
            panier de l'utilisateur</para>
          </listitem>

          <listitem>
            <para><varname>removeFromBasket</varname> : enlève la formation
            référencée par <emphasis role="bold">_oid</emphasis> du panier de
            l'utilisateur</para>
          </listitem>

          <listitem>
            <para><varname>listBasket</varname> : affiche le contenu du panier
            de l'utilisateur</para>
          </listitem>

          <listitem>
            <para><varname>getFormation</varname> : affiche le contenu de la
            formation référencée par la valeur d' <emphasis
            role="bold">_oid</emphasis></para>
          </listitem>

          <listitem>
            <para><varname>back</varname> : affiche le résultat de la dernière
            recherche</para>
          </listitem>

          <listitem>
            <para><varname>getPdf</varname> : demande l'envoi du document PDF
            de la formation référencée par la valeur d' <emphasis
            role="bold">_oid</emphasis></para>
          </listitem>

          <listitem>
            <para><varname>getUe</varname> : affiche le contenu d'une unité
            d'enseignement référencée par la valeur d' <emphasis
            role="bold">_oid</emphasis> (la formation référencée lors de la
            session)</para>
          </listitem>

          <listitem>
            <para><varname>data</varname> : affiche l'écran d'accueil</para>
          </listitem>

          <listitem>
            <para>getAllFormations : effectue une recherche de formations à
            partir des valeurs des paramètres correspondants aux critères de
            recherche (voir section conception d'une grille de
            recherche)</para>
          </listitem>
        </itemizedlist>
      </section>
    </section>

    <section>
      <title>Les paramètres XSL</title>

      <para>L'application Uniform applique les paramètres suivant lorsqu'elle
      transforme un flux XML avec une feuille XSL :</para>

      <itemizedlist>
        <listitem>
          <para><varname>basket</varname> : nombre de formations sélectionnées
          par l'usager dans son panier</para>
        </listitem>

        <listitem>
          <para><varname>baseActionURL</varname> : l'URL à laquelle il faut
          envoyer la requête GET ou POST</para>
        </listitem>

        <listitem>
          <para><varname>baseMediaURL</varname> : l'URL qui donne accès aux
          différents médias tels que les images ou les CSS</para>
        </listitem>

        <listitem>
          <para><varname>referentiel</varname> : le préfixe du nom de fichier
          contenant le référentiel ( par défaut la valeur est
          constantes)</para>
        </listitem>

        <listitem>
          <para><varname>_pas</varname> : le nombre de formations affichées
          dans une liste (uniquement lors d'un retour de type "liste")</para>
        </listitem>

        <listitem>
          <para><varname>_debut</varname> : le numéro d'ordre de la formation
          dans la liste des formations (uniquement lors d'un retour de type
          "liste")</para>
        </listitem>

        <listitem>
          <para><varname>totalPrograms</varname> : le nombre total de
          formations qui correspondent au résultat de la recherche (uniquement
          lors d'un retour de type "liste")</para>
        </listitem>

        <listitem>
          <para>Tous les paramètres commençant par un seul caractère "_" (les
          variables de session)</para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Les variables de session</title>

      <para>Uniform vous permet d'utiliser des variables de session : Chaque
      paramètre qui a un nom commençant un seul caractère "_" est interprété
      comme une variable de session et sera donc appliqué par Uniform comme
      paramètre XSL lors de chaque opération de transformation XSLT.</para>
    </section>

    <section>
      <title>Les paramètres interprétés par Uniform</title>

      <para>Uniform interprète les paramètres qui ont le nom suivant :</para>

      <itemizedlist>
        <listitem>
          <para><varname>_oid</varname> : l'identifiant du dossier de
          formation (correspond au préfixe du nom de fichier tel qu'il est
          chargé dans l'espace de stockage d'Uniform et la valeur de
          l'attribut /CM/program/@ident dans un dossier de formation
          CDM).</para>
        </listitem>

        <listitem>
          <para><varname>_lang</varname> (fr-FR par défaut) : choix de la
          langue d'affichage</para>
        </listitem>

        <listitem>
          <para><varname>_xsl</varname> (valeur no : pas de transformation
          [utile pour le debug ou l'envoi d'XML])</para>
        </listitem>

        <listitem>
          <para><varname>_resultat</varname> : définit le préfixe du nom de la
          feuille xsl qui est utilisée pour afficher le résultat de la
          requête</para>
        </listitem>

        <listitem>
          <para><varname>_profil</varname> : nom du profil qui sera activé (la
          feuille xsl définit par _resultat doit obligatoirement exister dans
          ce profil)</para>
        </listitem>

        <listitem>
          <para><varname>_pas</varname> : nombre d'items composant une liste
          lors de la présentation d'un résultat</para>
        </listitem>
      </itemizedlist>

      <para>En résumé, les valeurs de ces paramètres sont utilisés par Uniform
      pour sélectionner la feuille XSL lors d'une transformation suivant la
      règle :</para>

      <para><emphasis role="bold">webpages/stylesheets/</emphasis>
      _profil/_resultat+"_"+_lang+".xsl"</para>
    </section>

    <section>
      <title>Conception d'une grille de recherche</title>

      <section>
        <title>Configuration du moteur de recherche</title>

        <para>Le comportement du moteur de recherche est défini par le fichier
        de configuration /properties/search-engine-config.xml. Reportez-vous à
        la section 3 pour comprendre comment ajuster les différents paramètres
        du moteur de recherche. Ces paramètres définissent le nom des index
        utilisables dans une grille de recherche ainsi que la façon dont
        seront calculés ces index lors de la phase d'indexation des documents
        de formation.</para>
      </section>

      <section>
        <title>Structure de la chaîne d'interrogation</title>

        <para>Une chaîne d'interrogation doit correspondre aux régles de
        nommage suivantes :</para>

        <para>Tous les paramètres utilisés pour la conception d'une grille de
        recherche commencent par deux caractères "_".</para>

        <para>Tous les paramètres utilisés pour structurer la chaîne
        d'interrogation commencent par deux "_" puis un nombre dont la valeur
        sert à ordonner les éléments de la chaîne d'interrogation. <emphasis
        role="bold"> Le premier nombre est 1 </emphasis> donc le paramètre se
        nomme "__1". Le caractère "." est utilisé pour combiner des opérations
        élémentaires entre elles (ouverture d'un nouveau niveau).</para>

        <para>Ainsi si l'on veut écrire : <emphasis role="bold"> a or ( b and
        not c) or d </emphasis> on doit construire les huit paramétrés
        suivants :</para>

        <itemizedlist>
          <listitem>
            <para>"__1" valeur = "__a"</para>
          </listitem>

          <listitem>
            <para>"__2" valeur = "or"</para>
          </listitem>

          <listitem>
            <para>"__3.1" valeur = "__b"</para>
          </listitem>

          <listitem>
            <para>"__3.2" valeur = "and"</para>
          </listitem>

          <listitem>
            <para>"__3.3" valeur = "not"</para>
          </listitem>

          <listitem>
            <para>"__3.4" valeur = "__c"</para>
          </listitem>

          <listitem>
            <para>"__4" valeur = "or"</para>
          </listitem>

          <listitem>
            <para>"__5" valeur = "__d"</para>
          </listitem>
        </itemizedlist>

        <para>Ces paramètres peuvent être transmis dans les champs de type
        "hidden" d'un formulaire HTML.</para>
      </section>

      <section>
        <title>Association des valeurs saisies aux index</title>

        <para>Les valeurs définies dans la structure de la chaîne
        d'interrogation définissent les noms des paramètres auxquels il faut
        associer les valeurs saisies dans le formulaire de requête. Les noms
        doivent permettre d'associer un index et un mode de recherche.</para>

        <para>Un nom de paramètre est composé, au maximum <emphasis
        role="bold">de trois parties</emphasis> séparées par un caractère "_"
        : l'intitulé qui correspond à l'index (id de cet index),
        éventuellement la valeur <emphasis role="bold">pt</emphasis> si l'on
        veut déclencher une recherche en texte intégral, et éventuellement un
        opérateur OR ou AND qui indique comment seront combinés les mots
        composant la phrase à rechercher.</para>

        <para>Par exemple pour un index dont l'id est "titre", si l'on veut
        faire une recherche simple le nom du paramètre sera :
        "__titre".</para>

        <para>Autre exemple, pour un index dont le nom est "sujet", si l'on
        veut rechercher un document qui comporte dans son sujet tous les mots
        saisis par l'utilisateur, le nom du paramètre sera :
        "__sujet_pt_AND"</para>

        <para>Enfin, pour un index dont le nom est "description", si l'on veut
        rechercher un document qui comporte dans sa description un des mots
        saisis par l'utilisateur, le nom du paramètre sera :
        "__description_pt_OR"</para>
      </section>
    </section>
  </section>

  <section>
    <title>Ajuster l'affichage</title>

    <section>
      <title>Les fichiers XSL de la distribution</title>

      <para>Les fichiers XSL qui prennent en charge la présentation sont
      situés dans le répertoire webpages/stylesheets. Uniform propose lors de
      sa distribution une présentation dans un profil appelé "lyceen".
      D'autres profils peuvent être créés en ajoutant un nouveau répertoire
      fils à webpages/stylesheets et en y copiant des nouvelles feuilles XSL
      dont le nom respecte les régles énoncées dans la section
      précédante.</para>

      <para>Dans cette section nous vous proposons de découvrir le profil
      "lyceen" proposé par défaut.</para>

      <section>
        <title>Fichiers principaux</title>

        <para>Les fichiers sont localisés dans le répertoire
        webpages/stylesheets/{profil} :</para>

        <itemizedlist>
          <listitem>
            <para><emphasis> voir_default_program_fr-FR.xsl </emphasis> : une
            feuille XSL pour la page par défaut du profil (lors d'une
            ouverture de session)</para>
          </listitem>

          <listitem>
            <para><emphasis> voir_liste_program_fr-FR.xsl </emphasis> : une
            feuille XSL pour afficher la liste des diplômes (objet CDM :
            program)</para>
          </listitem>

          <listitem>
            <para><emphasis> voir_fiche_program_fr-FR.xsl </emphasis> : une
            feuille XSL pour afficher un diplôme (objet CDM : program)</para>
          </listitem>

          <listitem>
            <para><emphasis> voir_fiche_course_fr-FR.xsl </emphasis> : une
            feuille XSL pour afficher une unité d'enseignement (objet CDM :
            course)</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Fichiers inclus</title>

        <para>Les fichiers communs à tous les profils sont localisés dans le
        répertoire webpages/stylesheets/commun</para>

        <itemizedlist>
          <listitem>
            <para><emphasis>commun.xsl</emphasis> : prise en charge des
            éléments répétitifs de CDM comme la mise en forme du texte,</para>
          </listitem>

          <listitem>
            <para><emphasis>zoneLien.xsl</emphasis> : prise en charge des
            templates de type lien</para>
          </listitem>

          <listitem>
            <para><emphasis>recherches.xsl</emphasis> : prise en charge des
            templates qui proposent des grilles de recherche</para>

            <para>Deux grilles de recherche sont proposées : <itemizedlist>
                <listitem>
                  <para>Recherche par le schéma des études (niveau d'étude) ou
                  en texte intégral sur l'intitulé du diplôme (la variable des
                  session <varname>_recherche=0</varname> )</para>
                </listitem>

                <listitem>
                  <para>Recherche par le domaine des études, le niveau de
                  formation et l'intitulé du diplôme en texte intégral (
                  <varname> _recherche &gt; 0 </varname> )</para>
                </listitem>
              </itemizedlist></para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Fichier de création du document PDF</title>

        <para>La création du document PDF d'un dossier de formation est
        réalisée par le fichier <varname>{topddf}.</varname></para>

        <para><varname> Dans sa version actuelle, Uniform ne fournit qu'une
        "ébauche" de transformation qui n'affiche pas toutes les données du
        dossier de formations. </varname></para>
      </section>
    </section>

    <section>
      <title>Description du fichier variablesExt.xml</title>

      <para>La configuration de la partie affichage d'Uniform se fait en
      modifiant le fichier <emphasis role="bold"> properties/variablesExt.xml.
      </emphasis></para>

      <para><remark> Si vous voulez adapter les fichiers CSS, mettre en place
      votre logo ou votre fond d'écran, n'utilisez pas les noms des fichiers
      tels qu'ils vous arrivent dans la distribution mais donnez leur un nom
      différent puis indiquez ce nom dans l'élément approprié du fichier
      variablesExt.xml. Cela vous permettra de charger la version suivante
      d'uniform tout en préservant votre configuration. </remark></para>

      <para>Ce fichier est à modifier pour ajuster l'affichage à partir de ce
      qui est prévu par le code dans les feuilles XSL fournies.</para>

      <section>
        <title>Régler la balise HTML &lt;head&gt;</title>

        <para>Les éléments se trouvent dans l'élément
        <varname>/variables/pageTitle.</varname></para>

        <para>Respectez les consignes qui sont présentes en commentaires dans
        ce fichier. Vous pouvez ainsi maîtriser l'ajout des meta tag lors de
        la génération du code HTML.</para>
      </section>

      <section>
        <title>Régler les liens vers les CSS</title>

        <para>Vous pouvez ajuster les liens et noms des CSS qui sont générées
        par les feuilles XSL</para>

        <itemizedlist>
          <listitem>
            <para><emphasis role="bold"> &lt;variable type="baseCanalURL"&gt;
            </emphasis> : réservé pour une future implantation d'Uniform dans
            le portail.</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold"> &lt;variable type="baseCssURL"&gt; :
            </emphasis> l'URL du dossier racine des CSS</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold"> &lt;variable
            type="baseCssPrincipal"&gt; : </emphasis> le nom du fichier
            principal CSS</para>
          </listitem>

          <listitem>
            <para><emphasis role="bold"> &lt;variable
            type="baseCssAlternate"&gt; : </emphasis> le nom du fichier CSS
            secondaire ( voir la section qui traite des CSS)</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Les options d'affichage des rubriques</title>

        <para>Certaines rubriques peuvent être supprimées de l’affichage.
        Elles sont identifiées par les éléments nommés
        <varname>optionAffichage</varname> .</para>

        <para>Exemple : <programlisting>
						&lt;optionAffichage rubrique="expenses"/&gt;
					</programlisting></para>

        <para>Lisez attentivement les commentaires du fichier
        <emphasis>variablesExt.xml</emphasis> pour modifier ces
        éléments.</para>

        <para>Autre exemple : Option d'affichage des coordonnées des
        personnes</para>

        <para>Pour ne pas afficher les coordonnées d’un type de personnes dont
        le rôle est « Responsable », ajoutez dans le fichier un élément comme
        suit : <programlisting>
						&lt;optionAffichage type="Responsable"
						adress="1"/&gt;
					</programlisting></para>
      </section>

      <section>
        <title>Les contenus par défaut</title>

        <para>Ce sont les contenus qui s'affichent par défaut pour chaque mode
        de recherche afin de guider l'utilisateur (voir
        <emphasis>content.xsl</emphasis> ) ainsi que la texte d’accueil lors
        de la première connexion au service.</para>
      </section>

      <section>
        <title>Options d’affichage des Titres des rubriques</title>

        <para>Il ne faut pas modifier les valeurs de l’attribut "
        <emphasis>type</emphasis> " de l’élément « titreRub » mais uniquement
        le contenu texte de ses éléments " <emphasis>value</emphasis>
        ".</para>
      </section>

      <section>
        <title>Variables particulières</title>

        <para>Voir <varname>/variables/courseVar/userDefine</varname></para>

        <para>Ces valeurs permettent de personnaliser les titres des rubriques
        dont l’attribut« <varname>userDefined</varname> »prend une valeur
        particulière.</para>

        <para>Exemple :</para>

        <programlisting>
					&lt;userDefine type="examensCc"&gt; &lt;value
					lang="fr-FR"&gt;Contrôle continu&lt;/value&gt;
					&lt;uniteMesure/&gt; &lt;/userDefine&gt;
				</programlisting>

        <para>mettra le titre « Contrôle continu » lorsque l'attribut
        userDefined portant la valeur " <varname>examensCc</varname> " sera
        rencontré dans le dossier de formation.</para>
      </section>

      <section>
        <title>Variables liées au liens</title>

        <para>Ces variables permettent de remplir les champs "
        <emphasis>title</emphasis> " et les intitules de certains liens de
        l’application.</para>
      </section>
    </section>

    <section>
      <title>Mise en place des fichiers CSS</title>

      <para>Le résultat transformé du flux XML envoyé par l’application
      Uniform produit du XHTML dont l’affichage est contrôlé par des feuilles
      de style CSS. Ces deux types de fichiers ont été validés et sont
      compatibles W3C.</para>

      <para>Chaque page générée fait un lien sur une CSS principale et une CSS
      alternative.</para>

      <para>Le nom des classes CSS de la forme <emphasis>.TI-xxx</emphasis> ne
      doivent pas être changé dans la mesure où il est étroitement lié aux
      données du fichier {constantes}.xml.</para>

      <section>
        <title>Généralités</title>

        <para>Les mesures utilisées par ces CSS sont exprimées en "
        <emphasis>EM</emphasis> " afin de préserver une certaine élasticité
        dans le cas d’une augmentation de la taille du texte par
        l’utilisateur. Attention, le chemin des images nommées dan la CSS est
        relatif à la CSS.</para>

        <para>Les calques sont nommés dans la feuille XSL. Évitez de changer
        les noms de calques dans la CSS si vous voulez profiter des futures
        évolutions de cette distribution.</para>
      </section>

      <section>
        <title>La CSS principale</title>

        <para>La feuille de style principale est organisée selon une mise en
        page logique dont la hiérarchie est expliquée sur le schéma ci-dessous
        :</para>

        <mediaobject>
          <imageobject>
            <imagedata align="center"
            fileref="images/cssSchema.gif">Organisation de l'écran</imagedata>
          </imageobject>
        </mediaobject>
      </section>

      <section>
        <title>La CSS alternative</title>

        <para>Cette feuille de style est importante à plus d’un titre. Elle
        met votre site en accord avec les lois d’accessibilité en vigueur.
        Elle permet surtout aux utilisateurs dotés des navigateurs dernière
        génération de permuter les feuilles de styles à la volée et d’utiliser
        plus particulièrement cette feuille « contraste » destinée aux
        personnes mal voyantes.</para>
      </section>

      <section>
        <title>Style dynamique</title>

        <para>SOYEZ TRÈS PRUDENT LORSQUE VOUS MODIFIEZ LES NOMS D'ATTRIBUT DE
        STYLE DANS LE FICHIER CSS. CES NOMS SONT LE PLUS SOUVENT ASSOCIÈS A
        DES DONNÉES XML.</para>

        <para>Les feuilles de transformation utilisent la variable couleur
        pour déterminer la couleur générale des texte en fonction du type de
        formation.</para>

        <para>Par défaut, si aucune valeur n’est trouvée dans le XPATH :
        <programlisting>
						&lt;xsl:variable name="couleur"&gt;
						&lt;xsl:choose&gt; &lt;xsl:when
						test="not(normalize-space(/CDM/program[position()=1]/qualification/degree)
						= '')"&gt; &lt;xsl:value-of
						select="normalize-space(/CDM/program[position()=1]/qualification/degree)"/&gt;
						&lt;/xsl:when&gt;
						&lt;xsl:otherwise&gt;TI-li&lt;/xsl:otherwise&gt;
						&lt;/xsl:choose&gt; &lt;/xsl:variable&gt;
					</programlisting></para>

        <para>la valeur de style par défaut sera « .TI-li ».</para>

        <para>Elle se référera dans la CSS à la ligne suivante :
        <programlisting>
						.TI-li .TI-lip { color: #7a0025;
						background-color: inherit; }
					</programlisting></para>

        <para>Chaque type de formation possède donc son propre style
        d’affichage :</para>

        <itemizedlist>
          <listitem>
            <para>.TI-ma .TI-map : Master, Master pro</para>
          </listitem>

          <listitem>
            <para>.TI-iup : IUP</para>
          </listitem>

          <listitem>
            <para>.TI-ing .TI-dii : diplôme d'ingénieurs</para>
          </listitem>

          <listitem>
            <para>.TI-li .TI-lip : Licences et licences
            professionnelles</para>
          </listitem>

          <listitem>
            <para>.TI-DEUST : DEUST</para>
          </listitem>

          <listitem>
            <para>.TI-DUT : DUT</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Comment utiliser vos CSS</title>

        <para>L’aspect de votre affichage dépendra de 2 facteurs :</para>

        <itemizedlist>
          <listitem>
            <para>d’une part, la modification de paramètres dans le fichier
            XML de réglage d’affichage (variablesExt.xml ) vous permettra
            d’afficher ou non le logo, les colonnes…</para>
          </listitem>

          <listitem>
            <para>d’autre part la modification des valeurs dans la CSS</para>
          </listitem>
        </itemizedlist>

        <para>La CSS principale a été dupliquée et renommée « modele.css ». Ne
        modifiez-pas ce fichier qui est en quelque sorte votre modèle.</para>

        <para>Pour modeler les CSS à votre goût, utilisez les fichiers témoins
        dans le répertoire « modeleFichiers » en dessous du répertoire
        CSS.</para>

        <para>Ouvrez un modèle de sortie XHTML dans votre éditeur préféré
        (prendre un éditeur compatible XHTML et CSS comme DreamWeaver ou
        Golive) : vous pouvez maintenant modifier les valeurs de placement, de
        couleur etc…</para>

        <para>Cependant, ne renommez jamais les calques qui sont appelles par
        les XSL.</para>
      </section>
    </section>
  </section>

  <section>
    <title>Réglages de l'entrepôt OAI-PMH</title>

    <para>Uniform gère un entrepôt de données accessible en moissonnage par un
    client respectant le protocole OAI-PMH.</para>

    <para>L'administrateur d'uniform peut régler la génération des
    enregistrements OAI soit en spécifiant des régles portant le type d'objet
    quand il s'agit d'un coulage avec SOF ou en modifiant le template nommé
    "extractOAIIDs" dans le fichier <emphasis role="bold">
    webpages/stylesheets/xml2xml/construireDossier.xsl </emphasis> . Par
    défaut, Uniform génére un enregistrement OAI pour chaque élément program
    lorsque la procèdure d'import est activé.</para>

    <para>Lorsque l'import est activé par le logiciel SOF aménagé pour envoyer
    le type d'objet généré (dans l'élément <emphasis role="bold">
    infoBlock/extension/*/typeObjet </emphasis> ), il est alors possible de
    régler la création des enregistrements en modifiant le fichier du
    référentiel <varname>{constantes}</varname> .xml. Il suffit de reporter
    les types d'objets dans des éléments <emphasis role="bold">
    /constantes/oai/records/typeObjet </emphasis> .</para>
  </section>

  <section>
    <title>Liste des variables utilisées dans la rédaction de ce
    document</title>

    <para>Lors de la rédaction de ce document, des variables notées
    <varname>{nomdelavariable}</varname> ont été utilisées. En voici la liste
    :</para>

    <itemizedlist>
      <listitem>
        <para><varname>{db.name}</varname> : le nom donné à l'espace de
        stockage (valeur "uv" par défaut)</para>
      </listitem>

      <listitem>
        <para><varname>{db.path}</varname> : chemin absolu de l'espace de
        stockage</para>
      </listitem>

      <listitem>
        <para><varname>{constantes}</varname> : préfixe du nom de fichier XML
        contenant le référentiel de votre établissement</para>
      </listitem>

      <listitem>
        <para><varname>{orgname}</varname> : préfixe du nom de fichier XML
        contenant la description de votre établissement</para>
      </listitem>

      <listitem>
        <para><varname>{ws.base}</varname> : URL qui permet de joindre le
        serveur d'application de l'application Uniform</para>
      </listitem>

      <listitem>
        <para><varname>{initdb}</varname> : chemin du répertoire qui contient
        les documents de référentiel et de description de votre
        établissement</para>
      </listitem>

      <listitem>
        <para><varname>{import}</varname> : chemin du répertoire qui contient
        les dossiers de formation à importer lors des opérations manuelles
        agissant sur l'espace de stockage d'Uniform.</para>
      </listitem>

      <listitem>
        <para><varname>{profil}</varname> : nom d'un profil permettant
        d'associer un type de visualisation spécifique (correspond au
        paramètre <varname>_profil</varname> d'une requête Web).</para>
      </listitem>

      <listitem>
        <para><varname>{pas}</varname> : nombre de formations affichées par
        page lors de l'affichage d'une liste (correspond au paramètre
        <varname>_pas</varname> d'une requête Web)</para>
      </listitem>

      <listitem>
        <para><varname>{lang}</varname> : langue d'affichage (correspond au
        paramètre <varname>_lang</varname> d'une requête Web)</para>
      </listitem>

      <listitem>
        <para><varname>{xquery}</varname> : nom du fichier (situé dans le
        répertoire properties) contenant les données de configuration de
        Lucene (par défaut "search-engine-config.xml")</para>
      </listitem>

      <listitem>
        <para><varname>{topdf}</varname> : Le préfixe du nom de fichier xsl
        qui effectue la transformation d'un dossier de formation en PDF</para>
      </listitem>
    </itemizedlist>
  </section>
</article>