113 votes

Longinge is y-lent me on.

Il y a un moment, j'ai commencé sur un projet où j'ai conçu un html-esque schéma XML afin que les auteurs puissent écrire leur contenu (enseignement, le matériel de cours) dans un format simplifié qui sera ensuite transformé en HTML via XSLT. J'ai joué un peu (lutté) avec elle pendant un certain temps et il a obtenu un niveau très basique, mais a ensuite été trop gêné par les limites que j'étais confronté (qui peut très bien avoir été les limites de mes connaissances), et quand je lis un blog, ce qui suggère d'abandonner XSLT et il suffit d'écrire votre propre XML à ce que l'analyseur dans la langue de votre choix, j'ai ardemment sauté sur que et il est fonctionné avec brio.

Je travaille toujours à ce jour (en fait, je suis censé travailler sur ce droit maintenant, au lieu de jouer sur DONC), et je vois de plus en plus de choses qui me font penser que la décision d'abandonner XSLT est une bonne chose.

Je sais que XSLT a sa place, que c'est une norme acceptée, et que si tout le monde est d'écrire leurs propres interprètes, 90% d'entre eux vont se retrouver sur TheDailyWTF. Mais étant donné que c'est un style fonctionnel de la langue au lieu de la procédure de style laquelle la plupart des programmeurs sont familiers avec, pour quelqu'un de se lancer dans un projet comme le mien, recommanderiez-vous qu'ils descendre le chemin que j'ai fait, ou la coller avec XSLT?

91voto

annakata Points 42676

Autant de négativité!

J'ai été en utilisant XSLT pour un bon nombre d'années maintenant, et véritablement l'amour. La clé de la chose que vous devez comprendre, c'est que ce n'est pas un langage de programmation, c'est une création de modèles de langue (et, à cet égard, je trouve ça incroyablement supérieur à asp.net /spit).

XML est, de facto, le format de données développement web aujourd'hui, que ce soit des fichiers de configuration, des données brutes ou dans la mémoire de reprsentation. XSLT et XPath vous donner un extrêmement puissant et très efficace pour transformer les données dans n'importe quel format de sortie que vous aimeriez, instantanément, pour vous fournir MVC aspect de la séparation de la présentation des données.

Puis il y a l'utilitaire de capacités: laver les espaces de noms, reconnaissant disparates définitions de schéma, la fusion de documents.

Il doit être préférable de traiter avec XSLT que de développer vos propres méthodes. Au moins XSLT est un standard et quelque chose que vous pourriez embaucher, et si jamais elle est vraiment un problème pour votre équipe, il est très nature vous permet de garder la plupart de votre équipe de travail avec juste du XML.

Un monde réel de cas d'utilisation: je viens d'écrire une application qui gère en mémoire XML docs dans l'ensemble du système, et les transforme en JSON, HTML ou XML, comme demandé par l'utilisateur final. J'ai eu une assez aléatoire de la demande de fournir des données Excel. Un ancien collègue qui avait fait quelque chose de similaire par programmation, mais il faut un module de quelques fichiers de classe et que le serveur avait de MS Office installé! S'avère Excel a une XSD: de nouvelles fonctionnalités avec un minimum de basecode impact dans 3 heures.

Personnellement, je pense que c'est l'un des plus propres choses que j'ai rencontré dans ma carrière, et je crois à tout ça apparente de questions (débogage, la manipulation de la chaîne des structures de programmation) sont en baisse à une mauvaise compréhension de l'outil.

Évidemment, je crois qu'il est "à la hauteur".

64voto

Steve Jessop Points 166970

Avantages de XSLT:

  • Domaine spécifique du XML, donc par exemple pas besoin de citer le littéral XML en sortie.
  • Prend en charge XPath/XQuery, qui peut être une façon agréable de requête de Dom, de la même manière que les expressions régulières peuvent être un bon moyen de chaînes de requête.
  • Langage fonctionnel.

Les inconvénients de XSLT:

  • Peut être inesthétique verbose - vous n'avez pas à citer littéral XML, ce qui signifie que vous ne devez citer le code. Et pas dans une jolie façon. Mais là encore, ce n'est pas bien pire que votre typique du SSI.
  • Ne pas faire certaines choses que la plupart des programmeurs prennent pour acquis. Par exemple, la manipulation de la chaîne peut être une corvée. Cela peut conduire à des "malheureux moments" quand les novices code de conception, puis frénétiquement à la recherche sur le web pour des conseils sur la façon de mettre en œuvre des fonctions qu'ils pensaient être juste là et ne pas se donner le temps d'écrire.
  • Langage fonctionnel.

Une manière d'obtenir de procédure de comportement, par la façon dont, à l'est de la chaîne de multiples transformations ensemble. Après chaque étape, vous avez une nouvelle marque DOM travailler sur ce qui reflète les changements dans cette étape. Certains processeurs XSL avoir des extensions pour ce faire de façon efficace dans une transformation, mais j'ai oublié les détails.

Donc, si votre code est la plupart du temps de sortie et pas beaucoup de logique, XSLT peut être une très belle façon de l'exprimer. Si il y a beaucoup de logique, mais la plupart des formes qui sont intégrés dans XSLT (sélectionner tous les éléments qui se ressemblent, bla, et pour chacun de sortie bla), il est susceptible d'être tout à fait un environnement convivial. Si vous avez envie de penser XML-ishly à tout moment, puis donner XSLT 2 go.

Sinon, je dirais que si votre langage de programmation favori a une bonne DOM de mise en œuvre de l'appui de XPath et vous permettant de créer des documents d'une manière utile, alors il ya quelques avantages de l'utilisation de XSLT. Pour les liaisons de libxml2 et gdome2 doit faire bien, et il n'y a pas de honte à coller à des fins générales langues que vous connaissez bien.

La maison-grandi parseurs XML sont généralement incomplètes (auquel cas, vous allez perdre certains jours), ou alors pas beaucoup plus petite que quelque chose que vous pourriez avoir pris la tablette (dans ce cas, vous êtes probablement de perdre votre temps), et de vous donner un certain nombre de possibilités d'introduire de graves problèmes de sécurité autour des entrées malveillantes. N'écrivez pas un, sauf si vous savez exactement ce que vous gagnez en le faisant. Ce qui n'est pas à dire que vous ne pouvez pas écrire un analyseur syntaxique pour quelque chose de plus simple que de XML comme votre format d'entrée, si vous n'avez pas besoin de tout ce que XML offre.

27voto

Nic Gibson Points 4539

Je dois admettre un parti pris ici parce que j'enseigne XSLT pour une vie. Mais, il pourrait être intéressant de suppléent les domaines que je vois mes élèves en train de travailler. Ils se sont séparés en trois groupes: l'édition, de la banque et du web.

Beaucoup de réponses à ce jour pourraient être résumées comme "c'est pas bon pour la création de sites web", ou "c'est rien comme le langage X". Beaucoup de gens tech aller par le biais de leur carrière sans exposition à la fonctionnelle/langages déclaratifs. Quand je suis à l'enseignement, l'expérimenté Java/VB/C/etc folk sont ceux qui ont des problèmes avec la langue (les variables sont des variables dans le sens de l'algèbre pas de procédure de programmation par exemple). C'est beaucoup de réponses ici - je n'ai jamais eu avec Java, mais je ne vais pas la peine de critiquer la langue à cause de cela.

Dans de nombreux cas, il est un outil inapproprié pour la création de sites web - un langage de programmation peut-être mieux. J'ai souvent besoin de prendre de très gros documents XML et de les présenter sur le web; XSLT fait que trivial. Les étudiants que je vois dans cet espace ont tendance à être le traitement d'ensembles de données et de les présenter sur le web. XSLT est certainement pas le seul outil dans cet espace. Cependant, beaucoup d'entre eux sont en utilisant le DOM pour ce faire et XSLT est certainement moins douloureux.

Le secteur bancaire étudiants d'utiliser un DataPower zone en général. C'est un XML appareil et il est utilisé pour s'asseoir entre les services de 'parler' XML différents dialectes. Transformation d'un langage XML à l'autre est presque banal dans XSLT et le nombre d'élèves qui fréquentent mes cours sur ce sont en augmentation.

L'ensemble des étudiants proviennent d'une publication d'arrière-plan (comme moi). Ces gens ont tendance à avoir un immense documents au format XML (croyez-moi, l'édition est une industrie qui est très en XML - technique de la publication a été là depuis des années, et l'édition est de s'y rendre maintenant). Ces documents doivent être traitement (DocBook ePub vient à l'esprit ici).

Quelqu'un au-dessus indiqué que les scripts ont tendance à être en dessous de 60 lignes, ou alors ils deviennent encombrants. Si la situation devient difficile, les chances sont que le codeur n'a pas vraiment eu l'idée - XSLT est très différente de la mentalité de beaucoup d'autres langues. Si vous n'obtenez pas l'état d'esprit, ça ne marchera pas.

Ce n'est certainement pas une langue moribonde (la quantité de travail que je reçois me dit que). Maintenant, c'est un peu "bloqué" jusqu'à ce que Microsoft terminer leur (très en retard) de la mise en œuvre de XSLT 2. Mais il est toujours là et semble être va forte de mon point de vue.

24voto

Adam Batkin Points 20920

Nous utilisons XSLT largement pour des choses comme la documentation, et de faire des complexes paramètres de configuration réparables par l'utilisateur.

Pour la documentation, nous utilisons beaucoup de DocBook, qui est un format basé sur XML. Cela nous permet de stocker et de gérer notre documentation avec l'ensemble de notre code source, étant donné que les fichiers sont en texte brut. Avec XSLT, nous pouvons facilement construire nos propres formats de documentation, ce qui nous permet à la fois de générer automatiquement le contenu de manière générique, et rendre le contenu plus lisible. Par exemple, lorsque nous publions des notes de version, nous pouvons créer un XML qui ressemble à quelque chose comme:

<ReleaseNotes>
    <FixedBugs>
        <Bug id="123" component="Admin">Error when clicking the Foo button</Bug>
        <Bug id="125" component="Core">Crash at startup when configuration is missing</Bug>
        <Bug id="127" component="Admin">Error when clicking the Bar button</Bug>
    </FixedBugs>
</ReleaseNotes>

Et puis, à l'aide de XSLT (qui transforme la ci-dessus pour DocBook) nous nous retrouvons avec de belles notes de version (PDF ou HTML d'habitude) où Id de bug sont automatiquement liés à notre bug tracker, les bugs sont regroupés par composante, et le format de tout ce qui est parfaitement cohérent. Et le XML ci-dessus peuvent être générés automatiquement par l'interrogation de notre bug tracker pour ce qui a changé entre les versions.

L'autre endroit où nous avons trouvé XSLT pour être utile, c'est en fait dans nos produits de base. Parfois, lors de l'interfaçage avec des systèmes tiers, nous devons en quelque sorte les données de processus dans un complexe de la page HTML. Analyse HTML est laid, donc nous fournir les données à travers quelque chose comme TagSoup (qui génère des bon SAX XML événements, essentiellement, nous permettant de traiter avec le HTML comme si c'était écrit correctement XML) et l'on peut ensuite exécuter certains XSLT contre elle, pour transformer les données en un "connus stable" format que l'on peut effectivement travailler avec. Par la séparation, la transformation en un fichier XSLT, ce qui signifie que si et lorsque le format HTML modifications, l'application elle-même n'a pas besoin d'être mis à jour, au lieu de cela, l'utilisateur final peut juste modifier le fichier XSLT eux-mêmes, ou nous pouvons vous envoyer par e-mail une mise à jour du fichier XSLT sans l'ensemble du système devant être mis à niveau.

Je dirais que pour les projets web, il ya de meilleures façons de gérer la vue de côté que XSLT aujourd'hui, mais comme une technologie d'il y a certainement utilise pour XSLT. Ce n'est pas la langue la plus facile au monde à l'utiliser, mais ce n'est certainement pas mort, et de mon point de vue a encore beaucoup de bonnes utilisations.

19voto

Bill Karwin Points 204877

XSLT est un exemple de programmation déclarative de la langue.

D'autres exemples de programmation déclarative langues inclure des expressions régulières, Prolog, et SQL. Tous ces éléments sont très expressifs et compact, et généralement très bien conçu et puissant pour les tâches pour lesquelles ils sont conçus.

Cependant, les développeurs de logiciels en général la haine de ces langues, parce qu'ils sont si différents des plus mainstream OO ou les langages procéduraux qu'ils sont difficiles à apprendre et à déboguer. Leur construction compacte de la nature en général, il est très facile à faire beaucoup de dommages par inadvertance.

Ainsi, alors que XSLT est un mécanisme efficace pour fusionner des données dans la présentation, il échoue dans la facilité d'utilisation du département. Je crois que c'est pourquoi il n'a pas vraiment pris.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X