XSLT Mapping
Die Schnittstellenbeschreibungen liegen als XML-Dokumente vor. XSL Transformation (XSLT) ist eine Sprache der XML-Familie. Sie beschreibt, wie eine XML-Struktur in eine andere transformiert wird.
XSLT-Programme wurden vor SAP NetWeaver Process Integration 7.1 mit Hilfe des SAP XML Toolkits ausgeführt. Mit der Version 5 des Java Development Kits wird die Verwendung des SAP XML Toolkits obsolet. Im Vergleich zum SAP XML Toolkit bietet das JDK 5 beispielsweise folgende Vorteile:
● XSLT-Programme werden unter JDK 5 schneller ausgeführt.
● Die Fehlerbehandlung von JDK 5 ist eleganter.
● JDK 5 unterstützt einen größeren Funktionsumfang als das SAP XML Toolkit.
Das SAP XML Toolkit wird noch zu SAP NetWeaver Process Integration 7.1 und dem darauf folgenden Release unterstützt (danach nicht mehr). SAP empfiehlt daher, für neue XSLT-Mapping-Programme das JDK 5 zu verwenden und bestehende XSLT-Programme mit dem JDK 5 zu testen und gegebenenfalls anzupassen. Um das JDK 5 als Laufzeit für XSLT-Mapping-Programme zu verwenden, kreuzen Sie das Feld Verwende SAP XML Toolkit in dem Operation-Mapping, von dem Sie auf die XSLT-Mapping-Programme verweisen, nicht an.

Mit SAP NetWeaver 2007 wird im PCK ausschließlich das JDK 5 zur Verfügung gestellt.
Sie können mit XSLT in Verbindung mit XPath Mappings definieren. XPath ist ebenfalls eine Spezifikation der XML-Familie. Mittels XPath können Sie einen beliebigen Knoten im XML-Dokument adressieren. XSLT setzt XPath-Ausdrücke ein, um Teilstrukturen eines XML-Dokumentes zu selektieren. Mit sogenannten Templates in XSLT definieren Sie die Abbildungsvorschriften für die ausgewählten Teilstrukturen.
Sie können die XSLT-Tags <xsl:include> und <xsl:import> verwenden, um vordefinierte Templates für Teilstrukturen in eine gesamte Mapping-Definition einzubeziehen. Damit können Sie Mappings für Datentypen wiederverwenden.
Wie bei Java-Mappings liefert Ihnen auch die Mapping-Laufzeit bei XSLT-Programmen Parameter, mit denen Sie erst zur Laufzeit bekannte Informationen im XSLT-Programm auswerten können:
Konstanten der Mapping-Laufzeit
Konstante |
Bedeutung |
Relevant für PCK |
$MessageClass |
Klassifizierung der Message. Mögliche Werte: ●
ApplicationMessage: ●
ApplicationResponse: ●
SystemAck, ApplicationAck, SystemError, ApplicationError: |
Ja |
$VersionMajor |
Version des XI Message-Protokolls. Beispiel: Für das XI 3.0 Message-Protokoll ist VERSION_MAJOR = 3 und VERSION_MINOR = 0. |
Nein Das PCK verwendet nur das Message-Protokoll XI 3.0 |
$VersionMinor |
|
Nein |
$ProcessingMode |
Der Modus einer Message kann synchron oder asynchron sein. Entsprechend kann diese Konstante den Wert synchronous oder asynchronous haben. |
Ja |
$MessageId |
Die Message-ID. Sie kann sich während einer Kommunikation ändern: · Response-Messages bekommen eine neue Message-ID. · Wenn aus einer Message neue hervorgehen (Kopieren der Message bei mehreren Empfängern), bekommen die neuen Messages neue Message-IDs. |
Ja |
$RefToMessageId |
ID einer referenzierten Message, die semantisch zu dieser Message gehört. Beispielsweise ‚merkt’ sich eine Response-Message über dieses Feld zu welcher Request-Message sie gehört. |
Ja |
$ConversationId |
Dieses Feld ist nicht obligatorisch in
der Message enthalten und erlaubt die Verwendung einer ID zum Zwecke der
Gruppierung von zusammengehörenden Messages. Dieses Feld ist nicht dazu
gedacht, eine Serialisierung von Messages zu realisieren und hat nichts
mit dem Serialisierungskontext (
|
Ja
|
$TimeSent |
Zeitstempel, der angibt, wann die Message beim Sender abgeschickt wurde. Das Format des Zeitstempels ist: YYYY-MM-DDTHH:MM:SSZ Der Buchstabe ‚T’ trennt das Datum von der Zeit, die in der Regel in UTC angegeben ist. Falls es sich um eine lokale Zeit handelt, entfällt das abschließende ‚Z’. |
Ja |
$Interface |
Name des Sender-Interfaces. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_NAME verwenden. |
Ja |
$InterfaceNamespace |
Namensraum des Sender-Interfaces. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_NAMESPACE verwenden. |
Ja |
$SenderParty |
Kommunikationspartner, der die Message verschickt hat |
Ja Siehe auch:
|
$SenderPartyAgency |
Vergebende Agentur zum Sender der Message |
Ja |
$SenderPartyScheme |
Verwendetes Identifikationsschema des Senders |
Ja |
$SenderService |
Service auf Senderseite, der die Message verschickt hat. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_SYSTEM verwenden. |
Ja Siehe auch:
|
$ReceiverName |
Name des Empfänger-Interfaces. |
Ja |
$ReceiverNamespace |
Namensraum des Empfänger-Interfaces. |
Ja |
$ReceiverParty |
Kommunikationspartner, der die Message empfangen soll |
Ja Siehe auch:
|
$ReceiverPartyAgency |
Vergebende Agentur zum Empfänger der Message |
Ja |
$ReceiverPartyScheme |
Verwendetes Identifikationsschema des Empfängers |
Ja |
$ReceiverService |
Service auf Empfängerseite, der die Message empfangen soll. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante RECEIVER_SYSTEM verwenden. |
Ja Siehe auch:
|
$MappingTrace |
Gibt ein AbstractTrace-Objekt zurück, mit dem Sie im Mapping-Programm Meldungen in das Monitoring schreiben können. |
Nein |
Wenn Sie auf eine der Konstanten im XSLT-Programm zugreifen wollen, müssen Sie die Konstante vorher als Parameter deklarieren, zum Beispiel:
<xsl:param name="MessageId" />
Außerdem ist es möglich, von einer XSLT-Definition aus externe Java-Methoden zum Konvertieren von XML-Strukturen aufzurufen. Diese Vorgehensweise gibt Ihnen mehr Flexibilität für die Definition von Mappings. Sie erfahren später mehr über das XSLT Mapping mit Java-Erweiterung.

Sie können Details zu XSL/XSLT und XPath auf der Web-Site des W3-Consortium nachlesen.
Die Funktion für Flugbuchung enthält einen Parameter für die Flugklasse. Das Outbound-Interface stellt Flugklassen als symbolischen Werte dar, während sie im Inbound-Interface numerische Werte haben. Der XSLT-Abschnitt wandelt die symbolische Darstellung vom Quellsystem in die numerische des Zielsystems um.
Der XPath-Ausdruck match=“//hh:class“wählt den Knoten <hh:class> im Outbound-Interface aus. Die XSLT-Anweisung <xsl:choose> definiert schließlich die Abbildungsvorschrift, wie die Integration Engine die symbolischen Werte im Quellsystem in numerische Werte des Zielsystems konvertiert.
