Procédure pas à pas : Déboguer une feuille de style XSLTWalkthrough: Debug an XSLT style sheet

Les étapes de cette procédure pas à pas montrent comment utiliser le débogueur XSLT.The steps in this walkthrough demonstrate how to use the XSLT debugger. Elles comprennent l'affichage des variables, la définition de points d'arrêt et le parcours pas à pas du code.Steps include viewing variables, setting breakpoints, and stepping through the code. Le débogueur vous permet d’exécuter le code ligne par ligne.The debugger lets you execute code one line at a time.

Pour préparer cette procédure pas à pas, commencez par copier les deux exemples de fichiers sur votre ordinateur local.To prepare for this walkthrough, first copy the two sample files to your local computer. L’une est la feuille de style, et l’autre est le fichier XML que nous allons utiliser comme entrée de la feuille de style.One is the style sheet, and one is the XML file we'll use as input to the style sheet. Dans cette procédure pas à pas, la feuille de style que nous utilisons recherche tous les livres dont le coût est inférieur au prix moyen des livres.In this walkthrough, the style sheet we use finds all books whose cost is below the average book price.

Notes

Le débogueur XSLT est uniquement disponible dans l’édition Enterprise de Visual Studio.The XSLT debugger is only available in the Enterprise edition of Visual Studio.

Démarrer le débogageStart debugging

  1. Dans le menu fichier , choisissez ouvrir un > fichier.From the File menu, choose Open > File.

  2. Recherchez le fichier Below-Average. xsl , puis choisissez ouvrir.Locate the below-average.xsl file and choose Open.

    La feuille de style s’ouvre dans l’éditeur XML.The style sheet opens in the XML editor.

  3. Cliquez sur le bouton Parcourir ( ... ) dans le champ entrée de la fenêtre Propriétés du document.Click the browse button ( ... ) on the Input field of the document properties window. (Si la fenêtre Propriétés n’est pas visible, cliquez avec le bouton droit n’importe où sur le fichier ouvert dans l’éditeur, puis choisissez Propriétés.)(If the Properties window is not visible, right-click anywhere on the open file in the editor, and then choose Properties.)

  4. Recherchez le fichier books.xml , puis choisissez ouvrir.Locate the books.xml file, and then choose Open.

    Cela définit le fichier de document source utilisé pour la transformation XSLT.This sets the source document file that's used for the XSLT transformation.

  5. Définissez un point d’arrêt sur la ligne 12 de Below-Average. xsl.Set a breakpoint on line 12 of below-average.xsl. Pour ce faire, vous pouvez procéder de plusieurs façons :You can do this in one of multiple ways:

    • Cliquez dans la marge de l’éditeur à la ligne 12.Click in the margin of the editor on line 12.

    • Cliquez n’importe où sur la ligne 12, puis appuyez sur F9.Click anywhere on line 12, and then press F9.

    • Cliquez avec le bouton droit sur la xsl:if balise de début, puis choisissez point d’arrêt > Insérer un point d’arrêt.Right-click the xsl:if start tag, and then choose Breakpoint > Insert Breakpoint.

      Insérer un point d’arrêt dans un fichier XSL dans Visual Studio

  6. Dans la barre de menus, choisissez XML > Démarrer le débogage XSLT (ou appuyez sur ALT + F5 ).On the menu bar, choose XML > Start XSLT Debugging (or, press Alt+F5 ).

    Le processus de débogage démarre.The debugging process starts.

    Dans l’éditeur, le débogueur est positionné sur l' xsl:if élément de la feuille de style.In the editor, the debugger is positioned on the xsl:if element of the style sheet. Un autre fichier nommé below-average.xml s’ouvre dans l’éditeur. Il s’agit du fichier de sortie qui sera rempli à mesure que chaque nœud du fichier d’entrée books.xml est traité.Another file named below-average.xml opens in the editor; this is the output file that will be populated as each node in the input file books.xml is processed.

    Les fenêtres automatique , variables locales et Espion 1 s’affichent en bas de la fenêtre de Visual Studio.The Autos , Locals , and Watch 1 windows appear at the bottom of the Visual Studio window. La fenêtre variables locales affiche toutes les variables locales et leurs valeurs actuelles.The Locals window displays all the local variables and their current values. Cela comprend les variables définies dans la feuille de style ainsi que celles que le débogueur utilise pour assurer le suivi des nœuds actuellement dans le contexte.This includes variables defined in the style sheet and also variables that the debugger uses to track the nodes that are currently in context.

Fenêtre EspionWatch window

Nous allons ajouter deux variables à la fenêtre Espion 1 afin que nous puissions examiner leurs valeurs lors du traitement du fichier d’entrée.We'll add two variables to the Watch 1 window so we can examine their values as the input file is processed. (Vous pouvez également utiliser la fenêtre variables locales pour examiner les valeurs si les variables que vous souhaitez surveiller sont déjà présentes).(You can also use the Locals window to examine values if the variables you want to watch are already there.)

  1. Dans le menu Déboguer , choisissez espion Windows > Watch > 1.From the Debug menu, choose Windows > Watch > Watch 1.

    La fenêtre Espion 1 devient visible.The Watch 1 window becomes visible.

  2. Tapez $bookAverage dans le champ nom , puis appuyez sur entrée.Type $bookAverage in the Name field, and then press Enter.

    La valeur de la $bookAverage variable s’affiche dans le champ valeur .The value of the $bookAverage variable displays in the Value field.

  3. Sur la ligne suivante, tapez self::node() dans le champ nom , puis appuyez sur entrée.On the next line, type self::node() in the Name field, and then press Enter.

    self::node() expression XPath qui prend la valeur du nœud de contexte actuel.self::node() is an XPath expression that evaluates to the current context node. La valeur de l'expression XPath self::node() est le premier nœud book.The value of the self::node() XPath expression is the first book node. Cette valeur change à mesure que la transformation progresse.This changes as we progress through the transformation.

  4. Développez le self::node() nœud, puis développez le nœud dont la valeur est price .Expand the self::node() node, and then expand the node who's value is price.

    Fenêtre Espion lors du débogage XSLT dans Visual Studio

    Vous pouvez voir la valeur du prix du livre pour le nœud de livre actuel et la comparer à la $bookAverage valeur.You can see the value of the book price for the current book node and compare it to the $bookAverage value. Étant donné que le prix du livre est inférieur à la moyenne, la xsl:if condition doit être correctement exécutée lorsque vous poursuivez le processus de débogage.Because the book price is below the average, the xsl:if condition should succeed when you continue the debugging process.

Parcourir le codeStep through the code

  1. Appuyez sur F5 pour continuer.Press F5 to continue.

    Étant donné que le premier nœud book xsl:if a respecté la condition, le nœud book est ajouté au fichier de sortie below-average.xml .Because the first book node satisfied the xsl:if condition, the book node is added to the below-average.xml output file. Le débogueur continue l'exécution jusqu'à ce qu'il se repositionne sur l'élément xsl:if de la feuille de style.The debugger continues to execute until it is positioned again on the xsl:if element in the style sheet. Le débogueur est maintenant positionné sur le deuxième nœud book dans le fichier books.xml .The debugger is now positioned on the second book node in the books.xml file.

    Dans la fenêtre Espion 1 , la self::node() valeur devient le deuxième nœud book.In the Watch 1 window, the self::node() value changes to the second book node. En examinant la valeur de l'élément price, vous pouvez constater que le prix est supérieur à la moyenne, donc la condition xsl:if ne doit pas se vérifier.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. Appuyez sur F5 pour continuer.Press F5 to continue.

    Étant donné que le deuxième nœud book ne remplit pas la xsl:if condition, le nœud book n’est pas ajouté au fichier de sortie below-average.xml .Because the second book node does not meet the xsl:if condition, the book node is not added to the below-average.xml output file. Le débogueur continue à s’exécuter jusqu’à ce qu’il soit de nouveau positionné sur l' xsl:if élément dans la feuille de style.The debugger continues to execute until it's positioned again on the xsl:if element in the style sheet. Le débogueur est maintenant positionné sur le troisième book nœud dans le fichier books.xml .The debugger is now positioned on the third book node in the books.xml file.

    Dans la fenêtre Espion 1 , la self::node() valeur devient le troisième nœud de livre.In the Watch 1 window, the self::node() value changes to the third book node. En examinant la valeur de l' price élément, vous pouvez déterminer que le prix est inférieur à la moyenne.By examining the value of the price element, you can determine that the price is below the average. La xsl:if condition doit être correctement exécutée.The xsl:if condition should succeed.

  3. Appuyez sur F5 pour continuer.Press F5 to continue.

    Étant donné que la xsl:if condition a été satisfaite, le troisième livre est ajouté au fichier de sortie below-average.xml .Because the xsl:if condition was satisfied, the third book is added to the below-average.xml output file. Tous les livres du document XML ont été traités et le débogueur s'arrête.All books in the XML document have been processed and the debugger stops.

Exemple de fichiersSample files

La procédure pas à pas utilise les deux fichiers suivants.The following two files are used by the walkthrough.

Below-Average. Xslbelow-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.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>

Voir aussiSee also