Page Travaux
Exercice XML
Liste DVD
Formulaire
Rapport XML

 
Rapport Exercice 5 - Premiers pas avec XML
(9 mars 2001)
Objectifs :

Le but de cet exercice était de construire une page sur Internet affichant un contenu en XML. Il fallait trouver une idée qui me permette d'executer cet exercice avec un objectif clairement établi. C'est en discutant avec un ami que m'est venu mon idée. Cet ami possède plusieurs DVD et est en train d'accroître sa collection. Il a d'ailleurs affiché sa liste de DVD sur Internet dans un simple fichier HTML pour ses amis qui voudraient lui en emprunter un. J'ai donc proposé à cet ami d'améliorer son système en faisant une liste de DVD avec du XML et en ayant en plus la possibilité d'introduire ses nouvelles aquisitions à travers un simple formulaire, sans devoir toucher au code. Cette technique lui permet donc d'introduire rapidement ses nouveaux DVD et il ne doit rien faire avec le code XML qu'il ne connaît pas.
 

Réalisation :

Pour réaliser cet exercice, il fallait construire trois fichiers. Une fichier DTD, contenant notre "grammaire" pour la page XML, un fichier XSL, contenant la mise en forme du contenu de la page XML, et finalement un fichier SXLM, qui est le fichier XML contenant le contenu et qui est traité par le serveur Cocoon pour l'affichage sur les navigateurs.

Le fichier DTD comporte les différents éléments pour constituer une fiche DVD. Il y a le parent "listedvd" qui contient l'élément "fiche". Cet élément "fiche" contient les éléments "titre", "note", "technique", "commentaire" et "internet". Ensuite, l'élément "technique" contient encore des informations techniques suivantes: "realisateur", "editeur", "acteurs", "musique" et "genre". J'ai également défini dans le DTD les caractères accentués, car lorsque l'on introduisait du texte avec certains caractères accentués à travers le formulaire, la page SXML interprétait mal ces caractères et ne s'affichait plus.

Le fichier XSL contient la mise en page de la page SXML. J'avoue que le fichier XSL est celui qui m'a posé le plus de problèmes. En effet, en commençant à construire ce fichier, j'avais bien compris pourquoi on posait  <xsl:template match="element">, par contre je me suis un peu confondu avec les différences entre <xsl:apply-templates select="element"/> et <xsl:value-of select="element"/>. Après quelques explications de Vivian, j'ai pu remettre de l'ordre dans mon fichier XSL et le compléter comme il se devait. Avec le fichier XSL, j'ai fait en sorte que les fiches de DVD apparaissent dans un tableau où les données sont présentées d'une façon qui me parraissait adéquate. Avec l'aide de Vivian, encore une fois, j'ai introduit dans mon fichier XSL la fonction <xsl:sort select="element"> afin que les fiches de DVD s'affichent par ordre alphabétique par rapport au titre du film.

En ayant ces deux fichiers et après les avoir testés sur la page SXML, j'ai construit un petit formulaire, fait en HTML, où il est possible d'introduire les données correspondant à une fiche de DVD. le traitement se fait avec PHP. Le script PHP utilisé pour cet exercice vient d'un exercice fait par Olivier Clavel. En effet, ce script consiste en l'ouverture du fichier XML, le remplacement de la dernière ligne du fichier XML par les données introduites via le formulaire, et finalement la fermeture du fichier XML par le tag parent introduit à chaque fois à la fin des nouvelles données. J'ai ajouté dans le traitement PHP la fonction StripSlashes() pour que les slashes rajoutés à l'envoi des données du formulaire soient éliminés. J'ai de plus rajouté la fonction htmlentities() que Roberto Presedo m'a montré lorsque je lui ai expliqué le problème de ma page XML. En effet, le formulaire permet à toute personne d'envoyer des données dans la page XML, vu que j'ai modifié les permissions d'écriture sur le fichier SXML. Le problème était que si un personne introduisait via le formulaire un caractère barbare comme le "&" par exemple, la page SXML lisait une erreur et ne s'affichait plus. Cette fonction htmlentities() permet de contourner le problème en transformant ces caractères barbares en écriture HTML.
 

Critiques :

En construisant ce dispositif en XML, j'ai été content de faire mes premiers pas dans le langage XML. J'ai trouvé très utile d'apprendre à séparer la grammaire, la forme et le contenu d'une page qui s'affiche sur Internet.

Cependant, en regardant la liste de DVD que j'ai construit, je me pose des questions sur l'efficacité du langage XML dans une telle liste. En effet, on peut introduire des nouveaux DVD dans la liste XML. Mais si cette liste s'aggrandit trop, l'utilisateur qui veut la consulter doit scroller pendant un long moment. Il n'est de plus pas de faire des modifications sur cette liste ni de supprimer des éléments.

Je me suis alors demandé si XML était vraiment adéquat pour les bases de données, alors qu'il existe MySQL, qui est plus facile, il me semble. Avec un langage de base de données comme MySQL par exemple, il serait moins complexe de réorganiser les données, de modifier des données ou d'en supprimer. XML n'a pas l'air très flexible pour faire ce genre de traitement.
 

Ressources :

Pour m'aider dans la construction de cet exercice avec XML, je me suis servi des documents distribués au cours STAF. J'ai également consulté les pages de TECFA traitant le langage XML, comme l'Introduction technique à XML ou encore le Server-side XML afin de mieux comprendre en quoi consistait Cocoon.