Como depurar XSLT e XQuery

Não há nada mais frustrante do que obter resultados inesperados numa transformação XSLT ou XQuery e ter de passar horas a tentar identificar o problema – especialmente se herdou o projeto de outro programador ou não tem consultado o código há alguns meses. Naturalmente, o XMLSpy já inclui um depurador XSLT e um depurador XQuery que permitem definir pontos de interrupção e percorrer as transformações para identificar problemas.

Para um processo de depuração mais interativo, o XMLSpy também inclui: Mapeamento inverso XSLT/XQuery.

Com o recurso de rastreamento reverso ativado, pode simplesmente clicar ou passar o cursor sobre a parte do seu documento de saída que pretende analisar, e o XMLSpy irá imediatamente destacar o código XML de origem e a instrução XSLT ou XQuery responsável. Vamos ver como funciona.

Depuração de XSLT e XQuery com mapeamento inverso

Como os documentos XSLT e XQuery são frequentemente longos e complexos, pode ser difícil identificar a origem de resultados inesperados. Para uma depuração mais precisa, a função de "back-mapping" permite visualizar imediatamente quais nós e instruções estão a gerar o resultado.

Com o recurso de "back-mapping" ativado, as transformações XSLT e as execuções XQuery são realizadas de forma que o documento resultante possa ser mapeado de volta para os documentos XSLT+XML ou XQuery+XML de origem. Quando o utilizador passa o cursor sobre uma secção no documento resultante, a instrução XSLT/XQuery e os dados XML de origem correspondentes a esse nó serão destacados.

Vamos experimentar. Antes de iniciar uma transformação XSLT ou XQuery, clique no botão "Ativar Mapeamento Inverso" na barra de ferramentas do XMLSpy.

O XMLSpy oferece a opção de organizar os documentos de origem e de saída em mosaico, para que possa visualizar facilmente os elementos relacionados numa única janela. Em seguida, execute a transformação.

Na transformação XSLT mostrada abaixo, passei o cursor sobre um dos botões de opção no documento de saída, na visualização do navegador, e o XMLSpy destacou automaticamente o nó e a instrução correspondentes nos documentos XML e XSLT.

O processo é o mesmo na visualização de texto, tanto para a saída XSLT como para a saída XQuery: basta selecionar a parte do documento de saída que pretende analisar.

A capacidade de clicar diretamente no resultado para identificar a sua origem representa uma enorme poupança de tempo para testar e depurar código XSLT e XQuery. O melhor de tudo é que o XMLSpy consegue realizar o mapeamento inverso sem modificar o seu documento de saída de qualquer forma.

Veja como isto funciona tanto para XSLT como para XQuery neste vídeo curto que demonstra o processo.