Présentation de l'offre de formation : Uniform

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.


Loïc Pénet, Rachid Si Youcef et Claude Viéville   
Université des Sciences et Technologies de Lille

Dates de modification
Revision 3.0 Le 25 janvier 2006
Revision 3.1 Le 21 juillet 2006
Revision 3.1-RC5 Le 25 septembre 2007
Revision 3.2 Le 17 octobre 2007
1. Présentation générale
1.1. Généralités
1.2. Les fonctions étendues
2. Passage de la version 3.0 à la version 3.1-RC[1-3]
2.1. Evolution du fichier uniform-config.xml
2.2. Evolution du fichier de configuration du moteur de recherche
2.3. Reprises des fichiers de la version 3.0
2.4. Reprise des éléments de la présentation
2.5. Indexation de la base
3. Passage de la version 3.1-RC[1-3] à la version 3.1-RC5
3.1. Modifier le fichier build.properties
3.2. Modifier le fichier properties/uniform-config.xml
3.3. Modifier le fichier initdb/{db-name}/constantes.xml
3.4. Ajuster le dépôt OAI-PMH
3.4.1. Génération des enregistrements
3.4.2. Contenu d'un enregistrement
4. Passage de la version 3.1-RC4 à la version 3.1-RC5
4.1. Modifier le fichier build.properties
4.2. Modifier le fichier properties/uniform-config.xml
5. Passage de la version 3.1-RC5 à la version 3.2
5.1. Reprises des fichiers de la version 3.1
5.2. Reprise des éléments de la présentation
5.3. Préserver le fichier xml2xml/construireDossier.xsl
5.4. Configurer la génération des documents pdf
5.5. Modifier la feuille de transformation cdm2pdf
6. Installation de la servlet
6.1. Généralités
6.2. Installation rapide de la servlet (première installation)
6.2.1. Adaptation à l'environnement d'exécution
6.2.2. Mise en place du stockage des dossiers de formations
6.2.3. Préparer le stockage des dossiers de formation
6.2.4. Importer manuellement des documents CDM-fr
6.2.5. Déploiement de l'application
6.3. Configuration de l'application
6.3.1. Information sur votre établissement
6.4. Commande à destination du serveur d'application
6.5. Liste des variables de configuration
6.5.1. Les variables de configuration propres au build.xml
6.5.2. Les variables pour ajuster les log et les statistiques
6.5.3. La variable pour le webservice SOF
6.6. Variables permettant un réglage fin d'Uniform
6.6.1. Variables du fichier uniform-config.xml
6.6.2. Réglage de l'indexation
6.6.3. Mettre en place votre référentiel
6.6.4. La gestion du référentiel par les listes LOV de SOF
7. Uniform et les requêtes Web
7.1. La liste des commandes exécutées par l'application Uniform
7.1.1. Principe de fonctionnement
7.1.2. Le paramètre formation
7.1.3. Le paramètre _cmd
7.2. Les paramètres XSL
7.3. Les variables de session
7.4. Les paramètres interprétés par Uniform
7.5. Conception d'une grille de recherche
7.5.1. Configuration du moteur de recherche
7.5.2. Structure de la chaîne d'interrogation
7.5.3. Association des valeurs saisies aux index
8. Ajuster l'affichage
8.1. Les fichiers XSL de la distribution
8.1.1. Fichiers principaux
8.1.2. Fichiers inclus
8.1.3. Fichier de création du document PDF
8.2. Description du fichier variablesExt.xml
8.2.1. Régler la balise HTML <head>
8.2.2. Régler les liens vers les CSS
8.2.3. Les options d'affichage des rubriques
8.2.4. Les contenus par défaut
8.2.5. Options d’affichage des Titres des rubriques
8.2.6. Variables particulières
8.2.7. Variables liées au liens
8.3. Mise en place des fichiers CSS
8.3.1. Généralités
8.3.2. La CSS principale
8.3.3. La CSS alternative
8.3.4. Style dynamique
8.3.5. Comment utiliser vos CSS
9. Réglages de l'entrepôt OAI-PMH
10. Liste des variables utilisées dans la rédaction de ce document

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 CDM-fr . 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.

1. Présentation générale

1.1. Généralités

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.

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.

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.

Les dossiers de formation peuvent être "importés" manuellement par des lignes de commande ou par l'intermédiaire d'un webservice compatible avec le canal SOF .

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

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.

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.

1.2. Les fonctions étendues

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

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.

2. Passage de la version 3.0 à la version 3.1-RC[1-3]

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.

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 " Reprise des éléments de la présentation ".

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.

2.1. Evolution du fichier uniform-config.xml

Copiez le fichier properties/uniform-config.sample.xml en le nommant properties/uniform-config.xml puis editez le.

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

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

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

2.2. Evolution du fichier de configuration du moteur de recherche

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

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

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

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

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

2.3. Reprises des fichiers de la version 3.0

Le fichier build.properties de la version 3.0 doit être recopié dans la version 3.1

Le répertoire {initdb} de la version 3.0 doit aussi être recopié dans la version 3.1

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

2.4. Reprise des éléments de la présentation

Si vous avez fait évoluer des fichiers de contrôle de la présentation qui se trouvent sous le répertoire webpages , 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

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

2.5. Indexation de la base

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 ant indexdb .

3. Passage de la version 3.1-RC[1-3] à la version 3.1-RC5

3.1. Modifier le fichier build.properties

A la fin du fichier build.properties, ajouter les lignes suivantes :

3.2. Modifier le fichier properties/uniform-config.xml

Ajouter l'élément site pour fixer l'url d'accès à l'application uniform. Cet élément doit être le premier enfant de l'élément uniform.

<site>
    <url>http://localhost:8080/cdm</url>
</site>

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

<oai nameSpace="http://cdm-fr.fr/2006/CDM-frSchema" schemaLocation="http://cdm-fr.fr/2006/schemas/CDM-fr.xsd"/>
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 :

<oai nameSpace="http://formations.univ-lille1.fr/2006/CDM-unrnpdcSchema" schemaLocation="http://formations.univ-lille1.fr/xsd/2006/CDM-unrnpdc.xsd"/>

3.3. Modifier le fichier initdb/{db-name}/constantes.xml

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

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

3.4. Ajuster le dépôt OAI-PMH

3.4.1. Génération des enregistrements

Si vous utilisez SOF et si vous avez adapté sa génération CDM en l'adaptant pour lui ajouter dans l'élément program/infoBlock/extension/*/typeObjet 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.

Si vous n'utilisez pas SOF, pour modifier le comportement par défaut d'uniform, il faut modifier le template "extractOAIIDS" du fichier webpages/stylesheets/xml2xml/construireDossier.xsl.

3.4.2. Contenu d'un enregistrement

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

Si vous devez ajuster le contenu de l'enregistrement OAI-PMH, il faut intervenir dans le fichier webpages/stylesheets/xml2xml/customoai.xsl.

4. Passage de la version 3.1-RC4 à la version 3.1-RC5

4.1. Modifier le fichier build.properties

A la fin du fichier build.properties, ajouter la ligne suivante :

4.2. Modifier le fichier properties/uniform-config.xml

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

<oai nameSpace="http://cdm-fr.fr/2006/CDM-frSchema" schemaLocation="http://cdm-fr.fr/2006/schemas/CDM-fr.xsd"/>
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 :

<oai nameSpace="http://formations.univ-lille1.fr/2006/CDM-unrnpdcSchema" schemaLocation="http://formations.univ-lille1.fr/xsd/2006/CDM-unrnpdc.xsd"/>

5. Passage de la version 3.1-RC5 à la version 3.2

5.1. Reprises des fichiers de la version 3.1

Le fichier build.properties de la version 3.1 doit être recopié dans la version 3.2

Le répertoire {initdb} de la version 3.1 doit aussi être recopié dans la version 3.2

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

5.2. Reprise des éléments de la présentation

Si vous avez fait évoluer des fichiers de contrôle de la présentation qui se trouvent sous le répertoire webpages , 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

5.3. Préserver le fichier xml2xml/construireDossier.xsl

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.

5.4. Configurer la génération des documents pdf

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 ant create_pdf.

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.

5.5. Modifier la feuille de transformation cdm2pdf

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é.

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

<xsl:key name="objet" match="orgUnit | program | subProgram | course" use="@id"/>

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

key('objet', $ID) 

6. Installation de la servlet

6.1. Généralités

L'application se présente sous forme d'une servlet qui a été testée à l'aide d'un serveur d'application Tomcat 5.5.9

L'application contient des données d'exemple dans le dossier {import} . 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".

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

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.

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.

Des commandes sont proposées pour charger les dossiers de formations, mais il est aussi possible de coupler la servlet au canal SOF qui, par l'intermédiaire d'un webservice, peut envoyer ou effacer un dossier de formation.

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").

6.2. Installation rapide de la servlet (première installation)

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

Note : Vous pouvez éviter la copie manuelle des fichiers de configuration en exécutant la commande ant prepareData

6.2.1. Adaptation à l'environnement d'exécution

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 :

6.2.2. Mise en place du stockage des dossiers de formations

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

6.2.3. Préparer le stockage des dossiers de formation

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

Exécuter la commande ant initdb 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 : {constantes}.xml (le référentiel) et {orgname}.xml (la description de l'établissement valeur orgunit-universite par défaut).

6.2.4. Importer manuellement des documents CDM-fr

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.

Exécutez ant import_dir -DcodAnu=2006

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.

6.2.5. Déploiement de l'application

L'application doit maintenant être déployée vers le serveur d'application.

Exécutez la commande ant deploy 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 {ws.base}/cdm

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

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.

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

6.3. Configuration de l'application

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.

Voici la liste de ces fichiers :

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.

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

6.3.1. Information sur votre établissement

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.

Copiez ce document dans le répertoire import , puis exécutez la commande ant import_orgunit -Dfile=[filename]

Ce document remplace {initdb}/{db.name}/ {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].

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

6.3.1.1. Liste des commandes agissant sur le stockage Uniform

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

6.4. Commande à destination du serveur d'application

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

6.5. Liste des variables de configuration

6.5.1. Les variables de configuration propres au build.xml

Vous n'avez pas à modifier les variables suivantes : app.name, app.version et package.name.

6.5.2. Les variables pour ajuster les log et les statistiques

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

6.5.3. La variable pour le webservice SOF

{ws.base}/services/sof détermine l'URL d'appel du webservice par lequel le canal SOF pourra déposer et effacer des documents dans Uniform.

6.6. Variables permettant un réglage fin d'Uniform

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

6.6.1. Variables du fichier uniform-config.xml

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

6.6.2. Réglage de l'indexation

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

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 élément possède un attribut permettant de l'identifier sans ambiguïté .

Par défaut, Uniform est livré avec uniquement trois index déclarés.

Le fichier de configuration est structuré en deux éléments principaux : folder et languages .

L'élément folder définit les règles d'indexation sur le dossier CDM tandis que l'élément languages 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.

6.6.2.1. L'élément Folder

L'élément folder possède un attribut identFolder 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.

6.6.2.1.1. L'élément focus

Ce folder est décomposé en un élément common-indexes et en une séquence de focus . Chacun de ces deux éléments est composé d'une séquence d' index.

Un focus représente un élément enfant de folder qui peut être identifié sans ambiguïté.

6.6.2.1.1.1. Utilisation d'un focus

Pour repérer tel ou tel élément d'un dossier (=folder), il faut défnir un élément focus à qui des attributs nom et scope sont attribués. L'attribut scope définit à l'aide d'un xpath 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 scope à la valeur /CDM/course ou si on veut repérer tous les éléments program sauf le premier du document, on définira alors scope à la valeur /CDM/program[position()!=1]

6.6.2.1.1.2. L'attribut xpath

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

6.6.2.1.1.3. L'attribut ident

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

Notons que les deux attributs identFolder et ident peuvent être utilisés dans les requêtes de recherche. Dans ce cas leur nom sera préfixé par le caractère @ . De la même manière l'élément focus 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 _focus à la valeur course si un folder a été défini pour cette valeur.

6.6.2.1.2. L'élément common-indexes

L'élément common-indexes 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.

6.6.2.1.3. L'élément index

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 result , tokenized et keyword .

Si un index d'un focus possède le même nom qu'un index défini dans l'élément common-indexes , alors c'est l'index du focus qui est utilisé par le moteur.

6.6.2.1.3.1. Les attributs name et terms

Un élément index possède au moins 2 attributs : name et terms . l'attribut name définit le nom de l'index tel qu'il sera appelé par l'application uniform. L'attribut terms 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.

6.6.2.1.3.2. L'attribut tokenized

En option, l'élément index peut possèder un attribut tokenized qui, lorsqu'il vaut true signifie que le texte correspondant à l'attribut terms 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 tokenized à true ne peuvent pas être utilisés dans le tri d'un résultat de recherche.

6.6.2.1.3.3. L'attribut keyword

Egalement en option, l'élément index peut avoir un attribut keyword à la valeur true. Dans ce cas, le texte correspondant à l'attribut terms 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é".

6.6.2.1.3.4. L'attribut result

Si l'élément index possède un attribut result à la valeur true, alors le texte correspondant à l'attribut terms 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.

6.6.2.1.3.5. L'attribut lang

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

6.6.2.1.3.6. Aucun des trois attributs n'est défini

Si aucun des attributs tokenized , keyword ou result n'existe ou est égal à true, alors, le texte correspondant à l'attribut terms 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.

6.6.2.1.3.7. Priorité entre les attributs result, tokenized et keyword

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é :

6.6.2.2. L'élément languages

L'élément languages définit dans un attribut defaultLanguage 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 language .

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

6.6.2.2.1. L'élément analyser

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

L'élément analyser définit également une liste de mots "vides" qui sont remplacés par un espace quand l'attribut tokenized de l'index vaut true. Cet élément se nomme emptys-words.

6.6.2.2.2. L'élément sort

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

6.6.3. Mettre en place votre référentiel

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.

Voici les cinq types de références qui correspondent aux choix des concepteurs du canal SOF :

Pour chacune de ces références ont doit indiquer :

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 :

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 import qui portera cette valeur.

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".

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 properties/{xquery} ) 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".

6.6.4. La gestion du référentiel par les listes LOV de SOF

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 lovs-sof . Une liste LOV est contenue dans un élément lov-sof caractérisée par 3 attributs :

L'élément lov-sof contient une séquence d'éléments data représentant chacun un item de la liste.

Cet élément data est caractérisé par un attribut code (le code de cet item) et contient un élément value portant le texte attribué à l'item dans la langue de la liste.

Uniform insére l'élément lovs-sof en tant que dernier élément de l'élément /CDM/properties/extension/constantes 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.

7. Uniform et les requêtes Web

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

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.

7.1. La liste des commandes exécutées par l'application Uniform

7.1.1. Principe de fonctionnement

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".

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

7.1.1.1. Format du document CDM-fr correspondant à une requête de présentation des grilles de recherche

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

Ce document permet de composer les différents éléments de la grille de recherche.

7.1.1.2. Format du document CDM-fr correspondant à une liste de formation

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

7.1.1.3. Format du document CDM-fr correspondant à un dossier de formation

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.

7.1.2. Le paramètre formation

Pour des raisons de compatibilité avec la version en production à l'université de Lille 1, le paramètre formation associé à la valeur de la référence d'une formation affiche cette formation.

7.1.3. Le paramètre _cmd

A chaque requête, Uniform exécute la commande dont la valeur a été renseignée dans le paramètre _cmd .

Voici la liste des commandes :

7.2. Les paramètres XSL

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

7.3. Les variables de session

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.

7.4. Les paramètres interprétés par Uniform

Uniform interprète les paramètres qui ont le nom suivant :

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 :

webpages/stylesheets/ _profil/_resultat+"_"+_lang+".xsl"

7.5. Conception d'une grille de recherche

7.5.1. Configuration du moteur de recherche

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.

7.5.2. Structure de la chaîne d'interrogation

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

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

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. Le premier nombre est 1 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).

Ainsi si l'on veut écrire : a or ( b and not c) or d on doit construire les huit paramétrés suivants :

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

7.5.3. Association des valeurs saisies aux index

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.

Un nom de paramètre est composé, au maximum de trois parties séparées par un caractère "_" : l'intitulé qui correspond à l'index (id de cet index), éventuellement la valeur pt 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.

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".

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"

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"

8. Ajuster l'affichage

8.1. Les fichiers XSL de la distribution

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.

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

8.1.1. Fichiers principaux

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

8.1.2. Fichiers inclus

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

8.1.3. Fichier de création du document PDF

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

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

8.2. Description du fichier variablesExt.xml

La configuration de la partie affichage d'Uniform se fait en modifiant le fichier properties/variablesExt.xml.

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.

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

8.2.1. Régler la balise HTML <head>

Les éléments se trouvent dans l'élément /variables/pageTitle.

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.

8.2.2. Régler les liens vers les CSS

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

8.2.3. Les options d'affichage des rubriques

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

Exemple :

						<optionAffichage rubrique="expenses"/>
					

Lisez attentivement les commentaires du fichier variablesExt.xml pour modifier ces éléments.

Autre exemple : Option d'affichage des coordonnées des personnes

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 :

						<optionAffichage type="Responsable"
						adress="1"/>
					

8.2.4. Les contenus par défaut

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

8.2.5. Options d’affichage des Titres des rubriques

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

8.2.6. Variables particulières

Voir /variables/courseVar/userDefine

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

Exemple :

					<userDefine type="examensCc"> <value
					lang="fr-FR">Contrôle continu</value>
					<uniteMesure/> </userDefine>
				

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

8.2.7. Variables liées au liens

Ces variables permettent de remplir les champs " title " et les intitules de certains liens de l’application.

8.3. Mise en place des fichiers CSS

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.

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

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

8.3.1. Généralités

Les mesures utilisées par ces CSS sont exprimées en " EM " 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.

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.

8.3.2. La CSS principale

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 :

8.3.3. La CSS alternative

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.

8.3.4. Style dynamique

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.

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

Par défaut, si aucune valeur n’est trouvée dans le XPATH :

						<xsl:variable name="couleur">
						<xsl:choose> <xsl:when
						test="not(normalize-space(/CDM/program[position()=1]/qualification/degree)
						= '')"> <xsl:value-of
						select="normalize-space(/CDM/program[position()=1]/qualification/degree)"/>
						</xsl:when>
						<xsl:otherwise>TI-li</xsl:otherwise>
						</xsl:choose> </xsl:variable>
					

la valeur de style par défaut sera « .TI-li ».

Elle se référera dans la CSS à la ligne suivante :

						.TI-li .TI-lip { color: #7a0025;
						background-color: inherit; }
					

Chaque type de formation possède donc son propre style d’affichage :

8.3.5. Comment utiliser vos CSS

L’aspect de votre affichage dépendra de 2 facteurs :

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.

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

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…

Cependant, ne renommez jamais les calques qui sont appelles par les XSL.

9. Réglages de l'entrepôt OAI-PMH

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

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 webpages/stylesheets/xml2xml/construireDossier.xsl . Par défaut, Uniform génére un enregistrement OAI pour chaque élément program lorsque la procèdure d'import est activé.

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

10. Liste des variables utilisées dans la rédaction de ce document

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