Copyright © 2015-2023 Yves MARCOUX; dernière modification de cette page: 2023-04-14.

INU3011 Documents structurés

Publication Web (TP 6)

Conclusion du projet XML

Yves MARCOUXEBSIUniversité de Montréal


Table des matières

Objectif et préparatifs

Objectif

Préparatifs

Rappel : Espaces de stockage et espaces Web gin-ebsi

Dossier Web 3011pubWeb

Structure de travail locale 3011pubWeb

Distinguer les structures locales modStyl et 3011pubWeb

Création du dossier 3011pubWeb dans l’espace Web

Scénario A : Publication statique des fichiers XML

Description

Réalisation

Vérification

Scénario B : Publication statique de fichiers HTML

Description

Réalisation

Ajustement de la feuille XSLT

Transformation en lot des documents XML

Publication proprement dite

Vérification

Scénario C : Publication dynamique via une base de données XML

Description

Réalisation

Ajustement de la feuille XSLT

Publication proprement dite

Chargement des documents XML dans la base de données

Vérification de l’accès par navigation

Vérification de l’accès par requêtes

Aperçu de la recherche en texte intégral

Exploration à effectuer

Remise

Vérification globale des fichiers déposés sur le Web

Fichier à déposer dans StudiUM


Objectif et préparatifs

Objectif

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 :

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.

Préparatifs

Rappel : Espaces de stockage et espaces Web gin-ebsi

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

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 :

miniExemple.png

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

Dossier Web 3011pubWeb

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 :

3011pubWeb.png

Structure de travail locale 3011pubWeb

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 :

strucWeb

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 :

strucWebDev.png

Certains dossiers contiennent déjà des fichiers, qu’il faut laisser en place.

Distinguer les structures locales modStyl et 3011pubWeb

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.

Création du dossier 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 :

sousPublicHtml.png

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.


Scénario A : Publication statique des fichiers XML

Description

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

Réalisation

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 :

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

Vérification

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/

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.


Scénario B : Publication statique de fichiers HTML

Description

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 .

Réalisation

Ajustement de la feuille XSLT

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 :

  1. Dans le dossier XSLT de votre structure modStyl, faites une copie de votre feuille HTML.xsl, et renommez la copie HTML-B.xsl .
  2. Ouvrez la copie HTML-B.xsl dans oXygen.
  3. Faites la modification appropriée dans la feuille de style 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 href dans ce gabarit comme ceci :

    <xsl:template match="lien">
      <a href="{@id}.html"><xsl:value-of select="."/></a>
    </xsl:template>
  4. Sauvegardez la feuille HTML-B.xsl modifiée.

Transformation en lot des documents XML

  1. Dans oXygen, faites Projet → Ouvrir le projet… puis choisir le fichier 3011.xpr du dossier travail de votre structure modStyl.
  2. Dans la fenêtre du projet 3011, clic-droit sur le dossier XML, puis Transformation → Transformer avec…. Une fenêtre intitulée Transformer avec s’ouvre.
  3. Si jamais aucun scénario n’est affiché dans la fenêtre, cliquez sur le bouton tous_les_scenarios.png et sélectionnez Afficher tous les scénarios.
  4. Dans la section Projet (7) de la liste de scénarios, cliquez sur HTML-B_en_lot. Ceci transformera tous vos documents XML en HTML selon votre nouvelle feuille HTML-B.xsl et placera les extrants .HTML dans le dossier HTML de votre structure modStyl.

Publication proprement dite

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 :

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

Vérification

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/

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.


Scénario C : Publication dynamique via une base de données XML

Description

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 de gin-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.

Réalisation

Ajustement de la feuille XSLT

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 :

  1. Dans le dossier XSLT de votre structure modStyl, faites une copie de votre feuille HTML.xsl, et renommez la copie HTML-C.xsl .
  2. Ouvrez la copie HTML-C.xsl dans oXygen.
  3. Faites la modification appropriée dans la feuille de style 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 href dans ce gabarit, comme ceci :

    <xsl:template match="lien">
      <a href="document.php?document=INU3011H23EQ07/{@id}.xml"><xsl:value-of select="."/></a>
    </xsl:template>

    INU3011H23EQ07 doit être remplacé par le nom de votre BD BaseX.

  4. Sauvegardez la feuille HTML-C.xsl modifiée.

Publication proprement dite

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 :

  1. Ouvrez dans Bloc-notes (ou dans l’éditeur de votre choix) le fichier pubWebC\BD\configuration.php de la structure 3011pubWeb.
  2. Suivez les instructions données dans le fichier. Celles-ci vous amèneront à repérer puis à modifier trois lignes dans le fichier.
  3. Sauvegardez le fichier modifié.

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 :

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

Chargement des documents XML dans la base de données

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/

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.

Vérification de l’accès par navigation

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/

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.

Vérification de l’accès par requêtes

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 :

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

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

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

Aperçu de la recherche en texte intégral

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

Exploration à effectuer

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 :

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

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.


Remise

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.

Vérification globale des fichiers déposés sur le Web

Pointez votre navigateur Web sur l’adresse :

https://www.gin-ebsi.umontreal.ca/p0123456/3011pubWeb/

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.

Fichier à déposer dans StudiUM

Vous devez déposer dans StudiUM un seul fichier texte (.txt), tel que décrit en 4.4.2.