Compartilhar via


Passo a passo: Depurar uma folha de estilos XSLT

As etapas nessa explicação passo a passo demonstra como usar o depurador XSLT. As etapas incluem variáveis de exibição, pontos de interrupção, e percorrendo o código. O depurador permite que você execute a linha de código por vez.

Para se preparar para este passo a passo, primeiro copie os dois arquivos de exemplo para o computador local. Uma é a folha de estilos e outra é o arquivo XML que usaremos como entrada para a folha de estilos. Neste passo a passo, a folha de estilos que usamos encontra todos os livros cujo custo está abaixo do preço médio do livro.

Observação

O depurador de XSLT está disponível apenas nas edições Professional e Enterprise do Visual Studio.

Iniciar a depuração

  1. No menu Arquivo, escolha Abrir>Arquivo.

  2. Localize o arquivo below-average.xsl e escolha Abrir.

    Abra a folha de estilos no editor XML.

  3. Clique no botão procurar (...) no campo Entrada da janela de propriedades do documento. (Se a janela Propriedades não estiver visível, clique com o botão direito do mouse em qualquer lugar no arquivo aberto no editor e escolha Propriedades.)

  4. Localize o arquivo de books.xml e clique Abrir.

    Isso define o arquivo de documento de origem que é usado para a transformação XSLT.

  5. Defina um ponto de interrupção na linha 12 de below-average.xsl. Você pode fazer isso de várias maneiras:

    • Clique na margem do editor na linha 12.

    • Clique em qualquer lugar na linha 12 e pressione F9.

    • Clique com o botão direito do mouse na marca inicial xsl:if e escolha Ponto de Interrupção>Inserir Ponto de Interrupção.

      Insert breakpoint in XSL file in Visual Studio

  6. Na barra de menus, escolha XML>Iniciar Depuração XSLT (ou pressione Alt+F5).

    O processo de depuração é iniciado.

    No editor, o depurador é posicionado no elemento xsl:if da folha de estilos. Outro arquivo chamado below-average.xml é aberto no editor; esse é o arquivo de saída que será preenchido à medida que cada nó no arquivo de entrada books.xml for processado.

    As janelas Autos, Locais e Inspeção 1 aparecem na parte inferior da janela do Visual Studio. A janela Locais exibe todas as variáveis locais e seus valores atuais. Isso inclui variáveis definidos na folha de estilos e também variáveis que o depurador usa para controlar os nós que estão atualmente no contexto.

Janela Inspecionar

Adicionaremos duas variáveis à janela Inspeção 1 para que possamos examinar seus valores à medida que o arquivo de entrada é processado. (Você também pode usar a janela Locais para examinar valores se as variáveis que você deseja assistir já estiverem lá.)

  1. No menu Depurar, escolha Janelas>Inspeção>Inspeção 1.

    A janela Inspeção 1 fica visível.

  2. Digite $bookAverage no campo Nome e pressione Enter.

    O valor da variável $bookAverage é exibido no campó Valor.

  3. Na próxima linha, digite self::node() no campo Nome e pressione Enter.

    self::node() é uma expressão XPath que avalia ao nó atual de contexto. O valor da expressão XPath de self::node() é o primeiro nó de livro. Isso é alterado como nós progredimos com a transformação.

  4. Expanda o nó de self::node() em seguida, expanda o nó cujo valor é price.

    Watch window during XSLT debugging in Visual Studio

    Você pode ver o valor do preço do livro para o nó do livro atual e compará-lo com o valor $bookAverage. Como o preço do livro está abaixo da média, a condição xsl:if deve ser bem-sucedida quando você continuar o processo de depuração.

Avançar no código

  1. Pressione F5 para continuar.

    Porque o primeiro nó de livro tiver satisfeito a condição de xsl:if, o nó de livro é adicionada à janela de saídabelow-average.xml. O depurador continuará a ser executado até que está localizado novamente no elemento de xsl:if na folha de estilos. O depurador é posicionado agora no segundo nó de livro no arquivo de books.xml.

    Na janela Inspeção 1 o valor de self::node() muda para o segundo nó de livro. Examinando o valor do elemento de preço, você pode determinar que o preço está acima da média, então a condição de xsl:if deve falhar.

  2. Pressione F5 para continuar.

    Porque o segundo nó de livro não está de acordo com a condição de xsl:if, o nó de livro não é adicionado ao arquivo de saída below-average.xml. O depurador continuará a ser executado até estar localizado novamente no elemento xsl:if na folha de estilos. O depurador é posicionado agora no terceiro nó de book no arquivo de books.xml.

    Na janela Watch1 o valor self::node() muda para o terceiro nó de livro. Examinando o valor do elemento de price, você pode determinar que o preço abaixo de média. A conexão xsl:if deve ser bem-sucedida.

  3. Pressione F5 para continuar.

    Porque a condição de xsl:if foi encontrada, o terceiro livro é adicionada ao arquivo de saída do below-average.xml. Todos os livros no documento XML foram processados e paradas do depurador.

Arquivos de exemplo

Os seguintes dois arquivos são usados por passo a passo.

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>