9
votes

Xslt bon choix pour le cadre web?

J'ai toujours pensé à XML (et SGML avant cela) des données comme format du diable. Je suis de l'ancienne base de données et des dossiers plats. Néanmoins, nous développons un produit Web disponible dans le commerce et le framework est basé sur la traduction / la transformation de données XML dans des chaînes.

Alors que nous interviewons pour des postes aussi, parlant à des clients potentiels, ils aiment le concept de ce qu'il fera mais sont fatigués de soutenir XSLT à long terme . Une personne l'a même appelée le proverbial "mort". Dead comme Cobol, Unix et C ou des morts comme Apple Business Basic ?

Quoi qu'il en soit, je suis curieux si la construction d'un cadre Web sur XSLT ne coupe vraiment pas assez (curieusement) pour les entreprises. Y a-t-il des problèmes de mise en œuvre XSLT inhérents qui rendent cette entreprise quelque chose qui vaut la peine de réexaminer?


2 commentaires

Jetez un coup d'œil à REXSL , qui est un cadre de développement Web basé sur XSL pour Java


OUTINGH.COM/8/XSLT-In- Server-Side-web-cadres


7 Réponses :


1
votes

rien de vraiment faux avec elle ...

Mais en fonction de ce que vous faites, cela peut ne pas vous fournir suffisamment de crochets pour faire ce que vous voulez.


0 commentaires

2
votes

Si votre application s'appuie sur la transformation de données XML, c'est ce que XSLT est dédié pour et qu'il fait un travail décent, sauf que le code peut être assez verbeux.

On n'a jamais vraiment entendu me plaindre des problèmes de Saxon en tant que mise en œuvre XSLT.

Peut-être que vous regardez dans SXML, SXSLT, SXPath et cetera vaut la peine d'être envisagé.

En ce qui concerne la mort de XSLT, car je remarque qu'il monte toujours et pas vraiment son pic, bien que je remarque plus de voix qui commencent à voir les défauts de conception en XML, XML utilisé comme format de stockage de données. Une décision inhabituelle, XML est une bonne présentation - présentation , et surtout sur le Web, c'est Faaar à verbeuse à un conteneur pour transmettre des informations aussi, mais il le fait de présenter des informations.

XML a ce que certaines personnes appellent cependant des défauts de conception.


2 commentaires

Une idée fausse commune est que XSLT transforme un XML sur un autre XML. En réalité, XSLT transforme un arbre en un autre arbre et, du moins en Java et .NET, vous n'êtes pas limité à XML.


Eh bien, il transforme un arbre XML, comme dans, un arbre où chaque branche a 1: attributs non ordonnés avec des valeurs textuelles. 2: Les enfants qui sont commandés et peuvent être à nouveau purement textuels ou autres. Avec les espaces de noms et toute cette merde. Cet arbores peut être représenté dans le texte dans la notation SGML habituelle de BLA ou par exemple comme (BLA (@ (FOO "))" BLA ") (SXML), je «Je ne suis pas au courant de XSLT effectuant des transformations efficaces sur n'importe quel arborescence non XML.



3
votes

intéressant que SharePoint 2010 a entièrement emparé XSLT. Xslt a des jambes ... la peur ne pas.


2 commentaires

SharePoint 2010 utilise XSLT ... V1. Je ne prendrais pas SharePoint comme référence pour les tendances futures.


Xslt est horrible, de même que SharePoint



3
votes

J'ai utilisé un cadre interne qui s'appuie sur XSLT pour produire tout ce qu'il est HTML (et terriblement RTF et d'autres formats également) et cela m'a laissé avec des opinions assez fortes sur le sujet.

XSLT est une excellente langue pour transformer un format XML en un autre où les deux sont bien définies.

Si vos données sources sont XML, il est pratique de la transformer en fragments XHTML, mais lorsque vous commencez à vous attacher à une template Territoire du moteur, les choses commencent à être un peu désordonnées.

Comme avec tout ce que c'est juste un outil et si vous l'utilisez pour ce que c'est bon, ça va bien fonctionner, si vous l'utilisez à chaque occasion, vous l'abusez probablement et si vous l'utilisez pour générer des fichiers RTF, vous " Regation d'un crime contre la nature.


2 commentaires

Vous pouvez même utiliser XSLT pour transformer XML en fichiers plats. CSV / largeur fixe ... assez indolore.


J'ai failli mentionné CSV comme un autre exemple de l'emmener de loin. Il peut être assez douloureux si vous l'essayez, le traitement de valeurs d'échappement n'est pas une tâche facile.



1
votes

Si votre préoccupation est que vos clients sont résistants / peu disposés à gérer XSLT (même si XSLT est une norme et est une technologie largement adoptée pour la transformation de XML), nécessitez-vous de lier votre produit spécifiquement sur XSLT pour les tâches de transformation XML? Si cela est possible (et indolore) de résumer les pièces de traduction XML / transformation XML appropriées dans votre cadre (c'est-à-dire XML dans → XML OUT), vous pourriez peut-être permettre différentes implémentations d'exécuter les mêmes tâches; Pas seulement XSLT, mais XQuery, Java (Sax + Dom), peu importe ...

Un tel design pourrait même être bénéfique si vous décidez jamais de fessoire du «format du diable» et d'adopter autre chose; -)

Edit: Bar, mais êtes-vous au courant de XPROC ?


0 commentaires

2
votes

XSLT est un ensemble de règles pour transformer un arbre en un autre arbre. Pour l'utiliser efficacement, pensez-y de cette façon.

Quelques avantages du XSLT pour moi:

  1. Chaque codeur HTML, je peux compter sur, peut écrire des transformations XSLT (je peux facilement externaliser le codage HTML), mais il n'y a pas beaucoup d'entre eux qui peuvent facilement traiter des contrôles ASP.NET, Mako Modèles, Django, JSP, Modèles Smarty et autres moteurs en même temps.
  2. Lorsqu'il est utilisé correctement XSLT est autonome. Je peux fournir le codeur HTML avec une entrée XML, négocier sur le processeur XSLT et développer des transformations XSLT séparées de l'application elle-même.
  3. L'environnement XSLT est de la boite de sable, le codeur HTML ne peut presque pas ouvrir un trou de sécurité lui-même.
  4. XSLT n'est pas lié à XML: vous pouvez écrire votre propre adaptateur pour livrer des données à XSLT et enregistrer votre propre gestionnaire de sortie. Ce n'est pas une option pour les solutions basées sur libxslt (PHP, Python).

    Mais cela signifie que vous ne devez pas casser la flexibilité. J'ai vu des environnements lorsque des cas complexes avec de nombreux effets secondaires ont été transmis à une transformation saxonne et que l'arborescence d'entrée n'a été utilisée que pour initier le processus. Il n'y avait aucun moyen de se développer séparément du serveur d'applications complexes et vous deviez déployer votre feuille de style pendant 5 minutes simplement pour voir si la sortie est correcte.

    upd upd : quelques meilleures pratiques de mine:

    La principale chose, comme je l'ai dit, est de garder la transformation XSLT séparée. LIBXSLT + EXSLT, MSXSL + Extensions natives, etc., devrait suffire à la transformation. Si XSLT manque quelques outils électriques, je préfère le faire dans le code d'appel et passer à la transfomation dans l'arborescence d'entrée.

    L'application doit construire un XML (ou un arbre) d'une structure prévisible (documentée). Pour chaque page, je suis intéressé par:

    1. Je génère un XML (ou écrivez-le manuellement s'il n'est pas encore facile à obtenir);
    2. Préparez le HTML résultant Je vais obtenir en tant que fichier statique distinct;
    3. Définissez une transformation XSLT (de plusieurs pages, cela peut être le même).

      Puis je mettais tout dans un VCS et crée un fichier de commandes pour appliquer à chaque XML le XSL correspondant, de sorte que le résultat écrasait les fichiers HTML statiques.

      En cours d'exécution SVN DIFF HTML-Dossier (ou similaire) me montrera si une transformation a cassé le HTML, et où exactement. Je fais des modifications dans XSL et exécutez à nouveau le lot. Une fois que le HTML est le même, je vous engage.

      Chaque modification de la structure de document XML doit permettre de mettre à jour les XML et XSLTS correspondants, de sorte que HTML reste le même. Chaque variation demandée dans HTML devrait conduire à la modification correspondante des XSLTS. Le codeur HTML peut fonctionner de manière isolée et je peux voir si quelque chose s'est mal passé.

      Les pages de l'application, où j'utilise le XSLT accepte généralement un paramètre d'obtention comme showInput = 1 pour ramener l'arborescence d'entrée nue sans transformation appliquée, de sorte que je puisse l'enregistrer et ajouter à VCS comme un autre cas particulier. < / p>

      Caching concrétissant, quand j'en ai besoin, je me cache généralement la page HTML Ready. Les pièces de pages modifiées fréquemment sont chargées avec des scripts client.


3 commentaires

Pouvez-vous commenter vos défis de développement avec le développement extérieur le serveur d'applications "... Il n'y avait aucun moyen de développer séparément du serveur d'applications complexes ..."


@Xepoch: Je ne suis pas sûr de ce que vous demandez: expliquer pourquoi il n'était pas facile de se développer dans un environnement étroitement couplé, ou sur les problèmes qui se posent lorsque vous développez XSLT séparément?


Eh bien, nous voulons atténuer la douleur au développement (comment le côté de la formation de cadre XSLT, pas la programmation-cadre), curieux de faire de vos recommandations sur la meilleure façon de le faire. Je suis un architecte décent et un pire programmeur (sommes-nous vraiment vraiment bons?), XSLT n'est pas mon costume personnel fort, alors j'apprécie tout ce qui aiderait à faciliter le déploiement et la facilité de test. Toute "meilleure pratique" (je déteste ce terme) que vous pourriez avoir :)



6
votes

La popularité des systèmes de gestion de contenu Web basés sur XSLT existants tels que Umbraco et Symphony (SharePoint a déjà eu une mention ici) offre de bonnes preuves sur la pertinence de XSLT pour un cadre Web.

Si quelque chose, XSLT est sur le haut. Il est bon de voir des solutions XML établies les entreprises qui l'adoptent toujours en chiffres, par exemple MarkLogic Ajout de capacités XSLT à leur Produit de base de données XML il y a quelque temps.

the Recommandation W3C XSLT-3.0 a été publiée en juin 2017, montrant continue d'intérêt et d'investissement dans l'avenir de XSLT.

Il existe également de nouvelles extensions open standard open utiles pour XSLT (et XQuery), telles que le Projet Expath dont les bibliothèques de fonction incluent de nombreuses fonctionnalités HTTP et ZIP.

[MISE À JOUR] Avec le lancement de SAXON-CE (maintenant Open Source), le traitement XSLT 2.0 peut maintenant être fait à la fois côté serveur et côté client. Cela donne également potentiellement 2,0 capacités aux cadres précédemment limités au XSLT 1.0.

Extensions de langue dans les modèles XSLT moyens Saxon-CE peut désormais être liés aux événements utilisateur à l'aide de simples xPaths et de «modes d'événement», il existe également une meilleure meilleure interopérabilité JavaScript en cas de besoin.


0 commentaires