Salut tout le monde et bonne ann�e 2001, Ce mail est une r�ponse (certainement partielle) � une discussion entamm�e sur la liste [EMAIL PROTECTED] . Si vous recevez ce mail alors que vous n'�tes pas inscrit � cette liste, j'esp�re qu'il ne sera pas trop "off topic", j'envois ce mail � certaines listes qui "pourraient" �tre int�ress�es par cette discussion. La liste ressources@ est r�serv�e aux anciens stagiaires de la formation "Programmation Internet" du STE (Val Beno�t, ULg).
Qu'est-ce que XML et � quoi cela peut-il bien servir? ----------------------------------------------------- XML est un "langage" qui sert � structurer de l'information et seulement de l'information. Alors que HTML m�lange les donn�es et la mise en forme des donn�es, XML ne "s'occupe" QUE des donn�es. De l� � comparer XML et les bases de donn�es ou � mettre en concurrence XML et les logiciels bases de donn�es, il y a un (grand) pas que je n'oserais pas franchir. En ce qui concerne de "petits" ensembles de donn�es (qui peuvent aller jusqu'� 30 ou 40 m�ga ou plus, selon la capacit� de l'ordinateur), et une structure plus flexible, XML est pr�f�rable � la construction d'une base de donn�es. Mais il y a des probl�mes de place et de rapidit� quand � la recherche d'informations et il n'y a pas de langage SQL pour interroger un fichier XML, par exemple. Donc, pour moi, XML, m�me s'il ne s'agit QUE de donn�es (ou informations), ne remplacera jamais la puissance d'une base de donn�es. XML et les (R)DBMS ----------------------- Par contre, en ce qui concerne l'�change d'information (ce qui nous int�resse tout de m�me au plus haut point dans le monde de l'internet), XML EST (pour moi) le passage oblig�. Comment �change-t-on des informations entre deux bases de donn�es? Il y a plusieurs m�thodes: - DUMP: l'instruction dump, pr�sente dans beaucoup de (R-)DBMS, permet de retranscrire dans un fichier texte toutes les instructions n�cessaires � la cr�ation de la base de donn�es, donn�es et structure(s). Ce fichier prend �norm�ment de place et n'est compatible qu'avec la base de donn�es d'o� sortent ces informations (mais moins qu'un fichier XML, nous allons y revenir); - EXPORT: hors de toute base de donn�es, il y a moyen de sortir un fichier texte contenant toutes les informations s�par�e par des virgules ou points virgules. Cette mise en forme prend aussi beaucoup plus de place que la base de donn�es, mais moins que le dump (et moins aussi que le fichier XML). Par contre, la structure de l'information peut se r�v�ler moins �vidente puisque les noms des champs, s'il sont pr�sents, ne le sont qu'� la premi�re ligne du document. En ce qui concerne le traitement automatique de cette information, il n'est pas tr�s �vident non plus et il y a des risques de conflit au niveau des s�parateurs; - XML: lorsqu'on fait passer les informations dans un fichier XML, chaque enregistrement est s�par� par des balises qui d�limitent de mani�re tr�s pr�cise UN enregistrement. Chaque information contenue dans un champ de la base de donn�es est d�limit�e par des balises qui d�limitent de mani�re pr�cise l'information de CE champ. Ce fichier prend moins de place que lors d'un DUMP, mais certainement plus qu'un EXPORT. L'avantage de XML dans l'�change de donn�es ------------------------------------------------ Lorsque l'on analyse les trois fichiers ci-dessus, on observe que le premier fichier contient TOUTES les informations n�cessaires � la reconstitution d'une base de donn�es identique (structure(s) et donn�es) mais que ce format, souvent proche de SQL92, normalement, reste propri�taire. Si on veut reconstituer la m�me base de donn�es sur un autre (R)DBMS, certains probl�mes de compatibilit�s vont survenir. De plus, le fichier est en SQL, langage qui appartient au (R)DBMS et ne pourra �tre trait� qu'avec un (R)DBMS. Le deuxi�me fichier est un simple fichier texte avec des informations non ou peu structur�es, s�par�e par des virgules. Pour en extraire des informations de mani�re automatique, cela peut se r�v�ler assez probl�matique. Le troisi�me type de fichier, XML, permet d'avoir les informations (donn�es) et uniquement celles-ci, mais de mani�re structur�e. Ainsi, non seulement le traitement automatique est facilit�, mais en plus, il y a moyen de lire les donn�es "� l'oeil nu"! De plus, XML est "standardis�", personne n'en est propri�taire, tout le monde peut l'utiliser... sans payer. Donc, connaissant ta base de donn�es, tu peux r�cup�rer un fichier XML et stocker les donn�es dans ta base de donn�es (dont tu connais la syntaxe). Ceci ne vaut que pour le passage d'informations d'une base de donn�es � une autre. Les stagiaires pi2000b viennent de faire un exercice r�capitulatif du cours d'Access que j'ai mis en ligne. En ce qui concerne la structure de la db, je n'ai pas pu me servir du fichier Access pour cr�er la db PostgreSQL, par contre, en ce qui concerne les donn�es, ils ont cr�� un fichier XML avec toutes les balises et tous les attributs HTML, j'ai fait un petit programme Java de cent ou deux cents lignes qui lit ce fichier XML et met � jour la base de donn�es pr�c�demment cr��e. L'encodage a �t� relativement simple pour les stagiaires et tout le monde pourra utiliser ce fichier pour cr�er une db html4.0 (le r�sultat: http://www.ressource-toi.org/servlet/html/ ). L'avantage de XML pour le web --------------------------------- Pour cette partie, je vais d'abord faire une petite comparaison avec HTML 4.0, ensuite, je vous parlerai du serveur "Cocoon". Vous avez sans doute suivi avec attention le cours d'Isabelle sur HTML4.0. Isabelle vous a certainement fait savoir que le w3c recommandait de s�parer la mise en forme et les donn�es dans la cr�ation des pages web en html. De l� l'utilisation des feuilles de styles que certains continuent d'ailleurs � int�grer DANS les page et non dans un fichier s�par� comme le voudrait la recommandation du w3c. Pourquoi s�parer le contenu et la mise en forme? Ce n'est pas seulement pour faire plaisir � un consortium, c'est pour facilit� l'homog�n�it�, la structure et la pr�sentation des sites. Vous d�cidez donc de ne plus mettre le titre principal de votre page en Helvetica rouge taille 5, vous ne le ferez QUE dans la feuille de style et non dans vos 5662 pages html! C'est certainement un gain de temps et une s�curit� de ne pas oubli� une ou plusieurs pages. Malgr� l'utilisation des feuilles de styles, HTML m�lange encore les donn�es et leur mise en forme. Et si l'on regarde un peut les balises html, on se rend compte qu'il y en a qui d�finissent une mise en forme (div, b, p, br, etc...) et d'autres des "donn�es" (address, cit, dfn, code, em, etc...). En XML, les balises sont d�finies par l'utilisateur (ou le programmeur) et n'ont aucun effet "visuel". Le seul effet est de s�parer et de hi�rarchiser les donn�es. Qu'est-ce que l'Internet si ce n'est pas une masse d'informations? Bon d'accord, mais il faut mettre en forme. Dans ce cas, on peut utiliser une feuille de style "classique" ou (encore mieux), une feuille de style XSL. XSL(-T) est un ensemble d'instruction qui va transformer les donn�es XML en un autre type de donn�es. Cela peut-�tre un autre fichier XML (par exemple dans le cas d'un �chage de donn�es entre deux bases de donn�es n'ayant pas exactement la m�me structure), un simple fichier texte (en s�parant les donn�es par des ";"), un fichier wml (pour le wap), un fichier word (pour... ?), un fichier pdf, mais aussi, pourquoi pas, un fichier postscript, ou m�me, un fichier HTML! On se retrouve dans ce dernier cas (celui qu inous int�resse) avec UNE seule feuille de style pour tout un site. Pour r�aliser cela (une feuille de style XSL qui va "parser" les document XML), il faut un programme qui va ex�cuter tout cela. Il existe plusieurs "parser" XML �crits sous forme de biblioth�ques que l'on peut importer et utiliser (pourquoi r�inventer la roue?), et cela dans diff�rents langages de programmation (Java, C/C++, ASP, PHP -je crois-, etc.). Donc, vous cr�ez une feuille de style XSL, des documents XML et un petit programme (vraiment pas compliqu�, �a tient en une vingtaine de lignes en java) et vous avez un site complet et homog�ne. C'est un proc�d� que j'ai utilis� pour le site http://www.portoheredias.com/ . C'est un proc�d� que je vais aussi pousser encore plus loin pour un site � venir dont je vous reparlerai. Une deuxi�me m�thode, beaucoup plus intelligente, mais il faut disposer d'un serveur qui comprenne le java et pouvoir le configurer comme on le veut, est d'utiliser l'ensemble de servlets Cocoon du projet Apache ( http://xml.apache.org/cocoon ). Cocoon est un serveur XML qui a �t� �crit compl�tement en Java. Il est gratuit et on peut disposer du code source. Avec Cocoon, vous �crivez une feuille de style XSL, des documents XML qui pointent vers la XSL et la conversion est automatique. Si vous voulez modifier des donn�es, vous modifiez un des documents XML, si vous voulez modifier la mise en page, vous modifiez la feuille de style XSL et TOUT le site est mis � jour! C'est le proc�d� que j'ai utilis� pour http://www.ressource-toi.org/ . Mais Cocoon ne se limite pas � cela. On peut en effet int�grer du code Java ou JavaScript dans les feuilles de style (on peut dire que cela "agit" c�t� serveur, sinon, on peut �videmment ins�rer du JavaScript ou des applets dans les pages html comme on le fait traditionnellement), on peut faire des requ�tes SQL dans les pages XML qui donneront comme r�sultat un fichier XML avec les donn�es qui viennent de la base de donn�es qu'une feuille de style XSL mettra en forme ( http://www.ressource-toi.org/evolutionsdb.xml ). Le code de cette page est en dessous du mail pour ceux que �a int�resse, ils remarqueront la simplicit� apr�s en avoir fait une ou deux. Cocoon permet aussi de transformer les pages XML en pdf, html, wml, xml, txt. Peut-�tre que d'autres formats sont reconnus, je ne m'en sert pas et je n'en sais pas plus. Par contre, la fameuse compatibilit� entre browsers peut �tre contourn�e gr�ce � Cocoon car on peut d�finir une feuille de style par type de browser. Cocoon reconnait le type de browser qui fait la requ�te en "parse" le document XML avec la feuille XSL que le programmeur a d�finie en fonction du browser. Les browser reconnus par Cocoon sont: - explorer=MSIE - opera=Opera - lynx=Lynx - java=Java - wap=Nokia-WAP-Toolkit - netscape=Mozilla La version de Cocoon qui est install�e sur le serveur ressource-toi est la 1.8.1, mais des mises � jour se font r�guli�rement (toutes les semaines ou au fil des bugs d�couverts), et le groupe travaille actuellement sur la version 2. Cocoon 2 sera bient�t en version beta (un mois ou deux si tout se passe bien). Voil�, j'ai �t� long, peut-�tre parfois un peu confus (mais vous me connaissez), mais j'esp�re avoir r�pondu � quelques questions. Je suis en outre tr�s heureux qu'un tel d�bat ait pris place sur [EMAIL PROTECTED] et je ne voudrais surtout pas le clore par ce mail. Je vous encourage � faire des commentaires et � apporter vos exp�riences personnelles � ce fil de discussion. Bien � vous et encore une fois bonne ann�e 2001, -- Arnaud (icq:48119561) <http://www.ressource-toi.org> ---------------------------------------------------------------------------- --------- evolutiondb.xml: ----------------- <?xml version="1.0" encoding="iso-8859-1" ?> <?cocoon-process type="sql"?> <?xml-stylesheet href="evolutions.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?> <?cocoon-format type="text/html"?> <page section="main" nompage="formations" emailauteur="[EMAIL PROTECTED]" datecreation="17 novembre 2000 (14:26:00)" datemodification="17 novembre 2000 (16:49:00)"> <document> <para> Ceci est une page de <b>test</b>... Les dix derni�res �volutions sont accessibles de la plus r�cente � la plus ancienne. </para> <connectiondefs> <connection name="foo_connection"> <driver>postgresql.Driver</driver> <dburl>jdbc:postgresql://localhost:5432/ressourcedb</dburl> <username>***</username> <password>***</password> </connection> </connectiondefs> <query connection="foo_connection"> select mem_prenom, mem_nom, mem_rstmail, evt_date, evt_sujet, evt_texte from evolutions, membres where evolutions.mem_id=membres.mem_id order by evt_date DESC limit 10 </query> </document> </page> [ [EMAIL PROTECTED] and [EMAIL PROTECTED] in ONE :) ] [ To subscribe or unsubscribe, go to http://linuxbe.org/ml.php ] [ http://LinuxBe.org - http://OpenBe.net - [EMAIL PROTECTED] ]
