Y a-t-il de bonnes raisons d'utiliser, d'apprendre ou de recommander XSLT? [fermé]


28

Je suis développeur depuis 8 ans. Nous avons utilisé XSLT principalement pour transformer XML en HTML. Nous l'avons également utilisé pour la transformation XML en XML.

Mais nous avons maintenant tout remplacé. Le HTML peut être facilement créé à l'aide de langages de programmation tels que ASP.Net. XML peut être lu et manipulé dans n'importe quel langage standard de haut niveau. Comme la programmation en XSLT est un peu complexe, quiconque préfère travailler sur les derniers langages de programmation.

Maintenant ma question: XSLT sera-t-il un choix significatif à l'avenir, sans tenir compte du fait de maintenir XSLT déjà développé? Puis-je recommander de nouveaux programmeurs pour étudier XSLT?


3
Lecture pertinente: nocif.cat-v.org/software/xml
Josh K

12
Pour moi, XSLT est un langage de programmation horriblement cryptique qui nie être un langage de programmation. Il est lié aux langages de programmation fonctionnels purs, mais rendu beaucoup moins lisible, beaucoup moins maintenable, beaucoup moins pratique. Parce que c'est un langage de programmation dans le déni, les UTILISATEURS de DocBook par exemple (un logiciel complexe écrit en langage XSLT) ont le problème d'intégrer les différents interprètes, vérificateurs, bibliothèques, etc. pour faire fonctionner <explétif supprimé>.
Steve314

8
Tu ne veux pas dire <expletive deleted="true" />?
MSalters

6
@ Steve314 J'adore XSLT, vous pouvez faire des trucs amusants comme SQL dynamique -> XML dynamique -> XSLT dynamique -> html dynamique + JavaScript: P
Darknight

5
@MSalters - vous avez manqué la déclaration xml, l'élément racine, les espaces de noms, la DTD, soit le schéma XML Schema ou le schéma Relax NG (ou les deux), l'expression XMLPath indiquant où l'explétif a été supprimé, etc. .
Steve314

Réponses:


29

Il existe des cas importants où XSLT peut être un bon choix:

  • Le logiciel ETL ( Extract, Transform, Load ) peut dans certains cas utiliser XSLT. Par exemple, cela peut être un bon choix lorsque les données extraites et les données à charger sont au format XML, et où la transformation peut être modifiée sans avoir besoin de recompiler l'application.

  • Certaines applications qui stockent des données en XML utilisent XSLT pour présenter ces données dans un format lisible par l'homme¹. Par exemple, Windows Live Messenger stocke la trace des messages au format XML, mais lorsque vous ouvrez l'historique dans WLM lui-même, il vous montre un joli tableau qui est en fait du HTML construit via XSLT.

  • Certains sites Web axés sur les développeurs ou les données peuvent vouloir donner un accès à XML si l'intention est d'utiliser les pages du site Web par programme². C'est en quelque sorte plus agréable que d'utiliser des analyseurs HTML, d'autant plus que le code HTML peut être modifié à tout moment.

  • XSLT, lorsqu'il est utilisé dans des sites Web, permet une séparation stricte entre HTML et code-behind, ce qui permet d'engager un développeur pour le code-behind et un autre développeur pour les choses HTML / CSS. Voir le point 1 dans ma réponse à une autre question .

XSLT sera-t-il un choix important à l'avenir? Eh bien, ce n'est pas un choix important aujourd'hui, et je doute que l'utilisation de XSLT augmentera avec le temps. J'ignore la raison de cela, mais de nombreux développeurs n'aiment pas XML et détestent XSLT.

Pouvez-vous recommander de nouveaux programmeurs pour étudier XSLT? Sûr! Non seulement XSLT peut être utilisé dans certaines circonstances où d'autres approches seraient plus difficiles, mais XSLT a également une approche très spécifique que les autres langues n'ont pas.


¹ J'entends par là que XML n'est pas vraiment lisible par l'homme: si vous demandez à une personne qui ne travaille pas en informatique de lire XML, elle sera horrifiée.
² Je sais qu'il existe des services Web. Mais parfois, il est juste plus facile et plus simple, sur chaque page, de construire un objet dynamique, puis de le sérialiser en XML, puis de le transformer en HTML via XSLT ou de laisser le bot accéder directement au XML.


Le format XML minimal est beaucoup plus facile à rétroconcevoir qu'un fichier binaire classique, mais cette obsession d'auto-description est folle. Si vous souhaitez déchiffrer un document XML, supprimez d'abord le plus d'encombrement possible, en commençant par la DTD.
Steve314

3
Pour les autres lecteurs: ETL = Extraire, transformer, charger
Peter Krauss

12

XSLT est à peu près mort car seuls quelques passionnés l'utilisent encore. Cependant, il n'y a pas de véritable alternative pour cela. Si vous vous concentrez uniquement sur un seul cas d'utilisation, comme par exemple le rendu de pages HTML à partir de documents sémantiques, vous trouverez de meilleurs outils. Si vous recherchez des moteurs de modèles de génération de code, il existe à nouveau de meilleurs outils. De même pour la transformation de documents.

Mais si vous recherchez un outil qui supporte assez bien tous ces cas d'utilisation sur toutes les plateformes, les choix deviennent très limités. Si vous avez déjà un document XML et que vous devez le transformer en quelque chose pour pouvoir utiliser votre outil, vous êtes probablement mieux de simplement traiter vos données avec XSLT (ou XQuery).

Quoi qu'il en soit, vous pouvez apprendre le XSLT en quelques jours, voire des semaines. Cela ne vous fera pas de mal de faire une expérience de première main. Essayez-le. Cela vaut au moins l'effort de stocker ce type de modèle (transformations basées sur des règles) dans votre tête pour une utilisation ultérieure. Cela justifie à lui seul l'apprentissage du XSLT.


8

Hmm je me demande si les API de haut niveau qui créent du HTML à partir de code utilisent des XSLT "sous le capot" ...

XSLT est largement utilisé lorsque je travaille pour transformer XML d'un format source en une variété d'autres. Il peut également être utilisé pour transformer une sortie XML en sortie non XML. Je n'ai pas fait grand chose de cela, mais j'ai entendu dire que cela était fait pour cibler PDF et PostScript, entre autres.


3
C'est XSL / FO, qui est le jumeau siamois de XSL / T. Ils ont été séparés à la naissance.

8

Oui.

Prenons un bon exemple: les rapports de tests unitaires en intégration continue. La plupart des programmes de tests unitaires et de couverture de code produisent simplement des tonnes de XML illisible. Mais avec quelques XSLT simples, vous pouvez créer une douzaine de rapports utiles à partir des mêmes données. Et d'autres personnes peuvent réutiliser ces rapports.

Vous pouvez maintenant les écrire dans la langue que l'outil CI utilise pour les plugins, mais si vous ne connaissez pas cette langue (par exemple, vous êtes un développeur .NET, utilisant Jenkins), il n'est pas nécessaire de l'apprendre. Utilisez simplement un plugin qui applique déjà un XSLT à un fichier XML et écrivez quelques XSLT utiles.


6

Il y aura toujours un choix et une variété de langages de programmation, et les raisons pour lesquelles l'un est choisi de préférence à un autre sont autant liées à la familiarité et à la mode qu'aux critères objectifs comme la fonctionnalité, la productivité et les performances. Personne ne peut prédire la mode, donc personne ne peut prédire les tendances futures des langages de programmation. Mais il y a beaucoup de gens qui ont dépassé les barrières d'apprentissage initiales pour XSLT et trouvent que c'est un outil extrêmement productif pour une très grande variété de tâches (peut-être une plus grande variété que celle jamais conçue pour s'attaquer).

Pour de nombreuses tâches pour lesquelles je vois que XSLT est utilisé (et les tâches que je l'utilise pour moi-même), écrire du code Java ou ASP pour faire le travail serait un gaspillage épouvantable du budget de votre employeur. Mais peut-être pas, si vous êtes bon en écriture Java et mauvais en écriture XSLT.


6

XSLT n'est pas lisible par l'homme. Les méta-informations (les balises) prennent trop de place sur les informations réelles (texte, requêtes xpath). Un bon code devrait ressembler à une documentation et ce n'est pas le cas de XSLT. C'est plutôt un bon format de persistance pour les outils de cartographie.

Un bon langage de transformation devrait permettre de prévisualiser le résultat de la transformation et de visualiser le flux de transformation (IF, ELSE, FOR, WHILE) simultanément. ceci est important pour la maintenabilité. En ce qui concerne cet aspect, Velocity ou GenearateXY sont meilleurs que XSLT. GenerateXY est encore un peu meilleur car il sépare l'aperçu et le flux tandis qu'avec Velocity, vous devrez malheureusement casser l'indentation de l'aperçu pour fournir un flux lisible.

Le seul bon point dans XSLT est qu'il se soucie de la modularité en utilisant et même en abusant des éléments "xsl: template". Le problème est qu'il est bon pour un langage informatique (Java, C, ...) mais très secondaire pour un langage de présentation.


4

Effectivement

Quelque chose remplacera probablement XSLT un jour car c'est un peu lourd à apprendre et à utiliser. Cependant, il n'existe actuellement aucun langage de modèle / transformation disponible afaik qui soit aussi flexible et "pur" dans son implémentation.

XSL-T peut être utilisé à différentes fins:

  • Vous pouvez "créer" du contenu au format HTML à partir d'une donnée à l'aide d'un modèle
  • Vous pouvez convertir d'un format xml à un autre
  • Vous pouvez manipuler xml dans un autre format, peut-être afficher un sous-ensemble

Fondamentalement, tous ces éléments sont la même chose, la transformation d'un fichier de données XML en un autre. Voyons maintenant différents outils que nous pourrions utiliser à la place de XSLT.

Si nous voulions manipuler le contenu d'une page XHTML par exemple, nous pourrions utiliser regexp, mais regexp est compliqué pour les éléments structurels. Il brille pour manipuler des chaînes mais je ne l'utiliserais pas pour créer une table des matières pour quelque chose ou le présenter dans une disposition différente.

Vient ensuite ASP.Net. Nous mettons notre disposition dans notre page asp et insérons du code derrière pour les parties dynamiques. Une autre alternative consiste à renoncer à la partie mise en page et à tout générer, par exemple une base de données et l'utilisation de C # pour créer la sortie souhaitée.

Le problème avec la première approche est qu'il est maladroit de passer des données descriptives au contenu réel. Si vous avez un fichier de données contenant des numéros de téléphone que vous souhaitez présenter avec des en-têtes pour chaque lettre, montrez un nombre total d'entrées, etc. vous devez avoir une partie de la mise en page dans le fichier de mise en page et une partie dans le code que vous générez . Une autre option consiste à utiliser une certaine forme de grille Web, je trouve ceux-ci assez désordonnés et, soudain, vous devez apprendre comment fonctionne la grille de frigging lorsque tout ce que vous vouliez faire était de produire du HTML spécifique en fonction des données.

Devenir totalement dynamique est certainement une option mais c'est plutôt maladroit aussi. Même dans le meilleur des cas où vous utilisez quelque chose comme LINQ, vous devrez mélanger le code de programmation avec la sortie de manière plutôt laide. De plus, il n'y a pas de bon moyen de gérer correctement le contenu récursif non structuré de style de document, ce que le HTML est généralement.

Avec XSLT, vous pouvez simplement créer un modèle pour une certaine balise, soit tel quel ou dans le contexte de son parent, il est donc rendu différemment s'il est par exemple parentet par autre chose.

Une réponse assez longue mais oui, je pense qu'il y a une grande valeur dans un langage de modèle descriptif et XSLT est le meilleur et le plus standardisé que nous ayons obtenu jusqu'à présent.


4

Le plus grand échec de XSLT est son incapacité (dans toute implémentation réelle) à minimiser la quantité de document qui doit être conservée en mémoire à la fois pour un traitement efficace. Au lieu de cela, le document entier est lu dans une certaine forme de représentation DOM et le traitement est effectué contre cela. Si le document est très volumineux, les besoins en mémoire le sont également. Pourtant, de nombreuses feuilles de style n'ont clairement besoin que de la balise actuelle et de quelques autres, par exemple les ancêtres de la balise, à un moment donné et pourraient donc être traitées avec une mémoire minimale et une diffusion efficace.

Oui, en termes de langue, c'est bizarre, mais c'est juste une barrière à l'entrée. Si vous connaissez XSLT, c'est souvent plus facile que les alternatives - mais si vous avez de gros documents (ou beaucoup de documents en cours de traitement en même temps), l'impact mémoire de XSLT force souvent d'autres alternatives plus longues.


3

En fait, je pense qu'il est plus efficace d'utiliser XSL qu'une autre langue pour présenter des données. Par exemple, vous pouvez présenter un XML en tant que PDF à l'aide de XSL-FO et vous pouvez contrôler chaque pouce, mais si vous travaillez avec RDLC (.NET) par exemple, vous verrez qu'il est très difficile de présenter exactement ce que vous voulez.

Même l'évolution / correction est assez facile, car en XSL chaque élément a son propre modèle. Je pense que l'extension de XSL est plus importante que XSLT et XSL-FO. C'est pourquoi ce langage sera toujours utilisé à l'avenir (mais j'espère vraiment qu'il sera plus stable et moins complexe).


2

Je travaille pour une entreprise d'intégration de données et nous utilisons XSLT avec nos outils propriétaires comme une excellente solution impliquant XML à HTML / XML / Ascii.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.