XSLT en AiR
Aunque no salga en la lista de prestaciones, AIR soporta de forma indirecta la transformación de XML’s a través de XSLT’s. El kit de la cuestión recae en el uso del componente HTML o mejor aún de HTMLLoader, teniendo en cuenta que el componente HTML es un wrapper de HTMLLoader en Flex.
El componente HTMLLoader lo que hace es delegar la interpretación y renderizado de código html en WebKit (el core de Safari). Y es este, WebKit, el que por sí mismo soporta XSLT de una forma muy sencilla.
A continuación muestro una pequeña prueba de concepto de cómo poder invocar xslt’s contra xml’s a través de una pequeña clase.
En el navegador, una forma de aplicar xslt a un xml directamente sería hacer lo siguiente:
-
Creamos el xml que queremos transformar (model.xml)
-
Creamos la xlst que queremos (transformacion.xsl)
- Aplicamos la xlst al xml mediante una processing instruction del estilo <?xml-stylesheet href=”transformacion.xsl” type=”text/xsl” ?>
Si cargamos modelo.xml en un navegador, éste parseará el xml y le aplicará la xslt indicada en la processing instruction dando como resultado un html (que es el que visualizaremos en el navegador).
Una de las funcionalidades que no podemos olvidar de HTMLControl es que es operativo aunque no esté incluido en la displayList. Podemos crear una clase que, usando un HTMLLoader pero sin representarlo visualmente, intercepte el XML, le añada la processing instruction y que capture el html resultante.
Este sería el circuito normal. Mediante HTMLLoader.loadString podemos cargar en el componente un xhtml generado al vuelo (el que queramos concatenado con la processing instruction). El problema de esto es que por algún extraño motivo, loadString no carga la xsl de transformación. Pero sí que funciona utilizando html.load (). Para paliar este comportamiento anómalo la siguiente clase lo que hace es crear un fichero temporal (que después se elimina) y que es el que el HTMLLoader cargará.
A continuación se muestra la clase XSLTProcessor.as
Una forma de usarlo sería desde una aplicación AIR basada en Flex:
Aún y tratarse de una aplicación funcional la clase anterior es una prueba de concepto que casi no he probado. La xsl es un poco chorra, pero es la primera que he encontrado en google.
La verdad que se me ocurren bastantes circunstancias en las que una xsl puede simplificar mucho un desarrollo. No sólo tenemos que pensar en las xsls como una herramienta para la capa de presentación, también podemos usarlas para transformar, adaptar o preparar modelos de datos: por ejemplo ordenación de árboles xml, agrupación, etc.
Acerca de esta entrada
Usted está leyendo “XSLT en AiR,” una entrada de MadeInFlex
- Autor: Xavi Beumala
Xavi es un Arquitecto de Aplicaciones RIA basadas en la Plataforma Flash. Especializado en aplicaciones colaborativas en tiempo real, e-learning y CMS (Content Management Systems) utiliza Flex, FMS y Java principalmente.
- URL del Autor:
- http://www.code4net.com
- Publicada:
- 31.03.08 / 11pm
- Categorías:
- AIR (Apollo), Artículos, Componentes
- Entradas relacionadas:
- AIR: Domifying Flex
- Número de visitas:
- 3769
2 Comentarios
Ir al formulario de comentarios | rss (comentarios) [?] | trackback url [?]