Visualizar entrada XML desde un filtro XSLT

BizagiBizagi es un software de modelación de procesos que utiliza BPMN como notación. Tiene una versión gratuita que permite la diagramación de procesos, edición de subprocesos, agregar comentarios a cada nodo, entre otras características. Pagando un cierto monto se añaden capacidades de ejecutar los procesos modelados, pudiendo hacer un seguimiento de resultados y de las distintas instancias siendo manejadas.

Dentro de la pura diagramación de procesos, una buena funcionalidad de la herramienta es la exportación. Por ejemplo, es posible llevar los diagramas a páginas web que puedan ser publicadas, donde cada nodo puede navegarse hacia sus respectivos subprocesos, por ejemplo. Lo mismo se puede lograr exportando a MediawikiMediawiki, el motor detrás de Wikipedia que puede utilizarse de manera privada.

Es en la exportación a Mediawiki donde es posible toparse con algunos problemas. Como referencia, los datos que el wizard solicita para poder conectarse con Mediawiki y hacer la inserción de los artículos e imágenes relacionadas son:

  • Servidor: se debe indicar el URL del wiki, por ejemplo, “miwiki.dominio.com:80/directorio/”.
  • User: usuario del wiki con que se autentificará para hacer la inserción
  • Password: la contraseña correspondiente.

 

Al trabajar con un filtro XSLT a veces resulta muy útil poder ver el XML que se está procesando como parte de la salida generada por dicho filtro. Esto se da comunmente en situaciones en que no tenemos control claro sobre este XML, pudiendo únicamente modificar el XSL, especialmente cuando no tenemos claro la forma en que se está generando la salida.

 

Para visualizar la entrada en un XSLT que está sacando HTML, podemos agregar un TEXTAREA con el XML agregando una instrucción <xsl:copy-of>, la que permite tomar una parte o todo el XML y copiarlo tal cual. Por ejemplo, podríamos dejar el primer <xsl:template> en ser procesado como:

<xsl:template match="nav:site">
	<textarea cols="80" rows="40">
		<xsl:copy-of select="//nav:site" />
	</textarea>
...
</xsl:template>

Se debe poner atención en la expresión XPath utilizada en el copy-of, de modo de obtener la parte del XML que se desea. En este ejemplo, sacado de un procesamiento de Lenya+Cocoon, estamos obteniendo la entrada completa dado que el XML correspondiente tiene como elemento root un <nav:site>.