Sdílet prostřednictvím


Návod: Ladění šablony stylů XSLT

Kroky v tomto názorném postupu ukazují, jak používat ladicí program XSLT. Mezi kroky patří zobrazení proměnných, nastavení zarážek a procházení kódu. Ladicí program umožňuje spustit kód po jednom řádku.

Pokud se chcete připravit na tento názorný postup, nejprve zkopírujte dva ukázkové soubory do místního počítače. Jedna je šablona stylů a jeden je soubor XML, který použijeme jako vstup do šablony stylů. V tomto názorném postupu najde šablona stylů všechny knihy, jejichž náklady jsou pod průměrnou cenou knihy.

Poznámka:

Ladicí program XSLT je k dispozici pouze v edicích Professional a Enterprise sady Visual Studio.

Spuštění ladění

  1. V nabídce Soubor zvolte Otevřít>soubor.

  2. Vyhledejte níže uvedený soubor.xsl a zvolte Otevřít.

    Šablona stylů se otevře v editoru XML.

  3. Klikněte na tlačítko procházet (...) v poli Vstup v okně vlastností dokumentu. (Pokud Okno Vlastnosti není viditelné, klikněte pravým tlačítkem na libovolné místo v otevřeném souboru v editoru a potom zvolte Vlastnosti.)

  4. Vyhledejte soubor books.xml a pak zvolte Otevřít.

    Tím se nastaví zdrojový soubor dokumentu, který se používá pro transformaci XSLT.

  5. Nastavte zarážku na řádku 12 pod průměrem.xsl. Můžete to udělat jedním z několika způsobů:

    • Klikněte na okraj editoru na řádku 12.

    • Klikněte na libovolné místo na řádku 12 a stiskněte klávesu F9.

    • Klikněte pravým tlačítkem myši na xsl:if počáteční značku a potom zvolte Zarážku Vložit zarážku>.

      Insert breakpoint in XSL file in Visual Studio

  6. Na řádku nabídek zvolte Spustit ladění XSLT XML>(nebo stiskněte klávesu Alt+F5).

    Spustí se proces ladění.

    V editoru se ladicí program umístí na xsl:if prvek šablony stylů. V editoru se otevře jiný soubor s názvem below-average.xml . Toto je výstupní soubor, který se vyplní při zpracování každého uzlu ve vstupním souboru books.xml .

    Okna Automatické hodnoty, Místní hodnoty a Kukátko 1 se zobrazí v dolní části okna sady Visual Studio. V okně Místní hodnoty se zobrazí všechny místní proměnné a jejich aktuální hodnoty. To zahrnuje proměnné definované v šabloně stylů a také proměnné, které ladicí program používá ke sledování uzlů, které jsou aktuálně v kontextu.

Kukátko – okno

Do okna Kukátko 1 přidáme dvě proměnné, abychom mohli zkoumat jejich hodnoty při zpracování vstupního souboru. (Můžete také použít Okno Místní hodnoty pro zkoumání hodnot, pokud už jsou proměnné, které chcete sledovat,)

  1. V nabídce Ladění zvolte Windows>Watch>1.

    Okno Kukátko 1 se zobrazí.

  2. Zadejte $bookAverage pole Název a stiskněte Enter.

    Hodnota $bookAverage proměnné se zobrazí v poli Hodnota .

  3. Na dalším řádku zadejte self::node()pole Název a stiskněte Enter.

    self::node() je výraz XPath, který se vyhodnotí jako aktuální kontextový uzel. Hodnota výrazu self::node() XPath je první uzel knihy. Při procházení transformace se tato změna změní.

  4. self::node() Rozbalte uzel a pak rozbalte uzel, který má pricehodnotu .

    Watch window during XSLT debugging in Visual Studio

    Můžete zobrazit hodnotu ceny knihy pro aktuální uzel knihy a porovnat ji s $bookAverage hodnotou. Vzhledem k tomu, že cena knihy je nižší než průměr, xsl:if podmínka by měla být úspěšná, když budete pokračovat v procesu ladění.

Projděte si kód.

  1. Pokračujte stisknutím F5.

    Vzhledem k tomu, že první uzel knihy splnil podmínku xsl:if , přidá se uzel knihy do výstupního souboru pod průměrem.xml . Ladicí program se bude dál spouštět, dokud se znovu nenasadí na xsl:if prvek v šabloně stylů. Ladicí program je nyní umístěn na druhém uzlu knihy v souboru books.xml .

    V okně Kukátko 1 se self::node() hodnota změní na druhý uzel knihy. Prozkoumáním hodnoty prvku ceny můžete určit, že cena je vyšší než průměr, a proto xsl:if by podmínka měla selhat.

  2. Pokračujte stisknutím F5.

    Vzhledem k tomu, že druhý uzel knihy nesplňuje podmínku xsl:if , uzel knihy se nepřidá do výstupního souboru pod průměrem.xml . Ladicí program se bude dál spouštět, dokud se znovu nenasadí na xsl:if prvek v šabloně stylů. Ladicí program je nyní umístěn na třetím book uzlu v souboru books.xml .

    V okně Kukátko 1 se self::node() hodnota změní na třetí uzel knihy. Prozkoumáním hodnoty price prvku můžete určit, že cena je nižší než průměr. Podmínka xsl:if by měla být úspěšná.

  3. Pokračujte stisknutím F5.

    Vzhledem k tomu, že podmínka xsl:if byla splněna, třetí kniha se přidá do výstupního souboru pod průměrem.xml . Všechny knihy v dokumentu XML byly zpracovány a ladicí program se zastaví.

Vzorové soubory

Následující dva soubory se používají v návodu.

below-average.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 &lt; $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>