viernes, mayo 25, 2007

XSLT Debugging?????? Si, y muy fácil



Si hace unos años me hablan de la posibilidad de debuggar .NET al nivel que se debuga ahora con Visual Studio, seguramente preguntaría "¿Qué es eso de .NET?".


Pues bien, en un momento en el que XML parece que se convierte en un standard de intercambio de información y en el que aparecen montones de tecnologías que, bien lo mejoran, bien lo complementan, bien hacen uso de él, voy poco a poco descubriendo herramientas que facilitan la vida.


Si hace poco descubrí la potencia de XSLT, ahora Visual Studio me sorprende con un debugger de XSLT.


¿¿¿Sorprendido??? Yo bastante... :-)




Primero, buscar el botón de XSLT Debugging.
En el menú: Tools-->Customize-->Pestaña de Commands. Busco la categoría de XML. Me aparecerán 4 posibles botones. Arrastro el “Debug XSLT” a la barra de herramienta. También vamos a arrastrar el “Show XSLT Output”, porque vamos a ver un pequeño “truco” al final.

Bien, ahora necesitamos un XSLT, lo abrimos. Doy al botón de debuggar XSLT y, si no tengo definido ningún XML que transformar, me pedirá que lo especifique. Lo selecciono marcando la ruta y ¡empieza la fiesta!

Se muestran dos ventanas: el XSLT y el XSLT output. El XSLT (poned puntos de interrupción, si no no vamos a ver nada… :-) ) aparecerá con la siguiente instrucción a debuggar.

Con F10 voy poco a poco navegando por las instrucciones y, a medida que los elementos HTML se van completando, irán apareciendo en la ventana de la derecha.
Por completar me refiero a, por ejemplo, tablas completas (no filas o columnas), labels, etc…

Si tenemos presente el XML y predecimos el flujo que debería seguir a lo largo de los Xsl:Otherwise y Xsl:If, podemos comprobar que el XSLT funciona como debe.

Mmmm ¿¿¿pero podría usar también la ventana de Watch para ver en que estado están las variables??? La respuesta es SÍ!!!
Pero no es tan facil como arrastrar la variable a la tabla. Ahora la ventana Watch entiende XPath. Es decir, si hay una tag en el XML que es Cliente/Nombre y quiero ver su valor, lo que debo hacer para comprobar que valor tiene ahora mismo esa variable es escribir en la ventana de Watch Cliente/Nombre/text()… XPath puro y duro…

Y también puedo comparar, buscar atributos…. Todo lo que XPath permite para consultar sus nodos. Ojo porque la ventana Watch no es una ventana para hacer queries contra el XML… porque analiza el XML según sonde está la ejecución del XSLT. Esto es, si estoy navegando por Empleados/Empleado, si accedo al nombre, será por medio de ./Nombre.

Y a partir de aquí, imaginación…

Un regalito, el botón de XSLT Output que hemos añadido antes abrirá la salida que produce el XSLT sin debuggar. La buena noticia, que vemos a la vez el XSLT y el resultado que produce. ¿La buenísima? Que lo que cambiemos en el XSLT se traduce directamente en el output.

Si es que programar está chupado….
Más fuentes:

No hay comentarios.: