Jak debugować transformacje XSLT i zapytania XQuery

Nic nie jest bardziej frustrujące niż uzyskiwanie nieoczekiwanych wyników podczas transformacji XSLT lub zapytań XQuery i konieczność spędzania godzin na diagnozowaniu problemu – zwłaszcza jeśli projekt został przejęty od innego programisty lub nie przeglądałeś kodu od kilku miesięcy. Oczywiście, XMLSpy od dawna oferuje Debugger XSLT i Debugger dla języka XQuery do ustawiania punktów przerwania i przechodzenia krok po kroku przez transformacje, w celu identyfikacji problemów.

Aby zapewnić bardziej interaktywny proces debugowania, XMLSpy oferuje również funkcję odwrotnego mapowania XSLT/XQuery.

Po włączeniu funkcji "odwrotnego mapowania", wystarczy kliknąć lub przybliżyć kursor do fragmentu dokumentu wynikowego, który chcesz przeanalizować, a XMLSpy natychmiast wyróżni odpowiadający mu fragment kodu XML oraz instrukcję XSLT lub XQuery, która jest za to odpowiedzialna. Przyjrzyjmy się, jak to działa.

Debugowanie XSLT i XQuery z wykorzystaniem odwrotnego mapowania

Ponieważ dokumenty XSLT i XQuery często są długie i złożone, może być trudno zidentyfikować źródło nieoczekiwanych wyników. W celu precyzyjnego debugowania, funkcja "back-mapping" umożliwia natychmiastowe zidentyfikowanie, które węzły i instrukcje odpowiadają za generowane wyniki.

Po włączeniu funkcji odwrotnego mapowania, transformacje XSLT i wykonywanie zapytań XQuery odbywają się w taki sposób, aby wynikowy dokument mógł zostać ponownie dopasowany do oryginalnych dokumentów XSLT+XML lub XQuery+XML. Po najechaniu kursorem na fragment w wynikowym dokumencie, instrukcja XSLT/XQuery oraz dane XML źródłowe dla tego konkretnego elementu będą wyróżnione.

Spróbujmy. Przed rozpoczęciem transformacji XSLT lub XQuery, kliknij przycisk „Włącz odwrotne mapowanie” na pasku narzędzi XMLSpy.

XMLSpy oferuje możliwość rozmieszczenia dokumentów źródłowych i wynikowych w formie kafelków, co pozwala na łatwe porównywanie powiązanych elementów w jednym oknie. Następnie należy uruchomić transformację.

W transformacji XSLT pokazanej poniżej, przesunąłem kursorem nad jednym z przycisków radiowych w dokumencie wynikowym, wyświetlanym w trybie przeglądarki, a program XMLSpy automatycznie wyróżnił odpowiadający mu węzeł źródłowy oraz instrukcję w dokumentach XML i XSLT.

Proces ten działa w ten sam sposób zarówno w trybie wyświetlania tekstu, jak i podczas generowania wyników dla XSLT i XQuery – wystarczy wybrać fragment dokumentu wynikowego, który chcesz przeanalizować.

Możliwość prostego kliknięcia w wynik, aby zidentyfikować jego źródło, to ogromna oszczędność czasu podczas testowania i debugowania kodu XSLT i XQuery. Co najważniejsze, XMLSpy umożliwia odwzorowanie wsteczne bez wprowadzania jakichkolwiek zmian w dokumencie wynikowym.

Obejrzyj ten krótki film, który pokazuje, jak to działa zarówno w przypadku XSLT, jak i XQuery.