59 votes

Mise à niveau de XSLT 1.0 vers XSLT 2.0

En quoi consiste la mise à niveau de XSLT 1.0 à 2.0?
1 - Quelles sont les raisons possibles de la mise à niveau?
2 - Quelles sont les raisons possibles pour NE PAS mettre à jour?
3 - Et enfin, quelles sont les étapes pour la mise à niveau?

J'espère un résumé - la version courte :)

111voto

Dimitre Novatchev Points 147842

Ce qui est impliqué dans la mise à niveau de XSLT 1.0 à 2.0?

1 - Quelles sont les raisons possibles de la mise à niveau?

Si vous êtes un XSLT programmeur, vous bénéficierez en grande partie de la plus pratique et plus expressif XSLT 2.0 langue + XPath 2.0 et le nouveau XDM (Modèle de Données XPath).

Vous avez:

  • Typage fort et tous les types XSD disponibles.

  • La possibilité de définir vos propres (schéma) types.

  • le XPath 2.0 type de séquence qui n'ont pas de contrepartie (simplement manquante) dans XPath 1.0.

  • La capacité de définir et d'écrire des fonctions dans le plus pur XSLT -- l' xsl:function enseignement.

  • Portée des variables dans les expressions XPath (l' for de la clause).

  • Beaucoup mieux et plus puissant de la chaîne de traitement, XPath 2.0 prend en charge les expressions régulières dans ses tokenize(), matches() et replace() fonctions.

  • Beaucoup mieux et plus puissant de la chaîne de traitement, XSLT 2.0, support des expressions régulières -- l' xsl:analyze-string, xsl:matching-substring et xsl:non-matching-substring de nouvelles instructions XSLT.

  • Plus pratique, puissant et expressif, de regroupement: l' xsl:for-each-group enseignement.

  • Beaucoup de nouveaux, très puissant XPath 2.0 fonctions, telles que les fonctions sur la date, l'heure et la durée, pour n'en nommer que quelques-uns.

  • La nouvelle les opérateurs XPath intersect, except, is, >>, <<, some, every, instance of, castable as, ..., etc.

  • Le général les opérateurs XPath >, <, etc. maintenant travailler sur a commandé le type de valeur (pas seulement sur des nombres, comme dans XPath 1.0).

  • Nouveau, plus sûr de la valeur pour les opérateurs de comparaison: lt, le, eq, gt, ge, ne.

  • Le XPath 2.0 to de l'opérateur, ce qui permet de xsl:for-each select="1 to $N"

Ces et beaucoup d'autres améliorations ou de nouvelles fonctionnalités, d'augmenter significativement la productivité de toute XSLT programmeur, ce qui permet de XSLT 2.0 de développement pour être fini en une petite fraction du temps nécessaire pour développer les mêmes modules avec XSLT 1.0.

Typage fort permet à de nombreuses erreurs d'être pris au moment de la compilation et à être corrigée immédiatement. Pour moi, ce type fort-sécurité est le plus grand avantage de l'utilisation de XSLT 2.0.

2 - Quelles sont les raisons pour ne PAS la mise à niveau?

  • Il est souvent possible, raisonnable et efficace de laisser existants, héritage XSLT 1.0 applications intacte et de continuer à les utiliser avec XSLT 1.0, alors que dans le même temps, ne développant que de nouvelles applications à l'aide de XSLT 2.0.

  • Votre gestion + tout autre des raisons non techniques.

  • Le fait d'avoir beaucoup d'anciens XSLT 1.0 applications écrites dans un style pauvres (par exemple, à l'aide de BICHE ou de l'extension des fonctions qui doivent maintenant être ré-écrit et le code refactoring).

  • N'ayant pas à disposition un processeur XSLT 2.0.

3 - Et enfin, quelles sont les étapes pour la mise à niveau?

  • Modifier l' version attribut de l' xsl:stylesheet ou xsl:transform élément d' "1.0" de "2.0".

  • Supprimer tout xxx:node-set() fonctions.

  • Supprimer tout DOE.

  • Être prêt pour la surprise qu' xsl:value-of maintenant sorties et pas seulement le premier, mais tous les éléments d'une séquence.

  • Essayez d'utiliser le nouveau xsl:sequence autant que possible les instructions -- l'utiliser pour remplacer n'importe xsl:copy-of instructions; utiliser à la place de xsl:value-of tout moment lorsque le type de la sortie n'est pas de chaîne ou nœud de texte.

  • Tester intensivement.

  • Lorsque le test est vérifié que le code fonctionne comme prévu, début de refactoring (si nécessaire). C'est une bonne idée de déclarer des types pour toutes les variables, les paramètres, les modèles et les fonctions. Cela peut révéler de nouvelles, caché des erreurs et en les corrigeant augmente la qualité de votre code.

  • En option, choisissez les modèles nommés à réécrire comme xsl:function.

  • Décidez si vous avez encore besoin de quelques fonctions d'extension qui sont utilisés dans l'ancienne version, ou vous pouvez réécrire facilement à l'aide de la nouvelle, de puissantes capacités de transformation XSLT.

Remarques finales: toutes les étapes ci-dessus sont nécessaires et on peut l'arrêter et de le déclarer à la migration réussie sur le zéro bug résultats des tests. Il est beaucoup plus propre pour commencer à utiliser tous XSLT 2.0/XPath 2.0 dispose dans de nouveaux projets.

28voto

Michael Kay Points 52194

Dimitre la réponse est très complet et précis à 100% (comme toujours), mais il y a un point que je voudrais ajouter. Lorsque la mise à niveau vers un 2.0 processeur, vous avez le choix de laisser la version attribut "1.0" et en "mode de compatibilité descendante", ou la modification de l'attribut version "2.0". Les gens demandent souvent, l'approche qui est recommandé.

Mon conseil, si vous avez une bonne série de tests pour vos feuilles de style, le grand plongeon: jeu version="2.0", exécutez les tests, et si il ya des problèmes, les résoudre. Habituellement, les problèmes de code qui n'a jamais été tout à fait à droite dans la première place et a travaillé seulement par accident. Mais si vous n'avez pas une bonne série de tests et sont préoccupés par la fiabilité de votre charge de travail, puis de quitter version="1.0" est un faible risque approche: le processeur sera alors émuler toutes les bizarreries de XSLT 1.0, comme xsl:value-of en ignorant tous, mais le premier élément, et les règles étranges pour comparer des nombres avec des chaînes.

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