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
No menu Arquivo, escolha Abrir>Arquivo.
Localize o arquivo below-average.xsl e escolha Abrir.
Abra a folha de estilos no editor XML.
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.)
Localize o arquivo de books.xml e clique Abrir.
Isso define o arquivo de documento de origem que é usado para a transformação XSLT.
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.
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á.)
No menu Depurar, escolha Janelas>Inspeção>Inspeção 1.
A janela Inspeção 1 fica visível.
Digite
$bookAverage
no campo Nome e pressione Enter.O valor da variável
$bookAverage
é exibido no campó Valor.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 deself::node()
é o primeiro nó de livro. Isso é alterado como nós progredimos com a transformação.Expanda o nó de
self::node()
em seguida, expanda o nó cujo valor éprice
.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çãoxsl:if
deve ser bem-sucedida quando você continuar o processo de depuração.
Avançar no código
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 dexsl: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 dexsl:if
deve falhar.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 elementoxsl:if
na folha de estilos. O depurador é posicionado agora no terceiro nó debook
no arquivo de books.xml.Na janela Watch1 o valor
self::node()
muda para o terceiro nó de livro. Examinando o valor do elemento deprice
, você pode determinar que o preço abaixo de média. A conexãoxsl:if
deve ser bem-sucedida.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 < $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>