Tutorial: Depurar una hoja de estilos XSLTWalkthrough: Debug an XSLT style sheet

En este tutorial se indican los pasos para utilizar el depurador de XSLT.The steps in this walkthrough demonstrate how to use the XSLT debugger. Éstos incluyen ver variables, definir puntos de interrupción y examinar el código.Steps include viewing variables, setting breakpoints, and stepping through the code. La hoja de estilos busca todos los libros cuyo costo sea menor que el costo promedio.The style sheet finds all books that cost below the average book price.

Pasos preliminares de este tutorialTo prepare for this walkthrough

  1. Cierre las soluciones que estén abiertas.Close any open solutions.

  2. Copie los dos archivos de ejemplo en el equipo local.Copy the two sample files to your local computer.

Iniciar depuraciónStart debugging

Para iniciar la depuraciónTo start debugging

  1. Desde el archivo menú, elija abiertosy haga clic en archivo.From the File menu, point to Open, and click File.

  2. Busque la belowAvg.xsl de archivo y haga clic en abiertos.Locate the belowAvg.xsl file and click Open.

    La hoja de estilos se abre en el Editor XML.The style sheet is opened in the XML Editor.

  3. Haga clic en el botón Examinar (... ) en el entrada campo de la ventana de propiedades de documento.Click the browse button (...) on the Input field of the document properties window.

  4. Busque la books.xml de archivo y haga clic en abiertos.Locate the books.xml file and click Open.

    De esta forma se establece el archivo del documento de origen que se utilizará para la transformación XSLT.This sets the source document file that is used for the XSLT transformation.

  5. Haga clic en el xsl:if etiqueta de inicio, seleccione punto de interrupcióny haga clic en Insertar punto de interrupción.Right-click the xsl:if start tag, point to Breakpoint, and click Insert Breakpoint.

  6. Haga clic en el Depurar XSL botón en la barra de herramientas del Editor XML.Click the Debug XSL button on the XML Editor toolbar.

Comienza el proceso de depuración y se abren varias ventanas nuevas que utiliza el depurador.This starts the debugging process and opens several new windows that are used by the debugger.

Existen dos ventanas que muestran el documento de entrada y la hoja de estilos.There are two windows that display the input document and styles sheet. El depurador usa estas ventanas para mostrar el estado de ejecución actual.The debugger uses these windows to show the current execution state. El depurador se posiciona en el xsl:if elemento de la hoja de estilos y en el primer nodo de libro en la books.xml archivo.The debugger is positioned on the xsl:if element of the style sheet and on the first book node in the books.xml file.

El locales ventana muestra todas las variables locales y sus valores actuales.The Locals window displays all the local variables and their current values. Aquí se incluyen las variables definidas en la hoja de estilos así como las que utiliza el depurador para realizar el seguimiento de los nodos que en ese momento existen en contexto.This includes variables defined in the style sheet and also variables that the debugger uses to track the nodes that are currently in context.

El resultado XSL ventana muestra la salida de la transformación XSL.The XSL Output window displays the output of the XSL transformation. Esta ventana es distinta de la resultados de Visual Studio ventana.This window is separate from the Visual Studio Output window.

Ventana InspecciónWatch window

Para utilizar la ventana InspecciónTo use the Watch window

  1. Desde el depurar menú, elija Windows, seleccione inspeccióny haga clic en Inspección 1.From the Debug menu, point to Windows, point to Watch, and click Watch 1.

    Esto hace que la Inspección 1 visible de la ventana.This makes the Watch 1 window visible.

  2. Tipo de $bookAverage en el nombre campo y presione ENTRAR.Type $bookAverage in the Name field and press Enter.

    El valor de la variable $bookAverage se muestra en la ventana.The value of the $bookAverage variable is displayed in the window.

  3. Tipo de self::node() en el nombre campo y presione ENTRAR.Type self::node() in the Name field and press Enter.

    self::node() es una expresión XPath que se evalúa para el nodo de contexto actual.self::node() is an XPath expression that evaluates to the current context node. El valor de la expresión XPath self::node() es el primer nodo de libro.The value of the self::node() XPath expression is the first book node. Esto cambia a medida que progresamos en la transformación.This changes as we progress through the transformation.

  4. Expanda el nodo self::node() y, a continuación expanda el nodo price.Expand the self::node() node, and then expand the price node.

    De esta manera verá el valor del precio del libro y podrá compararlo fácilmente con el valor $bookAverage.This allows you to see the value of the book price and you can easily compare it to the $bookAverage value. Como el precio del libro está por debajo de la media, se debe cumplir la condición xsl:if.Because the book price is below the average, the xsl:if condition should succeed.

Recorrer el códigoStep through the code

El depurador permite ejecutar código de línea en línea.The debugger enables you to execute code one line at a time.

Para examinar el códigoTo step through the code

  1. Presione F5 para continuar.Press F5 to continue.

    Dado que el primer nodo de libro satisface la xsl:if condición, el nodo de libro se agrega a la resultado XSL ventana.Because the first book node satisfied the xsl:if condition, the book node is added to the XSL Output window. El depurador continúa ejecutándose hasta que se coloca de nuevo en el elemento xsl:if de la hoja de estilos.The debugger continues to execute until it is positioned again on the xsl:if element in the style sheet. El depurador se posiciona ahora en el segundo nodo de libro en la books.xml archivo.The debugger is now positioned on the second book node in the books.xml file.

    En el Inspección 1 ventana el self::node() cambia el valor para el segundo nodo de libro.In the Watch 1 window the self::node() value changes to the second book node. Mediante el examen del valor del elemento de precio, se puede determinar que el precio está por encima de la media, así que la condición xsl:if no debería cumplirse.By examining the value of the price element, you can determine that the price is above the average, thus the xsl:if condition should fail.

  2. Presione F5 para continuar.Press F5 to continue.

    Dado que el segundo nodo de libro no cumple el xsl:if condición, el nodo de libro no se agrega a la resultado XSL ventana.Because the second book node does not meet the xsl:if condition, the book node is not added to the XSL Output window. El depurador continúa ejecutándose hasta que se coloca de nuevo en el elemento xsl:if de la hoja de estilos.The debugger continues to execute until it is positioned again on the xsl:if element in the style sheet. El depurador está colocado en la tercera book nodo en el books.xml archivo.The debugger is now positioned on the third book node in the books.xml file.

    En el Inspección 1 ventana la self::node() valor cambia al tercer nodo de libro.In the Watch 1 window the self::node() value changes to the third book node. Mediante el examen del valor del elemento price, se puede determinar que el precio está por debajo de la media, así que debería cumplirse la condición xsl:if.By examining the value of the price element, you can determine that the price is below the average, thus the xsl:if condition should succeed.

  3. Presione F5 para continuar.Press F5 to continue.

    Dado que la xsl:if se satisfizo la condición, el tercer libro se agrega a la resultado XSL ventana.Because the xsl:if condition was satisfied, the third book is added to the XSL Output window. Todos los libros del documento XML se han procesado y el depurador se detiene.All books in the XML document have been processed and the debugger stops.

Archivos de ejemploSample files

El tutorial utiliza los dos siguientes archivos de ejemplo.The following two files are used by the walkthrough.

belowAvg.xslbelowAvg.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.xmlbooks.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>

Vea tambiénSee also