Tutorial: Depuración de una hoja de estilos XSLT
En este tutorial se indican los pasos para utilizar el depurador de XSLT. Éstos incluyen ver variables, definir puntos de interrupción y examinar el código. El depurador permite ejecutar código de línea en línea.
Para prepararse para este tutorial, copie primero los dos archivos de ejemplo en el equipo local. Uno es la hoja de estilos y otro es el archivo XML que se utilizará como entrada para la hoja de estilos. En este tutorial, la hoja de estilos que usamos busca todos los libros cuyo costo sea inferior al precio medio de los libros.
Nota
El depurador de XSLT solo está disponible en las ediciones Professional y Enterprise de Visual Studio.
Iniciar depuración
En el menú Archivo, elija Abrir>Archivo.
Busque el archivo below-average.xsl y elija Abrir.
La hoja de estilos se abre en el Editor XML.
Haga clic en el botón Examinar ( ... ) en el campo Entrada de la ventana de propiedades del documento. (Si la ventana Propiedades no está visible, haga clic con el botón secundario en cualquier parte del archivo abierto en el editor y, a continuación, elija Propiedades).
Busque el archivo books.xml y, a continuación, elija Abrir.
De esta forma se establece el archivo del documento de origen que se utilizará para la transformación XSLT.
Establezca un punto de interrupción en la línea 12 de below-average.xsl. Puede hacerlo de una de varias maneras:
Haga clic en el margen del editor en la línea 12.
Haga clic en cualquier parte de la línea 12 y, a continuación, presione F9.
Haga clic con el botón derecho en la etiqueta de inicio de
xsl:if
y, a continuación, elija Punto de interrupción>Insertar punto de interrupción.
En la barra de menús, elija XML>Iniciar depuración de XSLT (o presione Alt+F5).
Se inicia el proceso de depuración.
En el editor, el depurador se coloca en el elemento
xsl:if
de la hoja de estilos. Otro archivo llamado below-average.xml se abre en el editor; este es el archivo de salida que se rellenará a medida que se procese cada nodo del archivo de entrada books.xml.Las ventanas Automático, Locales e Inspección 1 aparecen en la parte inferior de la ventana de Visual Studio. La ventana Locales muestra todas las variables locales y sus valores actuales. 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.
Ventana Inspección
Vamos a agregar dos variables a la ventana Inspección 1 para que podamos examinar sus valores a medida que se procesa el archivo de entrada. (También puede usar la ventana Locales para examinar valores si las variables que desea inspeccionar ya están allí).
En el menú Depurar, elija Ventanas>Inspección>Inspección 1.
La ventana Inspección 1 se vuelve visible.
Escriba
$bookAverage
en el campo Nombre y presione Entrar.El valor de la variable
$bookAverage
se muestra en el campo Valor.En la línea siguiente, escriba
self::node()
en el campo Nombre y, a continuación, presione Entrar.self::node()
es una expresión XPath que se evalúa para el nodo de contexto actual. El valor de la expresión XPathself::node()
es el primer nodo de libro. Esto cambia a medida que progresamos en la transformación.Expanda el nodo
self::node()
y, a continuación expanda el nodo cuyo valor esprice
.Puede ver el valor del precio del libro para el nodo de libro actual y compararlo con el valor
$bookAverage
. Como el precio del libro está por debajo de la media, se debe cumplir la condiciónxsl:if
al continuar con el proceso de depuración.
Recorrido del código
Presione F5 para continuar.
Como el primer nodo de libro satisface la condición
xsl:if
, se agrega el nodo de libro al archivo de salida below-average.xml. El depurador continúa ejecutándose hasta que se coloca de nuevo en el elementoxsl:if
de la hoja de estilos. El depurador se coloca en el segundo nodo de libro del archivo books.xml.En la ventana Inspección 1, el valor
self::node()
cambia al segundo nodo de libro. 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ónxsl:if
no debería cumplirse.Presione F5 para continuar.
Como el segundo nodo de libro no satisface la condición
xsl:if
, no se agrega al archivo de salida below-average.xml. El depurador continúa ejecutándose hasta que se coloca de nuevo en el elementoxsl:if
de la hoja de estilos. El depurador está colocado en el tercer nodo debook
del archivo books.xml.En la ventana Inspección 1, el valor
self::node()
cambia al tercer nodo de libro. Mediante el examen del valor del elementoprice
, se puede determinar que el precio está por debajo de la media. La condiciónxsl:if
debe ser correcta.Presione F5 para continuar.
Como la condición
xsl:if
se ha cumplido, el tercer libro se agrega al archivo de salida below-average.xml. Todos los libros del documento XML se han procesado y el depurador se detiene.
Archivos de ejemplo
El tutorial utiliza los dos siguientes archivos de ejemplo.
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>