Vendredi 5 septembre 2008 se tenait le W3 Café au 5, rue Saint-Augustin 75002 Paris.
Les conférences "gratuites" du jour étaient Css, Performance Web, Xml-Xslt tenues par Olivier Gendrin, Eric Daspet, Matthieu Pillard, Anthony Ricaud et Fabrice Bonny.
Dans cet article vous trouverez mon avis ainsi que le compte rendu plus ou moins fidèle de la présentation Xml-Xslt à laquelle j'ai pu assister.
Présentation
XML
XML (Hypertexte Meta Language) n'est pas un langage à proprement parler, c'est une ensemble de règles, il permet de transporter des informations, de définir un langage , de hiérarchiser l'information selon une sémantique définie par le développeur lui même. Conseil : Si vous manipulez des documents XML assurez vous de toujours être en Unicode (UTF-8), ce format de caractère garantie un niveau de compatibilité (entre OS , Editeur de texte) maximum.
Le document Xml, est défini par l'utilisateur selon ses propres besoins, il est donc très souple. Le principal inconvénient du XML est le respect de sa syntaxe, une grande rigueur est requise pour que le document soit compris et exploité, c'est à dire que chaque balise ouverte doit être fermée. C'est le zéro faute requis! (très difficile à tenir dès lors que l'intervention est humaine).
HTML est un langage de description qui s'appuie sur la syntaxe de XML, cependant sémantiquement parlant il est très pauvre. Par exemple, rien n'est prévu pour définir une FAQ, comment un robot peut il identifier une question et la réponse associée ? <question> et <answer> n'existent pas en HTML.
Importance de la DTD
DTD pour "Document Type Definition" définit les règles que doit suivre le XML, car comme le XML est propre à chaque besoin, on se doit de proposer un feuille "de bonne conduite", la feuille "de bonne conduite" permet de vérifier si le XML qui s'y rattache est conforme. Aujourd'hui le "Schema" prend la place du DTD qui s'essouffle. Le "Schema" va plus loin, il permet de définir des règles poussées comme :
- le nombre de caractère entre deux balises
- le nombre de chiffre après la virgule dans un attribut
- le chiffre le plus bas et le plus haut autorisé
- en bref on définit un véritable pattern de vérification ex : 1244 EV 18 -> Pour quatre chiffres suivis d'un espace puis de deux lettres, espace puis deux chiffres, etc
Présentation rapide de Xforms (Basé sur XML).
Xforms malheureusement non reconnu par tous les navigateurs remplace les tâches usuelles de vérification d'entrées de formulaire. Aujourd'hui pour chaque formulaire proposé aux internautes, il n'est pas rare de voir un script côté client (Javascript) et un script côté Serveur (PHP, Ruby, Python...) vérifier l'exactitude des informations attendues. Parmis les vérifications les plus connues on retrouve le test de l'email, les saisies vides, les codes postaux, le nombre de chiffre minimum ... Xforms basé sur la syntaxe XML permet de s'astreindre de tout ça. Le code est à placer au sein du document HTML, les vérifications sont alors gérer nativement par votre navigateur préféré. (si compatible).
XML pour un besoin personnel ou pour un besoin collectif
Pour simplifier le XML peut être appréhender de deux façons, le XML qui est utilisé pour un besoin spécifique, on créer alors une structure tout à fait personnelle et arbitraire. Dans une deuxième cas on utilise XML pour créer un langage utilisé comme référence, reconnu par tous, pour répondre à un problème spécifique (Xhtml, Xforms, Microformats, RDF, SVG, Math ML).
Pour appuyer l'omniprésence du XML dans notre utilisation courante de l'outil informatique, un autre exemple a été donné. Aujourd'hui plus personne n'écrit directement les scripts SQL pour créer les bases de données. A l'aide d'outils spécialisés comme Db Designer 4 ou MySQL Workbench (instable), il est possible de directement dessiner le schéma de la base de données (méthode MERISE). Une fois finalisé un simple clic permet de créer le script Sql associé. Mais le XML dans tout cela ? Le logiciel enregistre le dessin dans un fichier XML définissant ainsi la structure de la base de données. Le clic sur le bouton "Générer le script Sql" transforme le XML en langage SQL. La transformation s'opère grâce au langage Xslt.
L'utilité "Xmlns" dans les documents ?
Xmlns permet de mélanger les langages au sein d'un même document. Comment faire la différence entre la balise <acronym> du langage HTML et sa propre balise ? réponse à l'aide Xmlns. dans le premier cas on garderait <acronym title="Exemple">Ex</acronym> et dans l'autre<perso:acronym>Exemple</acronym>
Xml et les moteurs de recherche
Quand il sera possible de tout sémantiser, et c'est finalement bientôt le cas, on n'aura plus qu'a taper dans Google ou autre : author:monsite.com pour obtenir les auteurs du site.
Pour aller plus loin :
Imaginez vous ouvrir votre page web directement dans votre logiciel de dessin, permettant à ce dernier de modifier uniquement les images, vous sauvez et retransmettez sur le serveur. (Uniquement le XML avec des données images serait impacté).
XSLT
XSLT (eXtensible Stylesheet Transformation) permet de modifier le fond, comme son nom l'indique c'est un langage de tranformation. Xslt prend toujours en fichier d'entrée un fichier au format XML, la sortie n'est pas forcément dans ce format Xslt permet de changer de langage de basculer entre les dialectes. (Exemple passé de HTML à PDF à l'aide de Xsl FO). Les opérations de transformation d'un document XML s'effectue en cascade, chaque partie du Xslt s'applique à un morceau. De cette façon il est possible de "morceler en morceau" de découper votre fichier Xslt en plusieurs. Cette méthode permet d'une part d'alléger le document en poids et en compréhension et de l'autre d'accroître sa réutilisabilité et généricité.
Xslt tout comme le XML se voit souvent apparenté soit à la botanique (tronc, branche, feuille pour les terminaisons) ou la généalogie (Père, fils, frère).
Schéma
(en cours)
- XML --\ / XML (XML, Html, SVG)
- XML --> XSLT<-
- XML --/ \ NON XML (pdf)
Exemple pratique Xslt:
Vous souhaitez servir à vos internautes le must en matière de graphique animé pour présenter vos résultats de l'année (vous savez, on clic sur le camembert et directement une part s'ouvre sur le côté présentant ainsi le résultat). Pour réaliser cela, Flash devient votre compagnon idéal de bataille. Mince vos internautes non pas Flash, peu importe votre animation flash se basait sur un fichier XML, il suffit juste désormais de générer un dessin vectoriel (animé ?) reposant donc sur SVG (IE6 pas content). Cette fois, c'est une personne aveugle qui souhaite accéder à votre contenu à l'aide de son navigateur basé sur une synthèse vocale, vous proposez donc un simple tableau html correctement formé. Tout çà est possible à l'aide de Xslt. L'avantage, c'est que vous gérez qu'un seul type de contenu : LE VOTRE et que tout le reste c'est de l'adaptation.
Avis
Très bien :
- Tour de table en entrée de présentation (favorise les questions)
- La présentation était adapté au public, c'est à dire débutant, cependant pour les initiés cela restait très agréable.
- Exemple réel (Compagnie d'assurance souhaitant mettre à jour 15 000 fichiers HTML)
- Présentation très riche en information et en vécu, l'intervenant ne s'en tient pas seulement à un discours théorique, les exemples avancés illustrent clairemenet l'expertise de ce dernier dans ce domaine.
- Fabrice nous a projeté également dans le futur avec des concepts révolutionnaires, renforce l'idée de l'importance du XML et l'aptitude de l'orateur à identifier les besoins de demain.
Moins Bien:
- Manque peut être de schéma pour illustrer les propos
- Appuyer sur le fait que la transformation peut être temps réel ou définitivement appliqué.
- Faute de temps : Un exemple : démonstration de la transformation par sablotron + Navigateur
Q: Peux t'on faire confiance à la génération en temps réel via Xslt par les navigateurs ?
R: Fabrice : en fait, il faut tester en javascript si le navigateur peut le faire, dans le cas contraire on ajoute un cookie (on fait donc le test une fois) et on demande au serveur de remplir cette tâche de transformation.