Actualización de XSLT 1.0 a XSLT 2.0
xslt-2.0 xslt-1.0 (2)
¿Qué implica la actualización de XSLT 1.0 a 2.0?
1 - ¿Cuáles son las posibles razones para actualizar?
Si usted es un programador XSLT, se beneficiará en gran medida del lenguaje XSLT 2.0 + XPath 2.0 más expresivo y más conveniente y del nuevo XDM (modelo de datos XPath).
Es posible que desee ver este curso XSLT 2.0 Pluralsight para obtener una comprensión firme y sistemática del poder de XSLT 2.0 .
Tienes:
Mecanografía fuerte y todos los tipos de XSD disponibles.
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 puro - la instrucción
xsl:function
.Variables de rango en expresiones XPath (la cláusula
for
).Procesamiento de cadenas mucho mejor y más potente: XPath 2.0 admite expresiones regulares en sus funciones
tokenize()
,matches()
yreplace()
.Procesamiento de cadenas mucho mejor y más potente: compatibilidad con XSLT 2.0 para expresiones regulares
xsl:analyze-string
,xsl:matching-substring
yxsl:non-matching-substring
nuevas instrucciones XSLT.Agrupación más conveniente, potente y expresiva: la instrucción
xsl:for-each-group
.Muchas funciones XPath 2.0 nuevas y muy potentes, como las funciones de fecha, hora y duración, solo por nombrar algunas.
Los nuevos operadores XPath se
intersect
,except
,is
,>>
,<<
,some
,every
instance of
,castable as
, ..., etc.Los operadores XPath generales
>
,<
, etc. ahora funcionan en cualquier tipo de valor ordenado (no solo en números como en XPath 1.0).Nuevos operadores de comparación de valores más seguros:
lt
,le
,eq
,gt
,ge
,ne
.El operador XPath 2.0
to
, que permite tenerxsl:for-each select="1 to $N"
Estas y muchas otras mejoras / nuevas características aumentan significativamente la productividad de cualquier programador XSLT, lo que permite que el desarrollo de XSLT 2.0 finalice en una pequeña fracción del tiempo necesario para desarrollar los mismos módulos con XSLT 1.0.
El tipado fuerte permite atrapar muchos errores en tiempo de compilación y corregirse de inmediato. 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 dejar intactas las aplicaciones heredadas de XSLT 1.0 y continuar usándolas con XSLT 1.0, mientras que al mismo tiempo desarrolla solo nuevas aplicaciones usando 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 tener disponible un procesador XSLT 2.0.
3 - Y finalmente, ¿cuáles son los pasos para actualizar?
Cambie el atributo de
version
del elementoxsl:stylesheet
oxsl:transform
de"1.0"
a"2.0"
.Elimine cualquier función
xxx:node-set()
.Eliminar cualquier DOE.
Prepárese para la sorpresa que
xsl:value-of
ahora produce no solo el primero, sino todos los elementos de una secuencia.Intente utilizar la nueva instrucción
xsl:sequence
tanto como sea posible;xsl:copy-of
para reemplazar cualquier instrucciónxsl:copy-of
; Úselo en lugar dexsl:value-of
cualquier momento cuando el tipo de salida no sea cadena o nodo de texto.Prueba extensamente.
Cuando las pruebas hayan verificado que el código funciona como se espera, comience la refactorización (si se considera 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 nombradas reescribir como
xsl:function
.Decida si todavía 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 uno puede detenerse y declarar la migración exitosa 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 nuevos proyectos.
¿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?
Espero un resumen ejecutivo, la versión corta :)
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: 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.