Przewodnik: używanie hierarchii XSLT
Narzędzie hierarchii XSLT upraszcza wiele zadań programistycznych XML. Arkusz stylów XSLT często używa includes
instrukcji i imports
. Kompilacja rozpoczyna się od głównego arkusza stylów, ale w wyniku kompilowania arkusza stylów XSLT błąd może pochodzić z innego źródła niż główny arkusz stylów. Naprawienie błędu lub edytowanie arkusza stylów może wymagać dostępu do dołączonych lub zaimportowanych arkuszy stylów. Przejście przez arkusz stylów w debugerze może spowodować otwarcie dołączonych i zaimportowanych arkuszy stylów. W pewnym momencie możesz dodać punkt przerwania w co najmniej jednym dołączonym arkuszu stylów.
Innym scenariuszem, w którym narzędzie hierarchii XSLT może być przydatne, jest umieszczenie punktów przerwania we wbudowanych regułach szablonów. Reguły szablonów to specjalne szablony generowane dla każdego trybu arkusza stylów i wywoływane przez xsl:apply-templates
program , gdy żaden inny szablon nie pasuje do węzła. Aby zaimplementować debugowanie w wbudowanych regułach szablonów, debuger XSLT generuje plik z regułami w folderze tymczasowym i kompiluje je razem z głównym arkuszem stylów. Bez przechodzenia do kodu z niektórych xsl:apply-template
elementów może być trudno znaleźć arkusze stylów, które zostały uwzględnione w głównym arkuszu stylów lub znaleźć i otworzyć arkusz stylów przy użyciu wbudowanych reguł szablonów.
W przykładzie w tym temacie pokazano debugowanie w przywoływnym arkuszu stylów.
Aby debugować w odwołanym arkuszu stylów
Otwórz dokument XML w programie Visual Studio. W tym przykładzie użyto następującego dokumentu:
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="xslinclude.xsl"?> <COLLECTION> <BOOK> <TITLE>Lover Birds</TITLE> <AUTHOR>Cynthia Randall</AUTHOR> <PUBLISHER>Lucerne Publishing</PUBLISHER> </BOOK> <BOOK> <TITLE>The Sundered Grail</TITLE> <AUTHOR>Eva Corets</AUTHOR> <PUBLISHER>Lucerne Publishing</PUBLISHER> </BOOK> <BOOK> <TITLE>Splish Splash</TITLE> <AUTHOR>Paula Thurman</AUTHOR> <PUBLISHER>Scootney</PUBLISHER> </BOOK> </COLLECTION>
Dodaj następujący plik xslincludefile.xsl:
<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xml:space="preserve"> <xsl:template match="TITLE"> Title - <xsl:value-of select="."/><BR/> </xsl:template> <xsl:template match="AUTHOR"> Author - <xsl:value-of select="."/><BR/> </xsl:template> <xsl:template match="PUBLISHER"> Publisher - <xsl:value-of select="."/><BR/><!-- removed second <BR/> --> </xsl:template> </xsl:stylesheet>
Dodaj następujący plik xslinclude.xsl :
<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:for-each select="COLLECTION/BOOK"> <xsl:apply-templates select="TITLE"/> <xsl:apply-templates select="AUTHOR"/> <xsl:apply-templates select="PUBLISHER"/> <BR/> <!-- add this --> </xsl:for-each> </xsl:template> <!-- The following template rule will not be called, because the related template in the including stylesheet is called. If we move this template so that it follows the xsl:include instruction, this one will be called instead.--> <xsl:template match="TITLE"> <DIV STYLE="color:blue"> Title: <xsl:value-of select="."/> </DIV> </xsl:template> <xsl:include href="xslincludefile.xsl" /> </xsl:stylesheet>
Dodaj punkt przerwania w instrukcji
<xsl:include href="xslincludefile.xsl" />
.Uruchom debugowanie.
Gdy debuger zatrzymuje się na instrukcji
<xsl:include href="xslincludefile.xsl" />
, naciśnij przycisk Przejdź do . Debugowanie można kontynuować w przywoływałym arkuszu stylów. Hierarchia jest widoczna, a projektant wyświetla właściwą ścieżkę.