Show TOC

XSLT-MappingLocate this document in the navigation structure

Verwendung

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.

Funktionsumfang

Empfehlung zur Verwendung von SAP XML Toolkit und JDK

XSLT-Programme wurden vor SAP Process Integration (PI) 7.1 mit Hilfe des SAP XML Toolkit ausgeführt. Das SAP XML Toolkit wird unterstützt von SAP NetWeaver PI 7.1 sowie von höheren Releases.

Neuen Kunden wird jedoch empfohlen das Java Development Kit (JDK) für alle neuen XSLT-Mapping-Programme zu verwenden, sowie alle vorhandenden XSLT-Programme mit dem JDK zu testen und entsprechend anzupassen.

Im Vergleich zum SAP XML Toolkit bietet das JDK folgende Vorteile:

  • XSLT-Programme werden schneller ausgeführt.

  • Die Fehlerbehandlung ist eleganter.

  • Der Funktionsumfang ist größer.

Wenn Sie SAP NetWeaver 7.3 installiert haben, empfehlen wir Ihnen JDK 6. Die gilt auch für Enhancement Package 1 für SAP NetWeaver 7.3.

Hinweis

Um das JDK als Laufzeit für XSLT-Mapping-Programme zu verwenden, wählen Sie in dem Operation-Mapping, von dem Sie auf die XSLT-Mapping-Programme verweisen, nicht Verwende SAP XML Toolkit aus.

XPath und <xsl:include>

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-Dokuments 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.

Laufzeit-Konstanten

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

$MessageClass

Klassifizierung der Message. Mögliche Werte:

  • ApplicationMessage: Asynchrone oder synchrone Request-Message

  • ApplicationResponse: Antwort auf eine Request-Message

  • SystemAck , ApplicationAck , SystemError , ApplicationError : Acknowledgment-Messages

$VersionMajor

Version des XI Message-Protokolls. Beispiel: Für das XI 3.0 Message-Protokoll ist VERSION_MAJOR = 3 und VERSION_MINOR = 0.

$VersionMinor

$ProcessingMode

Der Modus einer Message kann synchron oder asynchron sein. Entsprechend kann diese Konstante den Wert synchronous oder asynchronous haben.

$MessageId

Die Message-ID. Sie kann sich während der Kommunikation verä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.

$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.

$ConversationId

Dieses Feld ist nicht obligatorisch in der Message enthalten. Es ermöglicht die Verwendung einer ID zur Gruppierung von zusammengehörenden Messages. Dieses Feld ist nicht dazu gedacht eine Serialisierung von Messages zu realisieren und hat nichts mit dem Serialisierungskontext (ABAP-Proxy-Laufzeit, Java-Proxy-Laufzeit) zu tun.

$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.

$Interface

Name des Sender-Interface. Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_NAME.

$InterfaceNamespace

Namensraum des Sender-Interface.

Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_NAMESPACE.

$SenderParty

Kommunikationspartner, der die Message verschickt hat

$SenderPartyAgency

Vergebende Agentur für den Sender der Message.

$SenderPartyScheme

Verwendetes Identifikationsschema des Senders.

$SenderService

Service auf Senderseite, der die Message verschickt hat. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln.

Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante SENDER_SYSTEM.

$ReceiverName

Name des Empfänger-Interface.

$ReceiverNamespace

Namensraum des Empfänger-Interface.

$ReceiverParty

Kommunikationspartner, der die Message empfangen soll.

$ReceiverPartyAgency

Vergebende Agentur für den Empfänger der Message.

$ReceiverPartyScheme

Verwendetes Identifikationsschema des Empfängers.

$ReceiverService

Service auf Empfängerseite, der die Message empfangen soll. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln.

Verwenden Sie ab SAP XI 3.0 diese Konstante anstelle der bisherigen Konstante RECEIVER_SYSTEM.

$MappingTrace

Gibt ein AbstractTrace-Objekt zurück, mit dem Sie im Mapping-Programm Meldungen in das Monitoring schreiben können.

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" />

Java-Erweiterungen

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. Hier erfahren Sie mehr über das XSLT-Mapping mit Java-Erweiterung.

Hinweis

Weitere Informationen zu XSL/XSLT und XPath finden Sie auf der Web-Site des W3-Consortiums.

Beispiel

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 Mapping-Regel, wie die Laufzeit der Process Integration die symbolischen Werte im Quellsystem in numerische Werte des Zielsystems konvertiert.

Benutzerdefinierter XSLT-Transformer zur Unterstützung von XSLT 2.0 in XLST-Mappings

Um einen externen Transformer zu verwenden, wird dieser als externes Archiv in den ESR-Content importiert und zusammen mit den Mappings verwendet, die ihn benutzen.

Die beschriebene Lösung ist generisch und gültig für jeden XSLT-Transformer, der der JAXP-Spezifikation genügt.

Um die Verwendung externer Transformer zu ermöglichen, gibt es eine neue Eigenschaft im Exchange-Profil. Ist diese Eigenschaft true, sucht die Mapping-Laufzeit nach importierten Transformern und verwendet ihn, wenn sie einen findet. Die Eigenschaft ist global, aber externe Transformer werden nur für die Softwarekomponentenversionen verwendet, bei denen ein externer Transformer importiert wird, oder wenn ein externer Transformer in eine referenzierte Komponente importiert wird. Ein externer Transformer wird nur verwendet, wenn das Mapping die Standard-Java-Implementierung verwendet, nicht das SAP-XML-Toolkit.

Aktivitäten

  1. Importieren Sie den Transformer als externes Archiv. Siehe Importierte Archive (XSLT/Java).
    Hinweis
    Beim Importieren eines externen Transformers müssen laut JAXP-Spezifikation die folgenden Ressourcen in den Archiven verfügbar sein:
    • /META-INF/services/javax.xml.transform.TransformerFactory
    • /META-INF/services/javax.xml.xpath.XPathFactory
    Der Inhalt dieser Ressourcen definiert die Implementierung des Transformers oder XPATH-Auswerters.
  2. Setzen Sie die folgende Eigenschaft auf true: AII config service: com.sap.aii.ibrun.server.mapping.externalTransfomer. Siehe Service XPI Service: AII Config Service Parameters.