fn:trace

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

   

Kategorie: Fehlermeldungen und Debugging

Herkunft: XPath 2.0

Rückgabewert: Die Eingabesequenz in unveränderter Form.

Aufruf/Argumente:

fn:trace($eingabesequenz, $label)

$eingabesequenz:
Eine Eingabesequenz aus einer beliebigen Zahl von Items beliebigen Typs, die von der Funktion unverändert weitergegeben werden, nachdem sie ihre Protokollfunktion ausgeführt hat. Die leere Sequenz ist gestattet.

$label:
Obligatorisch. Ein String xs:string, der jeweils in Verbindung mit den Einga­bewerten dem Protokoll hinzugefügt wird, das durch die Funktion erstellt wird.

Verwendungszweck:

Die Funktion fn:trace() ist als Hilfsmittel zu Debuggingzwecken gedacht. Sie kann beispielsweise im Rahmen des Aufrufs einer anderen Funktion zwischengeschaltet werden, um während der Laufzeit des Stylesheets zu protokollieren (tracing), welche Werte jene beim Aufruf tat­sächlich erhält.

Die Trace-Funktion übernimmt zunächst die letztlich der anderen Funktion zugedachten Eingangswerte, schreibt diese mit einem dazugehörigen Kom­mentarlabel in eine Protokolldatei und gibt sie anschließend unverändert an die überwachte Funktion weiter:

fn:beispielfunktion( 
      fn:trace($eingangswerte, 'Kommentar')
  
)

Dies entspricht, da fn:trace() die Eingangswerte transparent weitergibt, fn:beispielfunktion($eingangswerte).

Mit mehreren Instanzen der Funktion fn:trace() können verschiedene Punkte des Stylesheets zur Laufzeit überwacht werden. Da alle Instanzen in die­selbe Protokolldatei schreiben, müssen die Kommentarlabel $label geeignet gewählt werden, um die Aufzeichnungen entsprechend zuordnen zu können.

Auf welche Weise die Protokolldatei geführt wird und wo diese abgespeichert wird, ist der jeweiligen Implementierung überlassen, ebenso die Reihenfolge, in der die Aufrufe von fn:trace() in ihr protokolliert werden.

Der XSLT-Prozessor Saxon schreibt das Protokoll defaultmäßig in System.err. Eine Umleitung in eine andere Datei ist jedoch durch einen Kommandozeilenbefehl möglich. Die Werte der Eingangssequenz werden in Stringform protokolliert, falls es sich um atomare Werte handelt, und in Form von XPath-Ausdrücken, wenn es sich um Nodes handelt. Eine leere Eingangssequenz wird durch den String »empty sequence« dokumentiert.

Die Implementierung von Debugging-Möglichkeiten ist herstellerabhängig
Es ist zu erwarten, dass neben oder alternativ zu fn:trace() auch proprietäre Debuggingverfahren in den Implementierungen verschiedener Hersteller zur Verfügung stehen werden. Diese können unter Umständen mächtiger oder besser konfigurierbar sein – es ist im Einzelfall abzuwägen, ob diese der Standard-Debuggingmethode vorzuziehen sind.

Funktionsdefinition:

XPath 1.0:

Funktion nicht verfügbar

XPath 2.0:

fn:trace($value as item()*,
         $label as xs:string) as item()*

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn