XSLT, le tueur de l’XHTML ?

Bon OK, je sais c’est pas bien d’épater la galerie avec des titres racoleurs comme ça. D’autant plus que cette question est complètement idiote : XSLT ne menace en rien le XHTML, bien au contraire ! En tout cas, c’est le sujet de l’article suivant : An Introduction to Client-Side XSLT, It’s Not Just for Server Geeks Anymore. Par contre, je ne suis pas trop d’accord avec la manière dont l’auteur présente des choses.

Je me lance donc dans une petite explication, et pour cela rien de tel qu’un petit schéma pour vous l’expliquer :

Principe de fonctionnement de XSLT

Dans XSLT il y a un T comme Transformation et le processus est le suivant :

  1. Prenez un fichier XML (du contenu brut)
  2. Transformez-le en XHTML à l’aide du XSLT (ajoutez-y de la structure)
  3. Associez à ce fichier XHTML un fichier pour la présentation (CSS) et un pour le comportement (DOM)
  4. Vous obtenez une page bien structurée, bien présentée, bien codée…

Dit comme cela, ça à l’air simple, et ça l’est ! La preuve, j’y arrive alors que je suis débutant : Allez donc voir ma page de favoris en ligne : http://fredcavazza.net/bookmarks/. La page telle que vous la visualisez à l’écran n’existe pas. Il s’agit en fait d’un fichier XML qui est transformé à la volée en XHTML à l’aide d’une feuille XSLT. Cerise sur le gâteau, j’utilise une feuille CSS pour rendre cela plus présentable.

Certes, Mais quelle utilisation ? Quelles utilisations devrait-on dire plutôt. Imaginez que votre contenu soit stocké en XML. En fonction du terminal sur lequel vous souhaitez lire l’information (web, TVHD, PDA, mobile…) la technologie XSLT vous permet de transformer ce contenu, ou plutôt de l’adapter en fonction des contraintes de lecture (taille de l’écran…). Il y a à ce sujet un très bon article sur l’internet multi-canal : The Mobile Web.

Encore plus fort, on peut même transformer du contenu XML en autre chose que du XHTML : du PDF par exemple à l’aide de XSL-FO. Mais là ça commence à devenir un peu trop technique. Si jamais cela vous intéresse, je vous recommande vivement l’ensemble de tutoriels à ce sujet sur le site W3 Schools : XML Tutorials.

Un commentaire sur “XSLT, le tueur de l’XHTML ?

  1. Hum, non ça ne marche pas ton essai: fredcavazza.net/bookmarks… « Erreur d’analyse XML : aucun élément trouvé Emplacement : fredcavazza.net/bookmarks… Numéro de ligne 2, Colonne 1 » Pourtant je suis sous Mozilla Firefox 1.0 où ça devrait normalement marcher. Du moins je crois. Pour le moment j’avoue ne toujours pas utiliser le XSL côté client, je reste encore au XML+CSS, ce qui marche très bien (sur des fils RSS par ex). Je ne vois toujours pas l’intérêt du XML+XSLT sur le web pour le moment. Ou alors cela serait intéressant si on pouvait utiliser les pages XML côté serveur comme si cela était des bases de données. Là ce serait certainement très intéressant. Mais pour le moment XHTML+CSS est bien plus simple, pratique et efficace à utiliser – selon mon point de vue. Il est même possible en CSS de définir des zones @media{} permettant de définir des affichages particuliers (tel l’impression par exemple). Je pense que l’intérêt principal de feuilles de transformation XSL côté client – sur le web – est surtout intéressant pour transformer des fichiers XML qui ne sont pas prévus au préalable pour être affichés dans une page web. Comme des fichiers RSS par exemple.

  2. Une petite remarque, tu écris que le XML contient du contenu brut et que tu ajoutes de la structure avec XHTML. Ce n’est pas toujours vrai, tu modifies en fait la structure pour l’adapter à la grammaire de XHTML. En effet, dans le cas de l’utilisation d’une DTD comme la TEI (Text Encoding Initiative) qui est utilisé pour baliser des travaux de recherche en sciences humaines et sociales, le XML est beaucoup plus structuré, plus finement et plus précisément pour des besoins d’exploitation du texte et le XHTML nous fait perdre énormément d’informations. Exemple : – le fichier XML : elec.enc.sorbonne.fr/cart… – le site qui est généré : elec.enc.sorbonne.fr/cart…

  3. Tout à fait Got, c’est un raccourci un peu dangereux de dire qu’en XML le contenu est brut. En fait, c’est plutôt l’inverse ! Mais bon… il faut bien vulgariser. Rendons à César ce qui lui appartient : C’est en définissant un vocabulaire métier (DTD ou XML Schema) que l’on peut structurer du contenu XML en fonction des spécificités d’un domaine d’activité. Cependant, aux yeux d’un navigateur, c’est du charabia, parce que lui (le navigateur), le seul vocabulaire qu’il connaisse c’est le HTML. Alors je sais, on peut par l’intermédiaire des namespace étendre ce vocabulaire de base (le XHTML en est le plus bel exemple), mais tous les navigateurs ne maîtrisent pas encore cette technologie. Pour moi, la transformation XSL côté client est encore du domaine de l’expérimental. Dans la mesure où IE 6 ne sait gérer correctement le XML qu’avec l’extension XML Parser, on ne peut pas prétendre que c’est encore d’actualité. Voilà pourquoi je considère le XSLT comme une technologie serveur. A moins que Flash MX vienne bousculer tout cela… (rappelons que la dernière version du plug-in Flash maîtrise parfaitement la manipulation du XML côté client) /Fred

  4. Juste une précision, c’est quoi un fichier DOM ? Pour moi DOM est une définition d’objet XML (XHTML dans ton cas) en vu de leur manipulation. Ce standard (W3C) est généralement implémenté sous forme d’API. On peut y voir la gestion de comportement mais c’est un peu capillotracté, non ?

  5. Non non, ce n’est pas tiré par les cheveux. DOM désigne en fait l’ensemble des technologies de scripting, incluant javascript ou plutôt l’ECMAScript. /Fred

  6. Introduction XSLT Il y a quelques temps, j’ai vu un article très intéressant sur Digital-Web traitant d’une introduction à XSLT côté client. Je trouve cet article vraiment très bien fait, même si ce n’est pas encore une réalité puique peut de navigateurs…

  7. Hello, Sujet interessant de publier ses favoris, mais beaucoup d’imprécisions dans les propos et les technologies. La démarche est super bonne mais pas mise en application. Si on regarde la source de ta page bookmarks, le type est clairement de l’xml, donc la génération à la volée en xhtml n’est pas faite. De plus, pourquoi utiliser un XSLT sensé permettre de faire des sélection coté client (car le moteur/interpreteur est implanté dans le browser et jamais coté serveur) alors qu’aucune sélection n’est faite depuis l’origine. Pour moi une simple CSS aurait suffit à atteindre le même résultat que ta page bookmark. Cependant bravo pour le resultat et la démarche qui me semble tres bien construite et documentée bien que la mise en oeuvre soit peu convaincante. Bravo.

  8. Tout à fait d’accord avec Tom, mais précisons les choses ! Le type de sortie générée par XML + XSLT se programme avec une balise xsl:output. Par défaut, si tu ne précises pas de xsl:output (ce qui est le cas dans ton css, Fred) la sortie sera en HTML 4.0 (cf spécification XSLT du W3C). Donc comme si tu avais mis : <xsl:output method= »html » version= »4.0″/> Dans la « method » de sortie du xsl:output, il n’y a PAS le type XHTML… et pour cause, le XHTML est du xml. Pour obtenir une sortie en XHTML, il faudrait donc préciser <xsl:output method= »xml » version= »1.0″ encoding= »ISO-8859-15″ omit-xml-declaration = »no » doctype-public= »..(selon le XHTML choisi)…. » /> L’ennui c’est qu’une telle déclaration semble très mal supportée par Firefox qui a l’air de considérer qu’à partir du moment où on sort du XML, il ne faut pas tenir compte des balises HTML (ou du moins je n’y suis pas arrivé). IE lui s’en débrouille… mais à mon avis Microsoft a fait le raccourci inverse : à partir du moment où on trouve une balise <html>, on oublie le type dans « output » c’est du html !.. Voila, mais là on pinaille, parce que visuellement, l’affichage en HTML 4.0 ou en XHTML ça ne fait pas grande différence.

  9. Alors là Zakhar je m’incline devnat tant de précision… En fiat, j’avoue avoir récupéré la feuille XSLT sur un autre site. Je ne me suis en fait jamais trop posé la question sur le type de sortie générée ! Si j’ai bien suivi ton raisonnemnet, mieux vaut s’en tenir à du HTML généré, c’est ça ? /Fred

  10. Merci pour toutes ces informations. J’apprends comme toi Fred et ce que tu réalises a travers tes articles est trés motivant pour les super-débutants comme moi.

Laisser un commentaire