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

12

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. Les modèles Jinja, Angular, Ruby's Slim, ASP et PHP 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?

George Sovetov
la source
4
JSON est plus facile que XML. Je ne vous trompe pas, hier soir, j'ai entendu des développeurs dire combien ils étaient reconnaissants de ne plus avoir à utiliser XSLT. Voir: stackoverflow.com/questions/4862310/json-and-xml-comparison
Dan Wilson
6
Avez-vous déjà essayé de faire quelque chose de non trivial avec cela?
PlasmaHH
9
Est-ce «parce qu'il est douloureux d'utiliser» une réponse valide ..?
thisextendsthat
2
@thisextendsthat: Non, car JavaScript et CSS étaient également une agonie à utiliser, mais ils sont toujours largement utilisés.
JacquesB
4
@JacquesB JS et CSS sont toujours à l' agonie à utiliser.
Andy

Réponses:

39

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 tels que l'impression, le PDF et les pages Web statiques. La plupart des sites Web ne correspondent pas à ce cas d'utilisation.

JacquesB
la source
Réponse très informative (+1).
Giorgio
2
Je ne sais pas si mon expérience est la même que celle des autres utilisateurs, mais l'un des «arguments de vente» de XSLT, comme cela m'a été expliqué, était la bande passante réduite: si vous avez une grande page régulière, vous envoyez un XML ( <chapter><title><par>...) et XSLT minimal serait « développer » avec le div, table, trau besoin, avec l'ajout qu'il pourrait être mis en mémoire cache. Donc (encore une fois, je ne sais pas dans quelle mesure cet "avantage" était répandu), l'amélioration de la bande passante l'aurait également blessé (et le fait que la plupart des pages HTML sont assez petites).
SJuan76
@ SJuan76: C'est une idée de transformer le balisage sémantique en HTML de présentation verbeux qui utilise des tableaux pour la mise en page. Heureusement, il n'est plus nécessaire d'utiliser des tableaux pour la mise en page afin que le cas d'utilisation soit théorique.
JacquesB
1
@JacquesB J'ai utilisé ce couple pour cette page: programaths.be/job/job.xml et c'est parfait. Le XML est utilisé pour afficher la page ET vérifier les réponses au questionnaire généré. Il ne s'agit pas de mettre en forme des tableaux, mais le XML m'offre une bonne abstraction. Bien sûr, je me fiche que les gens trichent. Mais cela montre que même dans les temps modernes, cela peut être très utile!
programaths
9

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 mesures telles que 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é soit côté serveur pour fournir du contenu à la demande en réponse aux requêtes HTTP, soit 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 de la fête, 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. La tendance est en partie due au fait 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, fondé 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 dit exactement à l'ordinateur quoi faire et quel ordre.

Michael Kay
la source
3

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 merdique. Quelque chose avec la sémantique de XSLT mais une bien meilleure 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.

Jörg W Mittag
la source
La syntaxe XML peut en effet sembler verbeuse. Mais, quelles sont les autres langues prises en charge partout?
George Sovetov
XSLT est un excellent langage fonctionnel IMO. Là où il tombe, c'est dans la façon dont il mélange la vue avec la logique de transformation.
RubberDuck
4
@GeorgeSoverov pourquoi est-il important d'être soutenu partout? Il doit uniquement être pris en charge sur votre serveur.
Esben Skov Pedersen
1
Je pense que la laideur d'une langue n'est pas pertinente si elle sert un cas d'utilisation pertinent. Soyez témoin du succès de JavaScript. Le problème avec XSLT est que le cas d'utilisation n'est tout simplement pas là.
JacquesB
1
Eh bien, vous avez certainement démontré que c'est une question qui attire des réponses basées sur l'opinion ...
Michael Kay
0

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 est 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 parseurs intégrés dans Java et Javacript. JSON a franchi cette barrière en exploitant un analyseur intégré pour les cas où la source JSON est fiable (ce qui était le cas pour la plupart lorsqu'elle é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.

Joshua
la source