Aktivieren Sie bitte JavaScript, um diese Seite anzeigen zu können.

Altova XMLSpy 2020 Professional Edition

Im Debug-Modus des "XPath/XQuery"-Fensters (Abbildung unten) können Sie einen XPath/XQuery-Ausdruck im Kontext der aktiven Datei debuggen.

 

Im Debug-Modus werden zwei zusätzliche Bereiche zum Ergebnisfenster hinzugefügt (siehe Abbildung unten):

 

der Call Stack- und der Debug-Punkte-Bereich. Jeder davon hat ein eigenes Register im Fenster.

das Bereich für Variablen und Überwachungsausdrücke; sowohl Überwachungsausdrücke als auch Variablen werden im selben Bereich angezeigt.

XPathXQueryWindowDebug01

Die Bereiche für Ausdrücke und Ergebnisse können nebeneinander oder übereinander angeordnet werden. Um zwischen diesen Layouts zu wechseln, klicken Sie (rechts oben in der Symbolleiste des Fensters) auf die Schaltfläche Horizontales/Vertikales Layout.

 

Im Debugger-Modus stehen die folgenden Funktionalitäten zur Verfügung:

 

Hier können Sie in den XPath-Auswertungsvorgang einsteigen und Schritt für Schritt sehen, wie der XPath-Ausdruck ausgewertet wird. Verwenden Sie dazu die Symbolleisten-Schaltfläche Einsteigen (F11). Bei jedem Auswertungsschritt wird der Teil des Ausdrucks, der soeben ausgewertet wird, gelb markiert (siehe Abbildung oben), während das Ergebnis der Auswertung dieses Schritts im Ergebnisfenster angezeigt wird. So wurden z.B. in der Abbildung oben alle section-Nachfahren des Elements book ausgewählt.

Sie können Breakpoints setzen, wo die Auswertung angehalten werden soll, damit Sie Ergebnisse an diesen Stellen überprüfen können. Sie können die Auswertung durchlaufen lassen, indem Sie nur an den Breakpoints anhalten. Verwenden Sie dafür die Symbolleisten-Schaltfläche Debugger starten (F5)- Dies geht schneller, als wenn Sie bei jedem Schritt anhalten.

Sie können Tracepoints setzen, um einen Bericht über die Ergebnisse an den als Tracepoints markierten Stellen zu sehen. Die Auswertung wird dabei nicht angehalten (außer bei Breakpoints), sondern die Tracepoint-Ergebnisse werden in einer Liste im Ergebnisfenster angezeigt.

Mit Hilfe von Überwachungsausdrücken können bestimmte Informationen (wie Dokumentdaten oder Auswertungsaspekte) überprüft werden. Dies ist vor allem an Breakpoints nützlich.

Variablen, die sich im Geltungsbereich befinden, werden einschließlich ihrer Werte im Fenster "Variablen" und "Überwachungsausdrücke" angezeigt.

Prozessoraufrufe eines Auswertungsschritts werden auf dem Register "Call Stack" des Call Stack- und Debug-Punkte-Bereichs angezeigt.

Wenn Breakpoints und Tracepoints gesetzt wurden, werden diese auf dem Register "Debug-Punkte" des Call Stack- und Debug-Punkte-Bereichs angezeigt.

 

Nähere Informationen zu diesen Funktionalitäten finden Sie in der jeweiligen Beschreibung dazu weiter unten.

 

Einrichten des Debug-Modus

Um in den Debug-Modus zu wechseln, klicken Sie im Dropdown-Menü des Befehls Auswertung/Debugging starten (F5) (links oben in der Symbolleiste; siehe Abbildung unten) auf Debugger starten. Im Debug-Modus werden die Bereiche "Überwachungsausdrücke", "Call Stack" und "Debug-Punkte" angezeigt. Um mit dem Debuggen des aktuellen Ausdrucks zu beginnen, klicken Sie auf Debugger starten oder drücken Sie F5.

XPXQWindowSelectEvalMode

Beachten Sie, dass der Debug-Modus nur bei der aktuellen Datei funktioniert; er kann nicht mit mehreren Dateien verwendet werden. Infolgedessen wird die Option Wo automatisch auf Aktuelle Datei gesetzt, wenn Sie in diesen Modus wechseln.

 

 

Ausführen des Debuggers

Das Debuggen eines XPath/XQuery-Ausdrucks erfolgt in den folgenden Schritten:

 

1.Machen Sie die XML/JSON-Datei, an der Sie den Ausdruck ausführen möchten, zur aktiven Datei.

2.Geben Sie den XPath/XQuery-Ausdruck in das Ausdrucksfenster ein.

3.Setzen Sie die gewünschten Breakpoints oder Tracepoints. Ein Breakpoint ist ein Punkt, an dem die Auswertung unterbrochen wird. Ein Tracepoint ist ein Punkt in der Auswertung, der aufgezeichnet wird, sodass Sie einen zurückverfolgbaren Pfad der Auswertungsergebnisse zur Verfügung haben.

4.Starten Sie den Debugger oder gehen Sie die Auswertung mit Hilfe der "Einsteigen", "Aussteigen", "Überspringen"-Funktion Schritt für Schritt durch. Wenn der Debugger gestartet wurde, wird die Auswertung in einem einzigen Schritt bis zum Ende ausgeführt, es sei denn, es wurde ein Breakpoint im Ausdruck markiert. Um bei Breakpoints anzuhalten, verwenden Sie die Schaltflächen "Einsteigen/Aussteigen/Überspringen".

 

 

Einsteigen, Aussteigen und Überspringen von Auswertungsschritten

Mit der Funktion "Einsteigen" können Sie die Auswertung Schritt für Schritt durchgehen. Jeder Klick leitet Sie durch den entsprechenden Schritt der Auswertung. Der aktuelle Schritt wird im Ausdruck markiert (siehe Abbildung unten). Mit der Funktion Aussteigen gelangen Sie zur nächsthöheren Ebene und mit Überspringen werden Schritte auf niedrigeren Ebenen übersprungen und Sie gelangen zum nächsten Schritt auf derselben Ebene. Um die Schrittfunktionen zu probieren, kopieren Sie den unten stehenden XQuery 3.1-Ausdruck in das Ausdrucksfenster und klicken Sie auf die drei Schritt-Schaltflächen, um zu sehen, wie diese funktionieren.

 

 

 

In der Abbildung unten sehen Sie die Auswertung an der Stelle, an der die Verarbeitung bei Erreichen des Additionsschritts $a + $b während der ersten Verarbeitung der Schleife, d.h. wenn $i=1, angehalten wird. In diesem Additionsschritt wird als Ergebnis (als Folge von 1+2) 3 angezeigt.

XPathXQueryWindowDebug02

 

Breakpoints

Breakpoints sind Punkte, an denen der Debugger angehalten werden soll, nachdem er mit Debugger starten gestartet wurde. Sie eignen sich dazu, einen bestimmten Teil eines Ausdrucks zu analysieren. Wenn der Debugger an einem Breakpoint anhält, können Sie das Ergebnis überprüfen. Mit Hilfe der Funktion Einsteigen können Sie anschließend die Ergebnisse des nächsten Schritts der Auswertung anzeigen. Um einen Breakpoint zu setzen, platzieren Sie den Cursor an der Stelle in den Ausdruck, an der Sie den Breakpoint setzen möchten und klicken Sie auf die Symbolleisten-Schaltfläche Breakpoint einfügen/löschen (F9). Der Breakpoint wird daraufhin mit einem rot strichlierten Überstrich markiert (siehe Abbildung unten). Um einen Breakpoint zu löschen, wählen Sie ihn aus und klicken Sie auf Breakpoint einfügen/löschen (F9).

 

Siehe auch Debug-Punkte weiter unten.

 

Tracepoints

Tracepoints sind Breakpoints, an denen die Ergebnisse aufgezeichnet und in der Ablaufverfolgungsstruktur des Registers Ergebnis (siehe Abbildung oben) angezeigt werden. Dadurch sehen Sie alle Auswertungsergebnisse bestimmter Teile des Ausdrucks. So wurden z.B. in der Abbildung unten Tracepoints bei $a, $b, local:plus($i, $i+1) gesetzt. Die Ergebnisse dieser Tracepoints werden während der ersten Iteration durch die Schleife in der Ablaufverfolgungsstruktur angezeigt: $a=1, $b=2, und local:plus($i, $i+1)=3.

 

Um einen Tracepoint zu setzen, platzieren Sie den Cursor an der Stelle in den Ausdruck, an der Sie den Tracepoint setzen möchten und klicken Sie auf die Symbolleisten-Schaltfläche Tracepoint einfügen/löschen (Umschalt+F9). Der Tracepoint wird daraufhin mit einem blau strichlierten Überstrich markiert (siehe Abbildung unten). Um einen Tracepoint zu löschen, wählen Sie ihn aus und klicken Sie auf Tracepoint einfügen/löschen (Umschalt+F9).

 

XPathXQueryDebug03BreakTrace

Anmerkung:Wenn an einer Stelle eines Ausdrucks sowohl ein Breakpoint als auch ein Tracepoint gesetzt wurde, so besteht der Überstrich aus abwechselnd gesetzten roten und blauen Strichen.

 

Siehe auch Debug-Punkte weiter unten.

 

Variablen, Überwachungsausdrücke und Call Stack

Variablen und Überwachungsausdrücke werden im Variablen- und Überwachungsausdrucksbereich (mittlerer unterer Bereich in der Abbildung unten) angezeigt.  

XPathXQueryWindowDebug03

Variablen

Variablen, die im Ausdruck deklariert wurden und sich im aktuellen Auswertungsschritt im Geltungsbereich befinden, werden zusammen mit den jeweiligen aktuellen Werten angezeigt. So wurde z.B. in der Abbildung oben der Aufruf der Funktion local:plus erreicht. Die Variable $i befindet sich in der Funktion local:loop im Geltungsbereich und wurde soeben auf 2 inkrementiert, daher wird $i mit ihrem aktuellen Wert angezeigt. Die Variablen $a und $b befinden sich nicht in local:loop und somit auch nicht im Geltungsbereich. Sie werden daher auch nicht angezeigt.

 

Überwachungsausdrücke

Überwachungsausdrücke sind Ausdrücke, die Sie entweder vor Beginn einer Auswertung oder während einer Pause in der Auswertung eingeben können. Sie können für folgende Zwecke verwendet werden:

 

um bestimmte Bedingungen zu überprüfen. So wird z.B. in der Abbildung unten mit dem Überwachungsausdruck $i=1 to 5 überprüft, ob die Variable $i einen Wert im angegebenen Bereich hat. Das Ergebnis true besagt, dass diese Bedingung erfüllt wird.

um Daten in einem bestimmten Kontext zu suchen. So könnten wir z.B. im Kontext eines Elements Company den Überwachungsausdruck @id eingeben, um den Kundencode des Unternehmens im XML-Zieldokument nachzuschlagen.

um zusätzliche Daten zu generieren. So könnte etwa mit dem Überwachungsausdruck if ($i=1 to 5) then (concat("Iteration ", $i)) else "Out of Loop" in der Abbildung oben ein passender String generiert werden, mit dem angegeben wird, in welcher Iteration der Schleife sich die Auswertung gerade befindet.

 

Um einen Überwachungsausdruck einzugeben, klicken Sie in der Symbolleiste des Fensters auf Überwachung hinzufügen (in der Abbildung oben rot umrandet), geben Sie anschließend den Ausdruck ein und klicken Sie anschließend auf Eingabe. Um einen Überwachungsausdruck zu entfernen, wählen Sie ihn aus und klicken Sie in der Symbolleiste auf Ausgewählten Überwachungsausdruck entfernen. Wenn der Ausdruck während des Debuggens aus irgendeinem Grund (z.B. wenn sich eine seiner Variablen nicht im Geltungsbereich befindet) nicht korrekt ausgewertet werden kann, wird der Überwachungsausdruck rot angezeigt.

 

Call Stack

Auf dem Register Call Stack des Call Stack- und Debug-Punkte-Bereichs (rechter unterer Bereich in der Abbildung oben) werden die Prozessoraufrufe bis zu diesem Punkt im Debugging angezeigt. Der aktuelle Prozessoraufruf erscheint gelb markiert. Beachten Sie, dass nur die Aufrufe, die direkt zum aktuellen Auswertungsschritt geführt haben, angezeigt werden. So ist etwa in der Abbildung oben der aktuelle Auswertungsschritt ein Funktionsaufruf der Funktion local:plus. Obwohl dies die zweite Iteration von local:loop ist, werden die Prozessoraufrufe der ersten Iteration nicht angezeigt, da sich diese Aufrufe auf einer Parallelebene zur aktuellen Funktion befinden und nicht zu dieser Funktion geführt haben.

 

Debug-Punkte

Auf dem Register Debug-Punkte des Call Stack- und Debug-Punkte-Bereichs (rechter unterer Bereich in der Abbildung oben) werden die im Ausdruck gesetzten Breakpoints (rote Kreise) und Tracepoints (blaue Kreise) angezeigt. Jeder Debug-Punkt wird mit der jeweiligen Zeilen- und Zeichennummer angezeigt. So bedeutet etwa FunctionCall@6:17, dass sich in Zeile 6, Zeichen 17 ein Debug-Punkt befindet.

XPXQWindowDebugPoints

Beachten Sie die folgenden Funktionalitäten:

 

Durch Doppelklick auf Break-Bedingung eingeben, Eingabe des Ausdrucks für die Bedingung und Drücken der Eingabetaste können Sie eine Break-Bedingung für Breakpoints eingeben. Dieser Breakpoint ist nur dann aktiv, wenn das Resultat der Auswertung der Bedingung true ist. So aktiviert die Break-Bedingung $i=3 in der Abbildung oben den Breakpoint in diesem Funktionsaufruf nur, wenn der Wert von $i 3 ist. In der Abbildung sehen Sie, dass die Auswertung an diesem Breakpoint angehalten wurde.

Durch Klick auf die entsprechende Symbolleisten-Schaltfläche Alle Debug-Punkte aktivieren und Alle Debug-Punkte deaktivieren (grün umrandete Schaltflächen in der Abbildung oben) können Sie alle Debug-Punkte aktivieren bzw. deaktivieren. Wenn ein Debug-Punkt deaktiviert ist, bleibt er bis zu seiner erneuten Aktivierung für alle Auswertungen deaktiviert.

Einzelne Breakpoints können im dazugehörigen Kontextmenü aktiviert bzw. deaktiviert werden.

 

Symbolleisten-Schaltflächen in den Fenstern

Die Bereiche des XPath/XQuery-Fensters im Debug-Modus (siehe Abbildung oben) enthalten Schaltflächen für die Navigation, Suche und Kopierfunktionen. Diese Schaltflächen werden in der Tabelle unten von links nach rechts beschrieben. Die dazugehörigen Befehle finden Sie auch im Kontextmenü der aufgelisteten Einträge.

 

 

Symbol

Funktion

 
Weiter, Zurück

Wählt jeweils den nächsten bzw. vorhergehenden Eintrag in der Ergebnisliste aus

Ausgewählte Textzeile in die Zwischenablage kopieren

Kopiert die Wertespalte des ausgewählten Ergebniseintrags in die Zwischenablage. Um alle Spalten zu kopieren, aktivieren Sie den Befehl Beim Kopieren werden alle Spalten inkludiert (siehe unten)

Alle Nachrichten in die Zwischenablage kopieren

Kopiert die Wertespalte aller Ergebniseinträge, darunter auch leere Werte, in die Zwischenablage. Jeder Eintrag wird als separate Zeile kopiert.

Beim Kopieren werden alle Spalten inkludiert

Wechselt zwischen der Funktion zum Kopieren (i) aller Spalten und (ii) nur der Wertespalte. Das Spaltentrennzeichen ist ein einziges Leerzeichen.

Suchen

Öffnet ein Suchdialogfeld zum Suchen nach einem beliebigen String - darunter auch von Sonderzeichen - in der Ergebnisliste.

Vorheriges suchen

Sucht nach der vorhergehenden Instanz des zuletzt im Suchdialogfeld gesuchten Eintrags.

Weitersuchen

Sucht nach der nächsten Instanz des zuletzt im Suchdialogfeld gesuchten Eintrags.

Zurücksetzen

Löscht die Ergebnisliste.

Mehrzeilige Ergebnisse auf eine einzige Zeile reduzieren

Wenn die Wertespalte eines Ergebniseintrags mehrzeiligen Text (Text der Zeilenvorschubzeichen beinhaltet) enthält, können Sie zwischen einer mehrzeiligen und einer einzeiligen Anzeige wechseln.

Vollständiges Ergebnis anzeigen

Zeigt den gesamten Inhalt von Nodes als Wert des Node an.

Kopfzeile in der Ausgabe anzeigen

Zeigt den Pfad der XML-Datei(en) und den XPath-Ausdruck an.

 

 

© 2019 Altova GmbH