Udostępnij za pośrednictwem


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-templateelementó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

  1. 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>
    
  2. 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>
    
  3. 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>
    
  4. Dodaj punkt przerwania w instrukcji <xsl:include href="xslincludefile.xsl" />.

  5. Uruchom debugowanie.

  6. 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ę.