User Tools

Site Tools


intro

Introduction

Le système (ou plateforme) Ermitage est un projet de ABORD avec un petit soutien institutionnel de l'IRDP sous forme de l'hébergement en contre-partie des enseignements qu'il apporte du point de vue de l'usage de support informatisé dans l'enseignement.

Après une utilisation durant quelques années (avec un certain succès) au CPI sous l’égide de Alain Favre (et F. Tütsch), il a été imaginé en 2010 d’élargir le cercle des utilisateurs ce qui demandait de faciliter l’accès au système aussi bien à d’autres développeurs qu’à d’autres « fournisseurs » de données.

L'IRDP n'ayant plus d'intérêt dans le projet il s’agissait aussi d’envisager un nouvel hébergement “standard”, ce qui pose deux problèmes:

  1. L’installation dans sa forme primitive demande un paramétrage particulière du serveur (Apache mais aussi du serveur Microsoft) que tous les services mutualisés ne peuvent réaliser.
  2. Le système est développé en Prolog, langage relativement peut courant et pas vraiment maîtrisé dans la communauté web.

Les solutions envisagées :

  1. Utiliser un serveur dédié appartenant au CPI ce qui permet d’effectuer les paramétrages adéquats. Cela ne résout pas le deuxième problème.
  2. Effectuer une migration sur le standard PHP-mySQL. Cette solution résout les deux problèmes. La question reste de savoir si sa mise en œuvre en vaut la peine.

Dans une première version (fin septembre 2010), des essais donnaient une réponse positive à cette dernière question et un rapport évoquait les travaux qui restaient à effectuer pour terminer la migration. Ce rapport s’est prolongé en ce document de suivi de la migration. Il constitue également un premier manuel à l’intention de développeurs et/ou fournisseurs de contenus.

La structure du système

Pour comprendre les étapes de cette migration, rappelons brièvement la structure du système (pour une description plus complète voir http://www.projet-ermitage.org/doc/WebMath-history050408.pdf).

Le fonctionnement se base essentiellement sur deux « moteur » ajoutés au serveur web (figure 1) :

figure 1

1) wxgoto permet la navigation. Ce moteur travaille à partir de données (base de données prolog), certaines directement compilées avec le programme. Les données compilées concernent la structure du musée (voir annexe 1) et les liens aux images. Des données externes sont constituées par le lexique (ontologie), la base des utilisateurs et la base des activités (nom, localisation, etc.). Le contenu des activités elles-mêmes est stocké dans des fichiers xml ou html.

2) wwxml est « simplement » un transformateur de fichier xml en utilisant des feuilles de style xsl. Lorsqu’une activité est chargée et transformée, des scripts en javascript prennent alors en charge le peuplement des diverses fenêtres et gèrent dialogue avec l’utilisateur.

Cette transformation pose aussi la question des feuilles xsl qui ont été élaborées alors que ce dispositif n’était pas encore totalement standardisé et que la généralisation de XML et la mise à disposition de bibliothèques n’étaient pas à l’ordre du jour. La migration de Prof’Expert initiée avant les années 2000 reposait sur SGML et les feuilles de style de l’époque. Le programme de transformation qui comprend un « parseur », un analyseur syntaxique des document xml et xsl et un module de réécriture était réalisé de façon interne.

De plus, pour améliorer les performances, à la première utilisation d’un fichier xml, celui-ci était compilé (idem pour feuilles xsl) en Prolog (production de fichiers pml et psl). L’opération se répétait lorsque le fichier xml était plus récent que le fichier pml.

(Note : Pourquoi ne pas avoir fait directement des fichiers html ? Parce que les fichiers pml, en Prolog peuvent encore inclure du code prolog qui permet de générer du html en fonction du contexte).

A propos des modèles

Les unités d’information (fiches, données de problèmes, etc.) sont stockées dans des fichiers html ou xml. Ces derniers sont transformés en flux de données html grâce à des feuilles de style xsl. Les fichiers et les flux html entraînent à leur suite des scripts écrits en javascript et des feuilles de styles standard css. Chaque feuille de style xsl correspond à un modèle d’unité d’information. En général, plusieurs versions d’un modèle existent (par exemple qrep.xsl, qrep2-1.xsl, qrep2-2.xsl). Cela peut-être des variantes répondant à un besoin spécifique. Mais le plus souvent, il s’agit d’évolution. En effet, lors de la création d’un nouveau modèle, les scripts nécessaires sont souvent directement ajoutés aux données xml ou xsl (on parle alors de maquettes). Dans les versions subséquentes, lorsque le modèle est éprouvé, les scripts sont proposés à part dans des bibliothèques mieux organisées. Certains des scripts sont même associés directement à des éléments xml qui viennent ainsi enrichir le modèle des données (DTD).

Les travaux exploratoires

Durant l’été 2010, des essais encourageants ont été faits. En utilisant, les fonctions standard de PHP, il semblait que wwwxml devait pourvoir être facilement réécrit (contrairement à l’époque de l’écriture de la version Prolog, les environnements de programmation, notamment PHP, fournissent des bibliothèques pour ce propos). Ce travail montrait que l’adaptation des feuilles xsl allait demander un travail raisonnable. La faisabilité étant étudiée sur qtml.xsl et les ui ui_ppmc.xml et ui_931.xml.

De même, la réécriture du moteur wxgoto semblait possible. Restait à trouver une manière judicieuse de transformer les données. La journée d’information du 30 septembre organisée au CPI montrait que la plateforme pouvait rendre service. C’était un signe encourageant de continuer l’étude exploratoire. Avant de rencontrer les informaticiens du CPI (discussion des solutions 1 et 2), il s’agissait alors de poursuivre le développement de wxgoto en version PHP. L’idée était alors de réaliser une version « tout PHP » qui vraisemblablement poserait des problèmes de temps de réponse (notamment liés aux fonctions de restriction). Mais elle permettrait de tester le code PHP, les fichiers xml et les feuilles xsl misà jour. En parallèle, il s’agissait de prévoir la version plus efficace intégrant mySQL.

A la mi octobre la version tout PHP était quasiment achevée, restait à adapter l’ensemble des feuilles xsl finalement relativement standard (ce qu’une étude effectuée en juin 2001 par un étudiant de l’ESNIG, C. Kottelat, avait également montré). Restait toutefois un problème lié à l’usage des entités caractères (par exemple : é ou  ).

Par ailleurs, les outils permettant de peupler la base mySQL étaient aussi mis au point. Pour le développement, il a été envisagé de procéder en deux étapes. Une première étape serait réalisée seulement en PHP avec une version locale puis une version sur le site Ermitage. Puis la version utilisant mySQL constituerait la deuxième étape une fois que l’ensemble des données serait suffisamment testé.

Problème technique des entités

Le principal problème concerne les entités comme é etc. Avec le message:

PHP Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Entity 'egrave' not defined in /Applications/MAMP/htdocs/webexp-test/xml/mathbas0/cpi-chg0.xml, line: 115 in /Applications/MAMP/htdocs/webexp-test/wwwxml.php on line 18

Les propositions trouvées sur Internet sont:

As many of you may have noticed, DOM parser gives errors if the '&nbsp;' entity is present. The E_WARN message looks like:

Warning: DOMDocument::load() [function.load]: Entity 'nbsp' not defined in … There're many ways to solve this:

a) The hard way: <xsl:text disable-output-escaping=“yes”> &amp;nbsp;</xsl:text>

b) Defining &nbsp;: At the top of the document, after the <?xml?> definition, add:

 <!DOCTYPE xsl:stylesheet [
  <!ENTITY nbsp "&#160;" >
  ]>

c) External Doctype: Just in case you want need other HTML entities, you can call an external doctype with the proper definitions

<!DOCTYPE page SYSTEM “http://gv.ca/dtd/character-entities.dtd”>

Of course, you can download the file and place it in your server.

Mais le problème est finalement résolu en supprimant les entités et en mettant les caractères accentués (programme perl to-8859-1) et en utilisant le charset iso-latin1 (pas d'utilisation de &nbsp; ou à travers une application jvs externe).

intro.txt · Last modified: 2014/12/24 18:39 by irpochon