Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Fehlerbehandlung in XSLT  Dokument im Navigationsbaum lokalisieren

Verwendung

In umfangreichen XSLT-Programmen ist es sinnvoll, Meldungen im Fehlerfall auszugeben. Dafür gibt es das XSLT-Kommando <xsl:message>. Beispielsweise könnte im Quelldokument ein Wert enthalten sein, der vom Mapping-Programm nicht erwartet wird. In diesem Fall können Sie eine Meldung ausgeben und falls nötig die Verarbeitung des Mappings abbrechen.

Hinweis

Alternativ können Sie auch eine Java-Methode aus Ihrem XSLT-Programm aufrufen, die über das MappingTrace-Objekt Informationen in den Trace schreibt. Ein Beispiel gibt es im Abschnitt XSLT Mapping mit Java-Erweiterung.

Das MappingTrace-Objekt wird im PCK nicht unterstützt.

Integration

Meldungen, die über das XSLT-Kommando <xsl:message> oder das MappingTrace-Objekt ausgegeben werden, sind im Trace des technischen Monitors sichtbar (siehe auch: Monitoring von XML-Messages).

Funktionsumfang

Das XLST-Kommando <xsl:message> hat die folgende Syntax:

<xsl:message terminate=“[yes|no]“>

      <!-- Auszugebende Nachricht -->

</xsl:message>

Das Attribut Terminate bestimmt, ob die Verarbeitung des XSLT-Programms abgebrochen werden soll (terminate=“yes“) oder nicht (terminate=“no“). In beiden Fällen finden Sie die Nachricht im Trace wieder, den Sie sich im Monitoring zu einer Message anschauen können. (Voraussetzung dafür ist allerdings, dass der Trace für die Integration Engine aktiviert wurde.)

Beispiel

Der folgende Beispiel XSLT-Programmabschnitt ist ein Auszug aus einem Mapping-Programm mit dem Namen Person2Passenger.xsl. Die XSLT-Kommandos in diesem Abschnitt werten den aktuellen Wert eines Tags aus dem Quelldokument aus und bilden dabei die Werte folgendermaßen ab:

Quelldokument

Zieldokument

0

Mr.

1

Mrs.

(andere)

Mr. or Mrs.

Der letzte Fall ist eine Ausnahme für nicht interpretierbare Werte. Um dieses Ausnahme im Trace festzuhalten wird eine Nachricht über <xsl:message> ausgegeben:

<xsl:choose>

<xsl:when test="test()=0">Mr.</xsl:when>
<xsl:when test="test()=1">Mrs.</xsl:when>

<xsl:otherwise> Mr. or Mrs.

<xsl:message terminate="no">

Gender has neither value 0 nor 1!
"Mr. or Mrs." was chosen for title.

</xsl:message>

</xsl:otherwise>

</xsl:choose>

Da das Zielfeld noch sinnvoll gefüllt werden kann, wird die Verarbeitung nicht abgebochen (terminate=“no“).

Trace-Ausgabe

Im technischen Monitor, sieht der Abschnitt im Trace für den dritten Fall folgendermaßen aus:

<CALL kind="ENTER" func="CL_XMS_PLSRV_MAPPING~ENTER_PLSRV" />

<trc1>XSLT transformation: xslt/wsxx/Person2Passenger completed. Gender has neither value 0 nor 1! "Mr. or Mrs." was chosen for title.</trc1>

<CALL kind="EXIT" func="CL_XMS_PLSRV_MAPPING~ENTER_PLSRV" />

 

 

 

Ende des Inhaltsbereichs