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

Répondre à