2012-02-22 31 views
49

¿Qué implica la actualización de XSLT 1.0 a 2.0?
1 - ¿Cuáles son las posibles razones para actualizar?
2 - ¿Cuáles son las posibles razones para NO actualizar?
3 - Y finalmente, ¿cuáles son los pasos para actualizar?Actualización de XSLT 1.0 a XSLT 2.0

que estoy esperando un resumen ejecutivo - la versión corta :)

Respuesta

96

¿En qué consiste la actualización de XSLT 1,0 a 2,0?

1 - ¿Cuáles son las posibles razones para actualizar?

Si usted es un programador de XSLT se beneficiará en gran medida de la XSLT más conveniente y expresivo lenguaje de 2.0 + 2.0 XPath y el nuevo XDM (XPath Modelo de Datos).

Es posible que desee ver esto XSLT 2.0 Pluralsight course para obtener una comprensión firme y sistemática de la potencia de XSLT 2.0.

tiene:

  • tipificación estricta y todo tipo XSD disponible.

  • La capacidad de definir sus propios tipos (esquema).

  • el tipo de secuencia XPath 2.0 que no tiene ninguna contraparte (simplemente falta) en XPath 1.0.

  • La capacidad de definir y escribir funciones en XSLT pura - la instrucción xsl:function.

  • Variables de rango en expresiones XPath (la cláusula for).

  • Mucho mejor y más potente procesamiento de cadenas - XPath 2.0 soporta expresiones regulares en sus funciones tokenize(), matches() y replace().

  • Mucho mejor y más potente procesamiento de cadenas - XSLT 2.0 con soporte para expresiones regulares - los xsl:analyze-string, y xsl:matching-substringxsl:non-matching-substring nuevas instrucciones XSLT.

  • Agrupación más conveniente, potente y expresiva: la instrucción xsl:for-each-group.

  • Muchas nuevas y potentes funciones XPath 2.0, como las funciones de fecha, hora y duración, solo por nombrar algunas.

  • Los nuevos operadores XPath intersect, except, is, >>, <<, some, every, instance of, castable as, ..., etc.

  • El XPath general, los operadores >, <, etc.ahora funciona en cualquier tipo de valor ordenado (no solo en números como en XPath 1.0).

  • nuevas, el valor más seguro operadores de comparación: lt, le, eq, gt, ge, ne.

  • El XPath 2.0 to operador, lo que permite tener xsl:for-each select="1 to $N"

Estos, y muchas otras mejoras/nuevas características aumentan significativamente la productividad de cualquier programador XSLT, que permite el desarrollo XSLT 2.0 para ser terminado en una una pequeña fracción del tiempo necesario para desarrollar los mismos módulos con XSLT 1.0.

El tipado fuerte permite capturar muchos errores en tiempo de compilación y corregirlos inmediatamente. Para mí, esta fuerte seguridad de tipo es la mayor ventaja de usar XSLT 2.0.

2 - ¿Cuáles son las posibles razones para NO actualizar?

  • A menudo es posible, razonable y rentable para salir existente, XSLT legado 1.0 aplicaciones sin tocar y seguir usando con XSLT 1.0, mientras que al mismo tiempo el desarrollo de sólo nuevos aplicaciones que utilizan XSLT 2.0.

  • Su gestión + cualquier otra razón no técnica.

  • Tener muchas aplicaciones heredadas de XSLT 1.0 escritas en un estilo pobre (por ejemplo, usar DOE o funciones de extensión que ahora necesitan ser reescritas y el código refactorizado).

  • No tiene disponible un procesador XSLT 2.0.

3 - Y, finalmente, ¿cuáles son los pasos para la actualización?

  • En el atributo version del elemento xsl:stylesheet o xsl:transform"1.0"-"2.0".

  • Elimine las funciones xxx:node-set().

  • Eliminar cualquier DOE.

  • estar listo para la sorpresa que ahora xsl:value-of no emite sólo el principio, pero todos los elementos de una secuencia.

  • Intente utilizar la nueva instrucción xsl:sequence tanto como sea posible; úselo para reemplazar cualquier instrucción xsl:copy-of; Úselo en lugar de xsl:value-of en cualquier momento cuando el tipo de salida no sea cadena o nodo de texto.

  • Pruebe ampliamente.

  • Cuando las pruebas hayan verificado que el código funciona como se espera, comience a refactorizar (si es necesario). Es una buena idea declarar tipos para cualquier variable, parámetro, plantilla y función. Hacerlo puede revelar errores nuevos y ocultos, y corregirlos aumenta la calidad de tu código.

  • Opcionalmente, decida qué plantillas con nombre reescribir como xsl:function.

  • Decida si aún necesita algunas funciones de extensión que se usan en la versión anterior, o puede reescribirlas fácilmente utilizando las nuevas y poderosas capacidades de XSLT.

Observaciones finales: No todos los pasos anteriores son necesarios y se puede parar y declarar el éxito de la migración en cero resultados de prueba de errores. Es mucho más limpio comenzar a usar todas las características de XSLT 2.0/XPath 2.0 en los proyectos nuevos.

+1

Gracias por la gran visión general, Dimitre (+1). Por lo que puedo decir, uno debe elegir entre un procesador de la versión 1 o la versión 2: no puede tener ambos y enrutar los documentos al apropiado (corríjanme si me equivoco). Con un sitio corporativo importante (en el que todo el trabajo debe encajar) en ASP.NET y jQuery, ¿hay un procesador XSLT 2.0 que sea más apropiado? – Witman

+1

@Witman: De nada. El enrutamiento a diferentes procesadores de versiones es fácil de hacer y no debería ser un problema. XSLT 2.0 * puede * funcionar en * modo de compatibilidad hacia atrás * pero esto no es exactamente lo mismo que el procesamiento con un procesador XSLT 1.0. En la actualidad hay dos procesadores XSLT 2.0 que son aptos para .NET - Saxon.NET y XmlPrime (XQSharp). Saxon también tiene una versión del procesador XSLT 2.0 que se puede utilizar desde el lado del cliente, dentro de un navegador, esta es la CE de Saxon. Creo que debe ser tu decisión, debes probar Saxon.NET (y CE) y XmlPrime y luego tomar una decisión informada. –

+1

Gracias por la aclaración sobre enrutamiento a diferentes procesadores y sugerencias de procesador. (+1) – Witman

27

La respuesta de Dimitre es muy completa y 100% precisa (como siempre) pero hay un punto que agregaría. Al actualizar a un procesador 2.0, tiene la opción de dejar el atributo de versión establecido en "1.0" y ejecutarlo en "modo de compatibilidad con versiones anteriores", o cambiar el atributo de versión a "2.0". La gente a menudo pregunta qué enfoque se recomienda.

Mi consejo es que, si tienes un buen conjunto de pruebas para tus hojas de estilo, da el paso decisivo: establece la versión = "2.0", ejecuta las pruebas y, si hay algún problema, corrígelas. Usualmente los problemas serán un código que nunca fue del todo correcto y solo funcionó por accidente. Pero si no tiene un buen conjunto de pruebas y le preocupa la confiabilidad de su carga de trabajo, entonces dejar version = "1.0" es un enfoque de menor riesgo: el procesador emulará todas las peculiaridades de XSLT 1.0, como xsl: value-ignorando todo excepto el primer elemento, y las reglas extrañas para comparar números con cadenas.