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