---
title: Jak debugować transformacje XSLT i zapytania XQuery
date: 2022-04-13
categories:
  - development
  - software
  - xml
tags:
  - data-mapping
  - xml-editor
  - xmlspy
  - xquery
  - xslt
description: Film instruktażowy – zobacz, jak funkcja odwrotnego mapowania XSLT/XQuery ułatwia debugowanie XSLT i XQuery, poprzez podświetlanie źródłowego kodu XML oraz instrukcji XSLT/XQuery, które generują wynik.
---
Status: #blog

Tags:  #data-mapping #xml-editor #xmlspy #xquery #xslt

Categories: [development](/blog/pl/category/development.md) | [xsl](/blog/pl/category/xsl.md) | [xpath+xquery](/blog/pl/category/xpathxquery.md)
# 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](https://www.altova.com/pl/xmlspy-xml-editor#xslt_debugger) i [Debugger dla języka XQuery](https://www.altova.com/pl/xmlspy-xml-editor#xquery_debug) 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](https://www.altova.com/pl/xmlspy-xml-editor#xslt_back-mapping).

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 transformacji XSLT z wykorzystaniem odwrotnego mapowania ](/blog/images/v2017R3_backmapping.jpg)

<!--more-->

## 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.

![Debugowanie z wykorzystaniem odwrotnego mapowania zapytań XQuery](/blog/images/debug-xquery-backmapping.png)

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.

![Debugowanie transformacji XSLT z wykorzystaniem odwrotnego mapowania](/blog/images/debug-xslt-back-mapping.png)

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](https://www.altova.com/pl/xmlspy-xml-editor#xslt_back-mapping) 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.

![](https://www.youtube.com/watch?v=lK1EDLbxxyo)
