Przewodnik: debugowanie arkusza stylów XSLT
Kroki opisane w tym przewodniku pokazują, jak używać debugera XSLT. Kroki obejmują wyświetlanie zmiennych, ustawianie punktów przerwania i przechodzenie przez kod. Debuger umożliwia wykonywanie kodu po jednym wierszu naraz.
Aby przygotować się do tego przewodnika, najpierw skopiuj dwa przykładowe pliki na komputer lokalny. Jednym z nich jest arkusz stylów, a drugi to plik XML, którego będziemy używać jako danych wejściowych w arkuszu stylów. W tym przewodniku używany arkusz stylów znajduje wszystkie książki, których koszt jest niższy od średniej ceny książki.
Uwaga
Debuger XSLT jest dostępny tylko w wersjach Professional i Enterprise programu Visual Studio.
Rozpocznij debugowanie
W menu Plik wybierz pozycję Otwórz>plik.
Znajdź poniższy plik average.xsl i wybierz pozycję Otwórz.
Arkusz stylów zostanie otwarty w edytorze XML.
Kliknij przycisk przeglądania (...) w polu Dane wejściowe okna właściwości dokumentu. (Jeśli Okno właściwości nie jest widoczne, kliknij prawym przyciskiem myszy w dowolnym miejscu otwartego pliku w edytorze, a następnie wybierz polecenie Właściwości.
Znajdź plik books.xml, a następnie wybierz pozycję Otwórz.
Spowoduje to ustawienie pliku dokumentu źródłowego używanego do przekształcenia XSLT.
Ustaw punkt przerwania w wierszu 12 poniżej średniej.xsl. Można to zrobić na jeden z wielu sposobów:
Kliknij margines edytora w wierszu 12.
Kliknij dowolne miejsce w wierszu 12, a następnie naciśnij klawisz F9.
Kliknij prawym przyciskiem myszy tag startowy
xsl:if
, a następnie wybierz pozycję Punkt przerwania Wstaw punkt przerwania>.
Na pasku menu wybierz pozycję XML>Start XSLT Debugowanie (lub naciśnij klawisze Alt+F5).
Rozpoczyna się proces debugowania.
W edytorze debuger jest umieszczony na
xsl:if
elemecie arkusza stylów. W edytorze zostanie otwarty inny plik o nazwie below-average.xml . Jest to plik wyjściowy, który zostanie wypełniony podczas przetwarzania każdego węzła w plikach wejściowych books.xml .Okna Autos, Locals i Watch 1 są wyświetlane w dolnej części okna programu Visual Studio. W oknie Ustawienia lokalne są wyświetlane wszystkie zmienne lokalne i ich bieżące wartości. Obejmuje to zmienne zdefiniowane w arkuszu stylów, a także zmienne używane przez debuger do śledzenia węzłów, które są obecnie w kontekście.
okno czujki
Dodamy dwie zmienne do okna Watch 1 , aby umożliwić sprawdzenie ich wartości podczas przetwarzania pliku wejściowego. (Możesz również użyć Okno Ustawień lokalnych, aby sprawdzić wartości, jeśli zmienne, które chcesz obserwować, są już tam.
W menu Debuguj wybierz pozycję Windows>Watch Watch>1.
Okno Watch 1 staje się widoczne.
Wpisz
$bookAverage
w polu Nazwa , a następnie naciśnij klawisz Enter.Wartość zmiennej
$bookAverage
jest wyświetlana w polu Wartość .W następnym wierszu wpisz
self::node()
w polu Nazwa , a następnie naciśnij klawisz Enter.self::node()
to wyrażenie XPath, które oblicza bieżący węzeł kontekstu. Wartośćself::node()
wyrażenia XPath jest pierwszym węzłem książki. To zmienia się w miarę postępu transformacji.self::node()
Rozwiń węzeł, a następnie rozwiń węzeł, który maprice
wartość .Możesz zobaczyć wartość ceny książki dla bieżącego węzła książki i porównać ją z wartością
$bookAverage
. Ponieważ cena książki jest niższa od średniej,xsl:if
warunek powinien zakończyć się powodzeniem po kontynuowaniu procesu debugowania.
Przechodzenie przez kod
Naciśnij klawisz F5, aby kontynuować.
Ponieważ pierwszy węzeł książki spełnia
xsl:if
warunek, węzeł książki jest dodawany do pliku wyjściowego below-average.xml . Debuger kontynuuje wykonywanie, dopóki nie zostanie ponownie umieszczony naxsl:if
elemecie w arkuszu stylów. Debuger jest teraz umieszczony w drugim węźle książki w pliku books.xml .W oknie
self::node()
Watch 1 wartość zmienia się na drugi węzeł książki. Sprawdzając wartość elementu price, można określić, że cena jest wyższa od średniej, w związku zxsl:if
czym warunek powinien zakończyć się niepowodzeniem.Naciśnij klawisz F5, aby kontynuować.
Ponieważ drugi węzeł książki nie spełnia
xsl:if
warunku, węzeł książki nie jest dodawany do pliku wyjściowego below-average.xml . Debuger kontynuuje wykonywanie, dopóki nie zostanie ponownie umieszczony naxsl:if
elemecie w arkuszu stylów. Debuger jest teraz umieszczony w trzecimbook
węźle w pliku books.xml .W oknie
self::node()
Watch 1 wartość zmienia się na trzeci węzeł książki. Sprawdzając wartośćprice
elementu, można określić, że cena jest poniżej średniej. Warunek powinien zakończyć się powodzeniemxsl:if
.Naciśnij klawisz F5, aby kontynuować.
xsl:if
Ponieważ warunek został spełniony, trzecia książka jest dodawana do pliku wyjściowego below-average.xml. Wszystkie książki w dokumencie XML zostały przetworzone i debuger zatrzymuje się.
Przykładowe pliki
Poniższe dwa pliki są używane przez przewodnik.
poniżej średniej.xsl
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="/">
<xsl:variable name="bookCount" select="count(/bookstore/book)"/>
<xsl:variable name="bookTotal" select="sum(/bookstore/book/price)"/>
<xsl:variable name="bookAverage" select="$bookTotal div $bookCount"/>
<books>
<!--Books That Cost Below Average-->
<xsl:for-each select="/bookstore/book">
<xsl:if test="price < $bookAverage">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</books>
</xsl:template>
</xsl:stylesheet>
books.xml
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Powiązana zawartość
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla