Tracepoints
Mit Hilfe von Tracepoints können Sie Inhalt, der von einer Anweisung generiert wird, auffinden bzw. verfolgen. In der Abbildung unten wird jeder Tracepoint (bis zu diesem Punkt in der Debugger-Sitzung) auf dem Register Ablaufverfolgung des Fensters "Ablaufverfolgung" aufgelistet. Wählen Sie einen der Ablaufverfolgungseinträge aus, um den am Tracepoint generierten XSLT-Inhalt zu sehen. Der Inhalt wird im Fenster Ergebnis auf der rechten Seite angezeigt.
In der Abbildung oben sehen Sie, dass zwei Tracepoints gesetzt wurden; (i) in den Anweisungen xsl:variable und xsl:value-of. Da beide Anweisungen in einer xsl:for-each-Anweisung, die das Element n1:Office auswählt, vorkommen, werden die n1:Office-Elemente des XML-Dokuments in einer Schleife verarbeitet. Für jedes n1:Office-Element wird die Variable $office auf den Wert des n1:Name-Child-Elements (des aktuellen n1:Office-Elements) gesetzt. Die xsl:value-of-Anweisung gibt den Wert der $office-Variablen aus (Dieser Wert ist der Wert des Elements n1:Name).
In der Abbildung wurden vom Debugger zwei n1:Office-Elemente verarbeitet. Die xsl:variable- und die xsl:value-of-Anweisung werden für jedes der beiden n1:Office-Elemente aufgelistet. Wählen Sie einen beliebigen der vier Einträge aus, um das von der jeweiligen Anweisung generierte Ergebnis im Fenster Ergebnis zu sehen.
Sie können beliebig viele Tracepoints setzen. Während des Debugging-Fortschritts durch das XSLT-Dokument werden alle gefundenen Tracepoints auf dem Register Ablaufverfolgung aufgelistet und Sie können jede der aufgelisteten Anweisungen auswählen, um das von ihr generierte Ergebnis zu sehen.
Wichtige Punkte
Beachten Sie die folgenden Punkte:
•Tracepoints können (i) in XSL-Anweisungen und Literal-Ergebnissen in XSLT-Stylesheets und (ii) in Nodes in XML- und XQuery-Dokumenten gesetzt werden.
•Tracepoints können nicht in schließenden Nodes gesetzt werden.
•Ein Tracepoint wird in Form einer strichlierten blauen Linie angezeigt.
•Sie können für dieselbe Anweisung/denselben Node sowohl einen Tracepoint als auch einen Breakpoint setzen. Die Anweisung/der Node wird in diesem Fall durch eine kombinierte strichlierte blaue und rote Line angezeigt (siehe Abbildung oben).
•Die Ergebnisse werden erst dann im Fenster "Ablaufverfolgung" angezeigt, wenn diese Anweisung fertig ausgeführt wurde.
•Für ein Dokument definierte Tracepoints bleiben solange im Dokument, bis es geschlossen wird. Wenn Sie in eine andere Ansicht als die Text- oder Grid-Ansicht wechseln, werden die Tracepoints gelöscht.
•Außerdem können Sie mit Hilfe eines Tracepoint sehen, welches Ergebnis von einem XPath-Ausdruck, der den Tracepoint Node als Kontext-Node hat, generiert würde. Eine Anleitung dazu finden Sie unten.
Einfügen und Löschen von Tracepoints
Tracepoints können in der Text- und der Grid-Ansicht gesetzt werden. Platzieren Sie den Cursor an dem Punkt, an dem Sie den Tracepoint einfügen möchten bzw. in den Tracepoint, der gelöscht werden soll, und wählen Sie eine der folgenden Methoden:
•Wählen Sie XSL/XQuery | Tracepoint einfügen/löschen.
•Drücken Sie Umschalt+F9.
•Rechtsklicken Sie und wählen Sie den Befehl Breakpoints/Tracepoints | Tracepoint einfügen/löschen.
Ein Tracepoint kann auch über das Dialogfeld "XSLT Breakpoints/Tracepoints" gelöscht werden (siehe Beschreibung unten).
Dialogfeld "XSLT Breakpoints/Tracepoints"
Sie können das Dialogfeld "XSLT Breakpoints/Tracepoints" (Abbildung unten) entweder über den Menübefehl XSL/XQuery | Breakpoints/Tracepoints... oder die Symbolleisten-Schaltfläche des Befehls aufrufen.
Das Dialogfeld "XSLT Breakpoints/Tracepoints" bietet folgende Funktionen:
•Auflistung aller Breakpoints und Tracepoints in allen derzeit geöffneten XML-, XSLT- und XQuery-Dokumenten.
•Ändern eines Breakpoints in einen Tracepoint und umgekehrt mit Hilfe der Pfeilschaltflächen zwischen den entsprechenden Fenstern und Bestätigung mit OK.
•Aktivierung/Deaktivierung eines Breakpoint oder Tracepoint durch Aktivierung/Deaktivierung des entsprechenden Kontrollkästchens und Bestätigung mit OK. Wenn Sie einen Breakpoint oder Tracepoint deaktivieren, können Sie ihn überspringen und müssen ihn nicht entfernen.
•Entfernung von einem oder allen Breakpoints/Tracepoints durch Klicken auf die entsprechende Schaltfläche und Bestätigung mit OK.
•Springen direkt zum Breakpoint/Tracepoint im jeweiligen Dokument und Bearbeitung des Dokuments. Klicken Sie dazu auf die entsprechende Code bearbeiten Schaltfläche (siehe Abbildung unten).
•Definition eines XPath-Ausdrucks in einem Tracepoint, um den vom Ausdruck zurückgegebenen Wert zu überprüfen. Eine Anleitung dazu finden Sie unten.
Definieren eines XPath-Ausdrucks in einem Tracepoint
Wenn Sie einen XPath-Ausdruck als Tracepoint definieren, wird anstelle des durch die entsprechende XSLT-Anweisung generierten Inhalts das Ergebnis der XPath-Auswertung relativ zum Kontext-Node des Tracepoint angezeigt. Dieses Ergebnis wird im Fenster "Ablaufverfolgung" angezeigt.
So haben wir etwa in der Abbildung unten drei Tracepoints gesetzt. Der erste Tracepoint (in Zeile 21) hat als Kontext-Node den Parent-Node des Elements n1:Office. Die anderen beiden Tracepoints hätten das Element n1:Office als ihre jeweiligen Kontext-Nodes, da sie sich innerhalb der xsl:for-each-Anweisung befinden.
Angenommen, wir definieren im Dialogfeld "XSLT Breakpoints/Tracepoints" (siehe oben) XPath-Ausdrücke für jeden der drei Tracepoints, wie in der Abbildung unten gezeigt. Beachten Sie, dass der Kontext-Node des ersten Tracepoint der Parent-Node des Elements n1:Office ist, wodurch die n1:Office-Elemente als Child-Nodes gezählt werden können. Für den zweiten Tracepoint, bei dem der Kontext-Node das Element n1:Office ist, können wir die n1:Department Child-Elemente zählen.
Bei Ausführung des Debuggers (XSL/XQuery | Debugger starten) werden die Ergebnisse der XPath-Ausdrücke im Fenster "Ablaufverfolgung" angezeigt (siehe Abbildung unten).
Beachten Sie die folgenden Punkte:
•Da es in unserem Beispiel drei n1:Office-Elemente gibt, wird die xsl:for-each-Schleife einmal für jedes der n1:Office-Elemente ausgeführt. Folglich werden die beiden anderen Tracepoints in der Schleife für jedes Office-Element ausgewertet und geben Daten zum entsprechenden Büro zurück.
•Der XPath-Ausdruck des xsl:for-each-Tracepoint wird ausgewertet, nachdem die Anweisung fertig verarbeitet wurde.