web-dev-qa-db-fra.com

Pourquoi XSLT est-il si rarement utilisé sur le Web?

XSLT est une norme mature et largement acceptée.

Il peut être utilisé dans les navigateurs (même dans les anciens IE) et côté serveur (nginx a un module XSLT, qui peut être utilisé à partir des langages de programmation, bien sûr). Ses implémentations sont compilées et, par conséquent, devraient être beaucoup plus rapides que Python ou JS. L'implémentation JS Saxon JS peut être utilisée, au moins, comme solution de rechange. Jinja, Angular, Ruby's Slim, = ASP et PHP les modèles ne sont même pas proches.

Un modèle XSL peut être facilement validé dans un IDE. Combien d'IDE peuvent aider avec Jinja ou Angular?

Il semble que ce soit une idée parfaite pour décomposer l'interface utilisateur et les données avec XSLT.

Certes, les implémentations peuvent donner des résultats différents dans certains cas d'angle, mais c'est un problème uniquement avec les modèles côté client. Et c'est la même chose avec HTML, CSS et tout ce qui se fait du côté client.

Alors pourquoi pas XSLT?

13
George Sovetov

XSLT n'a pas vraiment de rôle utile dans le Web interactif moderne. Le but de XSLT est de passer d'un langage XML à un autre - mais vous n'avez en fait jamais besoin de le faire en premier lieu. La puissance, la rapidité et la bonne prise en charge d'une technologie sont sans importance si vous n'avez pas le problème que la technologie est conçue pour résoudre.

Il y a plusieurs raisons pour lesquelles le cas d'utilisation de XSLT a disparu:

  • HTML a gagné. XSLT était censé être utile pour transformer du contenu "texte riche" dans un certain format de balisage sémantique en HTML. Mais le HTML est en soi un format parfaitement fin, alors pourquoi ne pas simplement l'utiliser pour le contenu en premier lieu et ignorer la transformation?
  • CSS est devenu beaucoup plus puissant. L'une des promesses de XSLT était que vous pouviez garder le balisage source propre et sémantique, puis le transformer en "HTML de présentation" qui fonctionnait entre les navigateurs et où vous pouviez réorganiser les éléments, etc. Mais vous n'avez pas vraiment besoin de HTML de présentation de nos jours, vous pouvez utiliser du HTML sémantique et CSS peut effectuer le style et la mise en page nécessaires.
  • XML n'est pas devenu le format omniprésent pour les données. Lors de la récupération de données SQL à partir d'une base de données, il est beaucoup plus simple de simplement les fusionner directement dans un modèle, plutôt que de les transformer d'abord en XML, puis de les transformer via XSLT. Et JSON a pratiquement remplacé XML pour les données structurées côté client.
  • XSLT est conçu pour transformer un document entier à la fois. Mais dans les pages Web interactives modernes, de petits extraits de données sont téléchargés au coup par coup tout le temps et fusionnés dans la page.
  • Les données ne sont tout simplement pas si complexes. Pour la majorité des cas d'utilisation, des formats de modèle plus simples avec des espaces réservés et des répéteurs résolvent bien la tâche. Le XSLT est beaucoup plus puissant, mais vous avez rarement besoin de cette puissance supplémentaire, et il a un coût élevé en complexité et en laideur.

XSLT est né de la publication où vous pouvez avoir un processus à sens unique d'un format source structuré à plusieurs formats de publication comme l'impression, PDF et les pages Web statiques. La plupart des sites Web ne correspondent pas à ce cas d'utilisation .

40
JacquesB

Cela dépend de ce que vous entendez par "sur le Web".

XSLT est très largement utilisé. Pour autant que nous puissions en juger par des métriques comme le nombre de questions StackOverflow, il figure dans les 30 premiers langages de programmation, ce qui en fait probablement le premier langage de programmation spécifique au modèle de données après SQL.

Mais XSLT n'est pas largement utilisé côté client, c'est-à-dire dans le navigateur. Il est généralement utilisé côté serveur pour fournir du contenu à la demande en réponse aux demandes HTTP, ou il est utilisé en mode batch dans le cadre d'un workflow de publication. Il est également utilisé, bien sûr, dans de nombreuses applications qui ont très peu à voir avec le Web, par exemple dans l'édition imprimée.

Il existe un certain nombre de raisons pour lesquelles XSLT n'est pas largement utilisé dans le navigateur. La raison principale est que le bon support XSLT conforme était très lent venant des fournisseurs de navigateurs; personne ne voulait l'utiliser jusqu'à ce qu'il soit disponible sur tous les navigateurs, et au moment où il était disponible sur tous les navigateurs, les choses que les gens voulaient faire dans le navigateur avaient évolué (rappelez-vous "Web 2.0"?) et les implémentations XSLT dans le navigateur ne vous a pas aidé à créer des applications interactives ou à récupérer des données à l'aide d'AJAX.

Saxonica (avertissement, il s'agit de mon produit) a tenté de combler ces lacunes avec Saxon-JS, mais le produit est un retardataire pour le parti, et le développement Web côté client est très axé sur la mode, il ne suffit donc pas simplement d'avoir un produit qui coche toutes les cases techniques. Une partie de la mode est que la plupart des sites orientés données (par opposition à orientés documents) ont évolué vers JSON plutôt que XML, en grande partie parce que JSON est beaucoup plus facile à manipuler à partir de Javascript.

L'autre problème est que le XSLT est un langage à aimer ou à détester. Son paradigme déclaratif, basé sur des règles et axé sur les fonctionnalités fait appel à beaucoup en raison de sa nature de haut niveau, mais peut être rebutant pour ceux dont la seule expérience de programmation est d'écrire du code impératif qui indique exactement à l'ordinateur ce qu'il doit faire et quel ordre.

9
Michael Kay

Je fais des allers-retours entre répondre à cette question et la fermer comme étant principalement basée sur l'opinion. Alors, voici mon flip:

En bref, parce que XML fait un langage de programmation pourri. Quelque chose avec le sémantique de XSLT mais beaucoup mieux syntaxe serait une toute autre affaire, je pense. Il existe des langages de transformation XML basés sur LISP, par exemple.

XSLT ne peut pas décider s'il veut être un langage de réécriture d'arbre, un langage fonctionnel ou un langage procédural. Il a des caractéristiques de tous ceux-ci, mais il n'est vraiment bon dans aucun d'entre eux. Pour l'un des trois aspects, il existe de meilleures langues.

3
Jörg W Mittag

Parce que XML lui-même ressemble à du courrier indésirable de compatibilité descendante obsolète dans 99,9% des cas.

Le seul cas d'utilisation pour lequel XML n'a pas de remplacements immédiatement supérieurs est des choses comme docx ou odf, et il est possible que SGML aurait été meilleur *. Autrement dit, nous avons une structure de document incroyablement riche avec toutes sortes de choses imbriquées les unes dans les autres avec de grandes transformations appliquées afin qu'elles puissent apparaître correctement à l'écran et sur l'imprimante.

Presque tout le temps, XML est utilisé pour transmettre des données structurées et il semble que XSLT soit conçu pour transformer des données de document structurées en données de document. Ce cas d'utilisation est en train de disparaître. JSON est directement supérieur à XML pour les données structurées. ** Le démarquage et YAML sont supérieurs pour les données légèrement formatées. Le leg-up initial de XML était les analyseurs intégrés dans Java et Javacript. JSON a brisé cette barrière en exploitant un analyseur intégré pour les cas où la source JSON est approuvée (qui était la plupart des quand il était jeune).

Et le monde a changé. L'avantage de la bibliothèque intégrée est maintenant un avantage trivial. XHTML a été rejeté catégoriquement et son remplaçant n'en a pas hérité mais de son prédécesseur.

XML est maintenant utilisé pour parler directement au gars qui veut le recevoir, et il est généré dans un tissu entier dans le format souhaité, ou inversement, il est lu et analysé dans le modèle d'objet directement à partir du formulaire envoyé. Puisqu'il n'est plus un format de stockage ou un format d'échange universel, la transformation de schéma en schéma n'est plus nécessaire.

* Ils ont enseigné à l'université que SGML n'a jamais été implémenté. Ils ont menti.

** J'ai entendu les plaintes concernant les mauvais formats de nombre dans JSON. D'un autre côté, XML n'a pas de format numérique, donc le simple bourrage de tous les types de données dans la chaîne l'emporte toujours sur XML.

0
Joshua