Copyright © 2015-2023 Yves MARCOUX; dernière modification de cette page: 2023-04-14.
Conclusion du projet XML
Yves MARCOUX – EBSI – Université de Montréal
gin-ebsi3011pubWeb dans l’espace Web L’objectif de ce travail est d’acquérir de l’expérience avec quelques scénarios de publication Web de documents structurés. Les scénarios explorés sont :
Il est aussi possible de faire indexer les fichiers statiques après leur publication par un outil d’indexation Web (par exemple, le Google Programmable Search Engine ou FreeFind), de façon à pouvoir formuler des recherches par requêtes via un formulaire intégré à la page d’accueil. Cet aspect n’est cependant pas exploré dans ce travail.
Dans tous les cas, les documents XML publiés sont ceux que vous avez créés dans le
cadre du travail de modélisation et stylage. L’utilisateur final (l’internaute à qui
la publication Web est destinée) voit toujours les documents XML à travers la
lunette de votre feuille de style HTML.xsl, développée dans ce même
travail; il ne verra donc jamais directement le XML (sauf sur demande dans le
scénario C). Pour le scénario A, la feuille HTML.xsl est utilisée sans
aucune modification, mais pour les scénarios B et C, une très légère modification
est requise, pour l’unique raison de rendre fonctionnels les liens entre les
fiches.
Notez qu’en plus de la publication de fichiers sur le Web, le travail comporte également une remise en équipe sur StudiUM.
gin-ebsiChaque étudiante de l’EBSI possède un espace de stockage personnel sur le serveur
gin-ebsi, tel que décrit au <https://www.gin-ebsi.umontreal.ca/>,
où sont aussi expliquées les différentes façons d’y accéder, incluant de la
maison.
A priori, cet espace de stockage est privé. Cependant, s’il comporte à sa
racine un dossier appelé public_html, le contenu de ce dossier est
automatiquement accessible sur le Web. Par exemple, si vous placez dans ce dossier
un fichier (au format HTML) index.html, ce fichier est visible de
n’importe quel navigateur Web dans le monde à l’URL suivante :
https://www.gin-ebsi.umontreal.ca/p0123456/index.html
où p0123456 doit être remplacé par votre
code d’accès UdeM. Notez que le nom de dossier public_html ne se trouve
pas dans l’URL.
Comme seule l’étudiante possédant l’espace de stockage a accès en écriture au
dossier public_html, nous appelons ce dossier l’espace Web
gin-ebsi personnel de publication de l’étudiante.
Si le dossier public_html comporte des sous-dossiers, ceux-ci sont
aussi accessibles sur le Web, grâce à la partie « chemin d’accès » des URL. Ainsi,
si notre dossier public_html est structuré comme suit :
et si le dossier sousDossierA contient un fichier appelé
exemple.xml, ce dernier est accessible sur le Web à l’URL
suivante :
https://www.gin-ebsi.umontreal.ca/p0123456/sousDossierA/exemple.xml
Toutes les informations publiées dans le cadre de ce TP le seront dans un
sous-dossier de l’espace Web personnel d’une des coéquipières sur
gin-ebsi, sous-dossier que vous créerez sous peu et que vous nommerez
3011pubWeb. Des sous-dossiers pubWebA,
pubWebB et pubWebC, correspondant aux trois scénarios
explorés, s’ajouteront graduellement à cette structure, laquelle aura, à terme,
cette allure :
Même si le but du travail est de publier des fichiers et des dossiers dans votre dossier Web 3011pubWeb, vous devrez d’abord travailler localement sur votre ordinateur, dans une structure de travail qui sera graduellement copiée dans l’espace Web choisi.
Pour créer localement cette structure de travail, sauvegardez d’abord localement le
fichier compressé 3011pubWeb.zip.
Assurez-vous qu’il ne soit pas « bloqué » par Windows (voir comment débloquer un fichier), puis décompressez-le à l’endroit de votre
choix sur votre ordinateur (si vous travaillez aux laboratoires de l’EBSI, ce
pourrait être le dossier C:\tempo). Cela créera une structure locale
ayant comme racine un dossier 3011pubWeb et comportant trois
sous-dossiers, chacun correspondant à un des scénarios explorés :
Vous préparerez localement au sein de cette structure l’ensemble des fichiers à
publier, avant de les copier vers l’espace Web choisi sur gin-ebsi.
Pleinement développée, la structure est la suivante :
Certains dossiers contiennent déjà des fichiers, qu’il faut laisser en place.
La structure de travail locale que vous venez de créer sert à préparer les fichiers
en vue de leur migration vers gin-ebsi, mais certaines opérations du
présent protocole s’effectuent dans la structure de travail de modélisation et
stylage, que vous avez créée à l’occasion des étapes précédentes du projet.
Il faut bien distinguer ces deux structures de travail locales.
Les contenus que vous devrez placer dans les sous-dossiers pubWebA,
pubWebB et pubWebC de la structure 3011pubWeb
sont essentiellement des sous-ensembles de votre structure modStyl, avec de
légers ajouts ou modifications, précisés dans ce protocole.
3011pubWeb dans l’espace Web Vous devriez dès maintenant créer le dossier 3011pubWeb à la racine de
l’espace Web, c’est-à-dire directement sous le
public_html, qui aura donc
cette structure :
Si vous avez déjà d’autres dossiers dans votre public_html, ils seront
bien sûr visibles. Vous pouvez les laisser en place.
Copiez dans le dossier 3011pubWeb de l’espace Web le fichier
index.php qui se trouve dans le dossier 3011pubWeb de la
structure locale de travail.
Maintenant que le dossier 3011pubWeb est créé dans l’espace Web, vous
pourrez copier individuellement chacun des sous-dossiers pubWebA,
pubWebB et pubWebC de la structure 3011pubWeb
vers votre espace Web au fur et à mesure que vous compléterez les scénarios.
Ce scénario revient essentiellement à copier un sous-ensemble de la structure modStyl vers l’espace Web choisi. De là, les fichiers XML sont consultables sur le Web exactement de la même façon qu’en local. L’application de la feuille XSLT s’effectue donc côté client, dans le navigateur Web de l’utilisateur final. Ce scénario est possible parce que tous les navigateurs Web « modernes » incluent un processeur XSLT intégré, et ce sur toutes les plateformes, y compris les appareils portables comme les tablettes et les téléphones intelligents (sauf certaines versions du Windows Phone).
Il s’agit de copier intégralement le contenu des dossiers suivants de la
structure modStyl vers les dossiers correspondants du dossier
pubWebA de la structure 3011pubWeb :
XMLfichiers-aux-HTMLphotosXSLTDTDVous remarquerez que le dossier pubWebA\XML, dans la structure
3011pubWeb, contient déjà un fichier index.php, qu’il
importe de laisser en place. Une fois rendu sur le serveur, ce fichier agira comme
« page d’accueil » permettant de naviguer vers chacun des documents XML publiés
statiquement.
Dans le dossier pubWebA\XSLT, vous pouvez supprimer le fichier
LaTeX.xsl, qui ne sert pas dans ce scénario.
Vous pouvez ensuite copier le dossier pubWebA de la structure
3011pubWeb comme sous-dossier du dossier 3011pubWeb de votre
espace Web.
Le dossier DTD ne serait théoriquement pas
nécessaire, puisque les navigateurs ne valident pas les documents, mais il l’est
pour contrer un bogue dans Chrome et Edge, lesquels vérifient la présence de la DTD
même s’ils ne l’utilisent pas.
Vous vérifiez le bon fonctionnement de ce scénario en pointant le navigateur Web de votre choix vers l’adresse :
https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/pubWebA/XML/
où p0123456 doit être remplacé par votre
code d’accès UdeM.
N’oubliez pas de vérifier que les liens entre les documents sont fonctionnels.
Dans ce scénario, la transformation en HTML des documents XML sera effectuée une fois pour toute, dans une phase préparatoire, et ce sont les documents HTML résultants qui seront publiés statiquement sur le Web. La transformation des documents sera effectuée en lot, dans oXygen.
La feuille XSLT HTML.xsl que vous avez développée dans le travail de
modélisation et stylage convertit les liens entre fiches en hyperliens HTML pointant
à des fichiers .xml . Or, dans ce scénario, les documents publiés sont
des fichiers .html, et les liens doivent donc pointer à des fichiers
.html. C’est la raison pour laquelle nous utiliserons une variante de
la feuille HTML.xsl produisant des liens vers des fichiers
.html plutôt que vers des fichiers .xml .
Vous devez produire une version de votre feuille HTML.xsl telle que
les liens entre fiches dans les extrants HTML pointent à des fichiers
.html plutôt qu’à des fichiers .xml :
XSLT de votre structure modStyl, faites
une copie de votre feuille HTML.xsl, et renommez la copie
HTML-B.xsl .HTML-B.xsl dans oXygen.HTML-B.xsl :En supposant que les liens entre fiches sont représentés dans les documents XML ainsi :
<lien id="fiche-cible">texte cliquable</lien>et que donc, votre feuille originelle génère les liens entre fichiers XML de cette façon :
<xsl:template match="lien"> <a href="{@id}.xml"><xsl:value-of select="."/></a> </xsl:template>il suffit de modifier l’attribut
hrefdans ce gabarit comme ceci :<xsl:template match="lien"> <a href="{@id}.html"><xsl:value-of select="."/></a> </xsl:template>
HTML-B.xsl modifiée.3011.xpr du dossier travail de votre
structure modStyl.3011, clic-droit sur le dossier XML, puis
Transformation → Transformer avec…. Une fenêtre intitulée Transformer avec s’ouvre.
et sélectionnez Afficher tous les scénarios.HTML-B.xsl et placera les extrants
.HTML dans le dossier HTML de votre structure
modStyl.Il s’agit de copier intégralement le contenu des dossiers suivants de la
structure modStyl vers les dossiers correspondants du dossier
pubWebB de la structure 3011pubWeb :
HTMLfichiers-aux-HTMLphotosVous remarquerez que le dossier pubWebB\HTML, dans la structure
3011pubWeb, contient déjà un fichier index.php, qu’il
importe de laisser en place. Une fois rendu sur le serveur, ce fichier agira comme
« page d’accueil » permettant de naviguer vers chacun des documents HTML publiés
statiquement.
Vous pouvez ensuite copier le dossier pubWebB de la structure
3011pubWeb comme sous-dossier du dossier 3011pubWeb de votre
espace Web.
Vous vérifiez le bon fonctionnement de ce scénario en pointant le navigateur Web de votre choix vers l’adresse :
https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/pubWebB/HTML/
où p0123456 doit être remplacé par votre
code d’accès UdeM.
N’oubliez pas de vérifier que les liens entre les documents sont fonctionnels.
Dans ce scénario, vous chargerez vos documents XML dans une base de données (BD)
XML interrogeable dynamiquement sur le Web. C’est le SGBD XML BaseX qui est utilisé, un logiciel libre installé sur
gin-ebsi. Votre base est donc hébergée sur gin-ebsi.
Vous y accéderez via un ensemble de pages dynamiques en PHP, qui vous est fourni dans le dossier
pubWebC\BD, et que vous n’aurez qu’à personnaliser. Ces pages
dynamiques constituent une application Web servant à l’interrogation dynamique de
vos documents, par navigation et par requêtes.
Note : pour la réalisation de cette partie du TP, le professeur a remis à chaque étudiante un nom d’utilisateur BaseX et un mot de passe pour accéder à BaseX sur
gin-ebsi. Chaque étudiante dispose d’une BD qui lui est propre, identifiée par son nom d’utilisateur BaseX, créée d’avance par l’administrateur degin-ebsi. La base est initialement vide.Même si chaque coéquipière est encouragée à expérimenter avec sa propre BD, seule la BD de la coéquipière dont l’espace Web a été choisi pour le présent travail sera évaluée à la correction.
La feuille XSLT HTML.xsl que vous avez développée dans le travail de
modélisation et stylage convertit les liens entre fiches en hyperliens HTML pointant
à des fichiers .xml statiques. Or, dans ce scénario, les liens doivent
pointer à des documents XML extraits dynamiquement de la BD BaseX. C’est la raison
pour laquelle nous utiliserons une variante de la feuille HTML.xsl
produisant des liens vers des documents XML extraits dynamiquement de la BD BaseX
plutôt que vers des fichiers .xml statiques.
Vous devez maintenant produire une version de votre feuille HTML.xsl
telle que les liens entre fiches dans les extrants HTML pointent à des fichiers XML
extraits de la BD BaseX plutôt qu’à des fichiers statiques .xml :
XSLT de votre structure modStyl, faites
une copie de votre feuille HTML.xsl, et renommez la copie
HTML-C.xsl .HTML-C.xsl dans oXygen.HTML-C.xsl :En supposant que les liens entre fiches sont représentés dans les documents XML ainsi :
<lien id="fiche-cible">texte cliquable</lien>et que donc, votre feuille originelle génère les liens entre fichiers XML de cette façon :
<xsl:template match="lien"> <a href="{@id}.xml"><xsl:value-of select="."/></a> </xsl:template>il suffit d’un petit ajout à l’attribut
hrefdans ce gabarit, comme ceci :<xsl:template match="lien"> <a href="document.php?document=INU3011H23EQ07/{@id}.xml"><xsl:value-of select="."/></a> </xsl:template>où
INU3011H23EQ07doit être remplacé par le nom de votre BD BaseX.
HTML-C.xsl modifiée.L’application Web qui vous est fournie pour accéder à votre BD BaseX est dans le
dossier pubWebC\BD de votre structure 3011pubWeb. Un des
fichiers de ce dossier doit être modifié légèrement pour personnaliser
l’application :
pubWebC\BD\configuration.php de la structure
3011pubWeb.Il s’agit ensuite simplement de copier intégralement le contenu des
dossiers suivants de la structure modStyl vers les dossiers correspondants
du dossier pubWebC de la structure 3011pubWeb :
fichiers-aux-HTMLphotosXSLTDans le dossier pubWebC\XSLT, vous pouvez supprimer les fichiers
LaTeX.xsl, HTML.xsl et HTML-B.xsl, qui ne
servent pas dans ce scénario.
Vous pouvez enfin copier le dossier pubWebC de la structure
3011pubWeb comme sous-dossier du dossier 3011pubWeb de votre
espace Web.
Initialement, votre BD BaseX est vide. Avant de pouvoir l’interroger, il faut y verser vos documents. Pour ce faire, vous utiliserez une fonction ad hoc de l’application Web fournie pour accéder à votre BD.
Lancez d’abord l’application Web en pointant votre navigateur vers l’adresse suivante :
https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/pubWebC/BD/
où p0123456 doit être remplacé par votre
code d’accès UdeM. Dans le haut à droite de la fenêtre de l’application, cliquez
simplement sur le bouton arborant l’intitulé « Recharger la
BD ». L’application chargera dans la BD vos documents à partir de
l’emplacement où vous les avez placés dans votre espace Web à l’occasion du
Scénario A, soit :
public_html\3011pubWeb\pubWebA\XML
L’application confirmera le succès de l’opération ou, si les documents sont introuvables, affichera un message d’erreur.
L’opération n’a besoin d’être faite qu’une seule fois. Cependant, il faut la refaire si jamais vous modifiez les documents XML et reprenez le Scénario A.
Vous vérifiez le bon fonctionnement de ce scénario en pointant le navigateur Web de votre choix vers l’adresse :
https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/pubWebC/BD/
où p0123456 doit être remplacé par votre
code d’accès UdeM. Ceci lance l’application Web d’accès à votre BD.
Vers le début de la page, vous verrez une liste des documents présents dans votre base. Cette partie de l’application Web permet l’accès par navigation. Cliquez sur les liens pour accéder aux documents. N’oubliez pas de vérifier que les liens entre les documents sont fonctionnels dans les documents stylés.
N.B. : Les exemples de requêtes ci-dessous sont prévus pour être formulés sur la BD vins. Ils risquent de donner des résultats peu intéressants sur votre propre BD. Vous êtes encouragée à d’abord les essayer sur vins, puis à les adapter aux contenus de vos documents.
Pour la recherche par requêtes, l’application Web fournie offre trois boîtes de recherche, bien identifiées dans l’interface :
La Boîte 1 vous permet d’inscrire une expression XPath quelconque. L’expression est exécutée sur chaque document dans la BD, et les résultats obtenus sont retournés pour chaque document. Il peut y avoir 0, 1 résultat ou plus pour chaque document. Les résultats pour chaque document sont présentés sous forme d’une liste numérotée.
Par exemple, //*[@millésime] dans la Boîte 1 retournerait tous les
éléments qui ont un attribut millésime spécifié dans leur balise de
début.
En revanche, //@millésime retournerait ces spécifications
d’attribut elles-mêmes.
La Boîte 1 est la seule des trois boîtes de recherche qui peut retourner autre chose que des documents entiers.
La Boîte 2 permet d’inscrire une expression XPath qui est utilisée comme filtre pour repêcher des documents entiers. Normalement, on inscrira ici une expression XPath absolue. Une expression relative est aussi acceptée, mais est évaluée comme si elle était précédée d’un "/".
Le résultat de l’expression est interprétée comme une des valeurs booléennes « vrai » ou « faux », comme font les opérateurs booléens (voir Cours 8, diapo 71). Autrement dit, un document est repêché si l’expression fournie retourne, pour ce document, au moins un nœud, ou la valeur « true », ou une chaîne de caractères non vide, ou une valeur numérique différente de 0. Autrement, le document n’est pas retourné.
Par exemple, si vous inscrivez //em dans la Boîte 2, seuls les
documents contenant un élément em n’importe où dans leur structure
hiérarchique seront retournés.
Autre exemple : La requête //lien[@codeSAQ="11154857"] retournera
les fiches qui contiennent un lien vers la fiche 11154857.
La Boîte 3 permet de sélectionner des documents entiers sur la base d’un critère sur le texte intégral des documents. Un document est retenu si le critère spécifié est satisfait par le contenu textuel du document dans son entier. Un aperçu des possibilités de recherche en texte intégral est donné ci-dessous. Vous n’avez pas à explorer au-delà de cet aperçu pour les besoins du travail.
Dans le cas des requêtes formulées via les Boîtes 2 et 3, les résultats sont retournés sous forme d’une liste de documents. À partir de cette liste, il est possible d’accéder à un document individuel en cliquant sur le lien approprié.
Vous n’avez pas à explorer au-delà du présent aperçu pour les besoins du travail.
Tous les mots ou expressions utilisés comme termes de recherche doivent être
inscrits entre guillemets doubles. Par défaut, la recherche se fait
sans égard à la casse des lettres ou aux signes diacritiques; autrement dit,
"Deguste" repérera "déguste", et vice-versa.
Recherche d’un mot ou d’une expression
Il suffit d’inscrire le mot ou l’expression recherchés entre guillemets doubles; exemple :
"renaud d alembert"
Opérateurs booléens
Les opérateurs booléens s’expriment par les mots clés ftand, ftor
et ftnot. Attention ftnot n’est pas un « sauf », mais bien un
« non » booléen unaire. Exemples :
"gamay" ftand "rouge"
ftnot ("gamay" ftor "rouge")
Troncature
La troncature s’exprime d’une manière un peu spéciale. Exemple :
"class.*" using wildcards
Distance
Il y a deux variantes de l’opérateur de distance : sans tenir compte de l’ordre des mots et en en tenant compte. Exemples :
"rouge" ftand "gamay" distance at most 7 words
"rouge" ftand "gamay" ordered distance at most 7 words
Dans le cadre du travail, tout ce qui est demandé est d’explorer sommairement les différentes possibilités de recherche réalisables sur votre propre BD via les trois boîtes de recherche de l’application Web. On vous demande d’identifier deux requêtes que vous jugez intéressantes pour chacune des trois boîtes de recherche, compte tenu du contenu de votre BD.
Il n’est pas nécessaire de justifier ou d’expliquer ce que les requêtes font, mais elles doivent satisfaire aux exigences suivantes :
Vous devez les trouver intéressantes. Encore une fois, il n’est pas nécessaire d’expliquer pourquoi, mais vous devez les juger intéressantes.
Pour les Boîtes 2 et 3, chacune des requêtes doit retourner certains documents de votre BD, mais pas tous les documents de votre BD.
Pour la Boîte 1, chacune des requêtes doit retourner un résultat ou plus pour certains des documents de votre BD, mais pas pour tous les documents de votre BD.
Les deux requêtes pour une même boîte de recherche ne doivent pas avoir la même structure; par exemple, il ne faut pas que la seule différence entre les deux soit un nom d’élément, d’attribut ou un terme de recherche.
Une de vos requêtes utilisant la Boîte 2 doit utiliser comme critère une des
caractéristiques « mesurables » que possèdent les objets que vous avez modélisés
(cf. la mise en situation du travail
de Modélisation et stylage). Par exemple, si un attribut
@alcool-pourcent dans votre modèle contient une valeur numérique
(et rien d’autre), la requête pourrait être :
//@alcool-pourcent > 12.5
Si alcool-pourcent était un élément plutôt qu’un attribut, alors
la requête serait :
//alcool-pourcent > 12.5
Notez que si vos règles d’écriture prévoient l’utilisation de la virgule
décimale plutôt que du point, il faut « transformer » une éventuelle virgule en
point dans votre requête, en utilisant deux fonctions XPath que nous n’avons pas
encore vues : number et translate. Il suffit d’ajouter
/number(translate(., ",", ".")) au bout du chemin XPath qui
pointe à l’élément (ou à l’attribut). Par exemple :
//@alcool-pourcent/number(translate(., ",", ".")) > 12.5
Prenez note de vos requêtes (six au total) dans un fichier texte
(.txt), que vous structurerez comme suit :
Nom coéquipière 1 - Matricule UdeM coéquipière 1
Nom coéquipière 2 - Matricule UdeM coéquipière 2
Code d’accès UdeM de l’espace Web gin-ebsi utilisé : p0123456
Nom de la BD BaseX utilisée: INU3011H23EQ07
Boîte 1:
Requête 1 pour la boîte 1
Requête 2 pour la boîte 1
Boîte 2:
Requête 1 pour la boîte 2
Requête 2 pour la boîte 2
Boîte 3:
Requête 1 pour la boîte 3
Requête 2 pour la boîte 3
où p0123456 doit être remplacé par le code
d’accès UdeM de la coéquipière dont l’espace Web sur gin-ebsi a été
choisi pour le présent travail, et INU3011H23EQ07 par le nom de la BD BaseX de la même
coéquipière.
Ce fichier texte est la seule chose que vous ayez à déposer dans StudiUM pour ce travail.
Les documents versés dans la BD BaseX font partie du matériel évalué pour ce travail, comme les fichiers déposés sur le Web et celui déposé sur StudiUM.
Pointez votre navigateur Web sur l’adresse :
https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/
où p0123456 doit être remplacé par le code
d’accès UdeM approprié. Normalement, vous devriez voir une liste complète de tous
les fichiers déposés sur votre site Web en lien avec ce travail. Assurez-vous que
c’est bien le cas.
Vous devez déposer dans StudiUM un seul fichier texte (.txt),
tel que décrit en 4.4.2.