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. P>
Alors que nous interviewons pour des postes aussi, parlant à des clients potentiels, ils aiment le concept de ce qu'il fera mais sont 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 forts> qui rendent cette entreprise quelque chose qui vaut la peine de réexaminer? P>
7 Réponses :
rien de vraiment faux avec elle ... p>
Mais en fonction de ce que vous faites, cela peut ne pas vous fournir suffisamment de crochets pour faire ce que vous voulez. p>
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. P>
On n'a jamais vraiment entendu me plaindre des problèmes de Saxon en tant que mise en œuvre XSLT. P>
Peut-être que vous regardez dans SXML, SXSLT, SXPath et cetera vaut la peine d'être envisagé. P>
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 em>, 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. P >
XML a ce que certaines personnes appellent cependant des défauts de conception. P>
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
intéressant que SharePoint 2010 a entièrement emparé XSLT. Xslt a des jambes ... la peur ne pas. P>
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
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. P>
XSLT est une excellente langue pour transformer un format XML en un autre où les deux sont bien définies. P>
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. P>
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. P>
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.
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 ... P>
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; -) p>
Edit: Bar, mais êtes-vous au courant de XPROC A >? P>
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. P>
Quelques avantages du XSLT pour moi: P>
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. P>
upd upd strong>: quelques meilleures pratiques de mine: p>
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. P>
L'application doit construire un XML (ou un arbre) d'une structure prévisible (documentée). Pour chaque page, je suis intéressé par: p>
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. P>
En cours d'exécution 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é. P>
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. P>
SVN DIFF HTML-Dossier Code> (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. P>
Pouvez-vous commenter vos défis de développement avec le développement extérieur i> 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 :)
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. P>
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. P>
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. P>
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. P>
[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. p>
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. P>
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