2011-10-04 19 views
14

Necesito un mecanismo de plantillas para las páginas html incluidas con mi aplicación. Al principio miré todas las soluciones de plantillas javascript (como las plantillas jQuery), pero como mis datos de entrada son XML, de repente recordé XSLT nuevamente. Encontré decenas de libaries, pero ninguno parecía hacer uso de XSLT, así que me olvidé por completo de su existencia, y lo útil que es para crear plantillas.Plantillas: XSLT contra jQuery

Entonces, ¿el XSLT se desaprobó lentamente y se eliminó por las alternativas de JavaScript? Leí en algún lado que XSLT era demasiado complicado para la mayoría de los usuarios, pero ¿es ése el único inconveniente o hay más contras?

Actualización: puedo pensar en una desventaja a mí mismo: con XSLT la página completa tiene que ser analizada/rendido antes de mostrar cualquier cosa para el usuario, y con el Javascript la página ya es visible y se rellenan los elementos que faltan después.

+3

La mayor "estafa" es que XSLT puede dar una arruga inesperada a un cerebro plano. :) –

+1

Muy buen comentario allí! desde el uso de xslt cada otra opción parece tan larga aliento: P aunque la navaja parece que vale la pena considerar. ¡no olvide que todavía puede usar scripts en sus plantillas! – Treemonkey

Respuesta

7

XSLT es una buena solución para la creación de plantillas. El lenguaje y la sintaxis son un poco inusuales: "elegir/cuándo" en lugar de "caso/cambio" es un ejemplo evidente, pero hace bien su trabajo.

La principal ventaja de XSLT es que no necesita JavaScript para usarlo; compilarlo correctamente y cada navegador principal lo renderizará como HTML, ya sea que JS esté habilitado o no. Puede ser más fácil en el procesador que las soluciones de JavaScript, aunque no conozco a nadie que haya probado esto. También es la elección obvia si ya está tratando con datos XML, como usted.

La desventaja es que es una tecnología (relativamente) antigua que ha sido abandonada en gran medida, y aunque los navegadores aún la soportan, no han avanzado con ella. Firefox tiene un problema con el escape de HTML que tienen no intention of fixing, y Chrome tiene a pretty major problem with @includes. IE aparentemente está actualizado, pero eso solo se aplica a la última versión.

El resultado es que si desea usar XSLT, debe probarlo en todos los navegadores principales y solucionar los errores, a pesar de que la tecnología existe desde al menos 2006. De ninguna manera obsoleto, simplemente no es muy popular porque no es tan compacto o fácil de leer como, por ejemplo, las plantillas JSON + jQuery.

+1

Creo que voy a renderizarlo en el lado del servidor. Para el rendimiento, no importa porque el código del servidor/cliente se ejecuta en la misma máquina ya que es una aplicación de escritorio, pero evita problemas específicos del navegador como el que usted mencionó. – Muis

0

Renderizar XSLT en el navegador tiene algunos caprichos extraños específicos del navegador. Prefiero usar plantillas de jQuery si necesito renderizar datos en el lado del cliente.

En el lado del servidor, XSLT es una gran herramienta con soporte para muchos lenguajes de programación (al menos para XSLT 1.0, para XSLT 2.0 solo se puede elegir entre Java y .NET). Así que tal vez pueda tener algún tipo de middleware que reciba la solicitud del lado del cliente, la pase al servicio web o lo que sea que esté generando el XML, la presente como HTML con una hoja de estilo XSLT y pase el resultado HTML al navegador. Si su escenario específico permite el almacenamiento en caché en la capa de middleware, su aplicación también será más rápida ya que el cliente no tiene que procesar las plantillas de jQuery o XSLT.

+0

Pero no puede almacenar en caché los datos dinámicos, excepto por usuario y vista. – Andrew

8

XSLT es una transformación XML moderna y un lenguaje de programación funcional. La próxima versión 3.0 admite nativamente (junto con XPath 3.0) funciones de orden superior, entre otras características nuevas.

XSLT no es "viejo" (poca gente sabe XSLT 2.0 o son conscientes de que XSLT 3.0 se está trabajando por el W3C XSLT WG).

XSLT en el navegador tenía una reciente gran impulso hacia adelante por Saxon CE - un procesador XSLT recortada 2.0 que se compila de Java a JavaScript y está disponible en el cliente en los cinco principales navegadores.@Michael Kay incluso demoed XSLT 2.0 ejecutando el lado del cliente en su iPhone ...

+0

¿Alguna idea de si Microsoft tiene previsto admitir XSLT 2.0 en sus plataformas de desarrollo? –

+0

Para las transformaciones del lado del servidor todavía puede ser utilizado, pero para el lado del cliente no puedo encontrar a nadie que lo use. El único sitio grande que lo usa fue el portal Blizzard WoW, e incluso dejaron de usarlo. Además, cuando busqué algo similar a XSLT, a excepción de los datos JSON, no había nada que encontrar (salvo alguna prueba de conceptos). Entonces, si el concepto sigue vivo, ¿por qué nadie desarrolló algo similar para JSON? – Muis

+1

JSON está diseñado para datos compactos, mientras que XML se supone que sirve para marcar documentos completos. No completan el mismo nicho. – Blazemonger

-1

Aquí está el ejemplo para cargar XML y XSL y realizar la transformación en Javascript. http://www.w3schools.com/xsl/xsl_client.asp

A veces no es posible importar XSLT en documentos XML, por ejemplo, obtener XML de terceros y usar su transformación XSLT a HTML y renderizar en el navegador.

Cuestiones relacionadas