Beispiel: Verwenden von Dateinamen als Mapping-Parameter
In diesem Beispiel wird Schritt für Schritt beschrieben, wie Sie ein Mapping ausführen, das zur Laufzeit Input-Parameter erhält. Sie finden die in diesem Beispiel verwendete Mapping-Design-Datei unter dem Pfad: <Dokumente>\Altova\MapForce2025\MapForceExamples\FileNamesAsParameters.mfd.
In diesem Mapping werden Daten aus einer XML-Quelldatei ausgelesen und in eine XML-Zieldatei geschrieben. Die Daten werden beinahe unverändert in die Zieldatei geschrieben; nur die Attribute PrimaryKey und Name werden mit Konstantenwerten aus dem Mapping befüllt. Hauptaufgabe des Mappings ist, dem Aufrufenden eine Möglichkeit zu geben, die Namen der Input- und Output-Datei zur Mapping-Laufzeit in Form von Mapping-Parametern anzugeben.
Das Mapping hat zu diesem Zweck zwei Input-Komponenten: InputFileName und OutputFileName. Diese Komponenten stellen den Input-Dateinamen (bzw. den Output-Dateinamen) der XML-Quell- und der XML-Zieldatei bereit. Aus diesem Grund wurden Sie mit dem Datenelement Datei:<dynamisch> verbunden. Durch Klicken auf die Schaltfläche Datei/String ( ) und Auswahl der Option Über das Mapping bereitgestellte dynamische Dateinamen verwenden können Sie eine Komponente in diesen Modus schalten.
FileNamesAsParameters.mfd (MapForce Enterprise Edition)
Wenn Sie auf die Titelleiste einer der Komponenten (InputFileName oder OutputFileName) doppelklicken, sehen Sie deren Eigenschaften. So können Sie etwa den Datentyp des Input-Parameters definieren oder den Namen des Input-Parameters ändern, wie unter Einstellungen für einfache Input-Komponenten beschrieben. In diesem Beispiel sind die Input- und Output-Parameter folgendermaßen konfiguriert:
•Der Parameter InputFileName hat den Typ "string" und hat einen Standardwert, der von einer im selben Mapping definierten Konstante stammt. Die Konstante hat den Typ "string" und den Wert "Altova_Hierarchical.xml". Bei Ausführung dieses Mappings wird daher versucht, Daten aus einer Datei namens "Altova_Hierarchical.xml" zu lesen, vorausgesetzt Sie geben keinen anderen Wert als Parameter an.
•Der Parameter OutputFileName hat den Typ "string" und hat einen Standardwert, der von einer im selben Mapping definierten Konstante stammt. Die Konstante hat den Typ "string" und den Wert "Altova_Hierarchical_output.xml". Das Mapping erstellt daher bei seiner Ausführung eine XML-Ausgabedatei namens "Altova_Hierarchical_output.xml", vorausgesetzt Sie geben keinen anderen Wert als Parameter an.
In den folgenden Abschnitten wird beschrieben, wie Sie das Mapping ausführen und in den folgenden Transformationssprachen Parameter bereitstellen:
•XSLT 2.0 mit Hilfe von RaptorXML Server
•Built-in (MapForce Server-Ausführungsdatei) mit Hilfe von MapForce Server
•Java
•C#
•C++
XSLT 2.0
Wenn Sie Code in XSLT 1.0, XSLT 2.0 oder XSLT 3.0 generieren, wird im gewählten Zielverzeichnis zusätzlich zur XSLT-Datei die Batch-Datei DoTransform.bat generiert. Mit Hilfe von DoTransform.bat können Sie das Mapping mit RaptorXML Server ausführen, siehe Automatisierung mit RaptorXML Server.
Um eine andere Input (oder Output)-Datei zu verwenden, bearbeiten Sie die Datei DoTransform.bat, damit Sie die erforderlichen Parameter enthält. Gehen Sie dazu folgendermaßen vor:
1.Generieren Sie zuerst den XSLT-Code (Um z.B. XSLT 2.0 zu generieren, klicken Sie im Menü Datei auf Code generieren in | XSLT 2.0).
2.Kopieren Sie die Datei Altova_Hierarchical.xml aus <Dokumente>\Altova\MapForce2025\MapForceExamples\ in das Verzeichnis, in dem Sie XSLT 2.0-Code generiert haben (in diesem Beispiel c:\codegen\examples\xslt2\). Wie zuvor erwähnt, versucht das Mapping diese Datei zu lesen, wenn Sie keinen benutzerdefinierten Wert für den Parameter InputFileName bereitstellen.
3.Bearbeiten Sie DoTransform.bat, sodass diese den benutzerdefinierten Input-Parameter entweder vor oder nach %* enthält. Beachten Sie, dass der Parameterwert innerhalb von einfache Anführungszeichen gesetzt wird. Die verfügbaren Input-Parameter werden im Abschnitt rem (Remark) aufgelistet. Angenommen, Sie möchten eine Output-Datei mit dem Namen output.xml generieren. Ändern Sie dazu die Datei DoTransform.bat folgendermaßen:
@echo off
RaptorXML xslt --xslt-version=2 rem --param=InputFileName: rem --param=OutputFileName: IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL% |
Wenn Sie die Datei DoTransform.bat ausführen, stellt RaptorXML Server die Transformation mit Hilfe von Altova_Hierarchical.xml als Input fertig. Wenn Sie die obige Anleitung befolgt haben, erhält die generierte Ausgabedatei den Namen output.xml.
MapForce Server-Ausführungsdatei
So stellen Sie für eine MapForce Server-Ausführungsdatei benutzerdefinierte Input-Parameter zur Verfügung:
1.Öffnen Sie das Beispiel FileNamesAsParameters.mfd aus dem Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\, falls Sie das noch nicht getan haben.
2.Klicken Sie im Menü Datei auf Zu MapForce Server-Ausführungsdatei kompilieren, siehe Kompilieren von Mappings zu MapForce Server-Ausführungsdateien. Wenn Sie dazu aufgefordert werden, speichern Sie die .mfx-Ausführungsdatei in einem Verzeichnis auf Ihrem Rechner (in diesem Beispiel unter c:\codegen\examples\mfx\ ).
3.Kopieren Sie die Datei Altova_Hierarchical.xml aus dem Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\ in das Verzeichnis, in dem Sie die .mfx-Datei gespeichert haben.
4.Führen Sie MapForce Server mit dem folgenden Befehl aus:
MapForceServer.exe run "C:\codegen\examples\mfx\FileNamesAsParameters.mfx" |
In obigen MapForce Server-Befehl sind -p=InputFileName und -p=OutputFileName die Input-Parameter für das Mapping. Sie können als Wert von -OutputFileName jeden beliebigen Dateinamen verwenden. Der im Parameter -InputFileName bereitgestellte Dateiname muss jedoch als physische Datei vorhanden sein, da das Mapping sonst fehlschlägt.
Anmerkung: | Wenn Sie die Meldung "MapForceServer.exe wird nicht als interner oder externer Befehl, Programm oder Batch-Datei erkannt", ändern Sie das aktuelle Verzeichnis in das Verzeichnis, in dem die ausführbare MapForce Server-Datei installiert ist. Damit Sie den Pfad nicht bei jeder Mapping-Ausführung ändern müssen, fügen Sie den Pfad zum Verzeichnis, in dem die ausführbare MapForce Server-Datei installiert ist (z.B. C:\Programme (x86)\Altova\MapForceServer2025\bin), zur PATH-Umgebungsvariablen Ihres Betriebssystems hinzu. |
Mit MapForce Server kann ein Mapping auch durch Aufruf der MapForce Server API (die von Sparchen wie C++, C# oder Java aus aufgerufen werden kann) ausgeführt werden. Nähere Informationen zu diesem Szenario finden Sie in der MapForce Server-Dokumentation (https://www.altova.com/de/documentation).
Java
So stellen Sie für eine Java .jar-Applikation einen benutzerdefinierten Input-Parameter zur Verfügung:
1.Öffnen Sie das Beispiel FileNamesAsParameters.mfd aus dem Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\, falls Sie das noch nicht getan haben.
2.Klicken Sie im Menü Datei auf den Befehl Code generieren in | Java.
3.Kompilieren Sie den Java-Code zu einer ausführbaren JAR-Datei. Ein Beispiel dafür in Eclipse finden Sie unter Beispiel: Generieren und Ausführen von Java-Code.)
4.Kopieren Sie die Datei Altova_Hierarchical.xml aus <Dokumente>\Altova\MapForce2025\MapForceExamples\ in das Verzeichnis, in dem sich die .jar-Datei befindet. Wie zuvor erwähnt, versucht das Mapping diese Datei zu lesen, wenn Sie keinen benutzerdefinierten Wert für den Parameter InputFileName bereitstellen.
5.Führen Sie die Java-Applikation mit dem folgenden Befehl aus:
java -jar Mapping.jar /OutputFileName "output.xml" |
Im obigen Befehl stellt der Parameter /OutputFileName den Namen der zu generierenden Output-Datei bereit.
Anmerkung: | Wenn Sie bei der Übergabe der Parameter an .jar-Dateien Platzhalterzeichen verwenden, setzen Sie diese Platzhalterzeichen bitte in Anführungszeichen, z.B: |
java -jar Mapping.jar /InputFileName "altova-*.xml" |
C#
So stellen Sie für eine von MapForce generierte C#-Befehlszeilenapplikation einen benutzerdefinierten Input-Parameter zur Verfügung:
1.Öffnen Sie das Beispiel FileNamesAsParameters.mfd aus dem Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\, falls Sie das noch nicht getan haben.
2.Klicken Sie im Menü Datei auf Code generieren in | C# und wählen Sie ein Zielverzeichnis aus (in diesem Beispiel C:\codegen\examples\cs).
3.Öffnen Sie die Projektmappe in Visual Studio und erstellen Sie sie mit Build (Strg + Umschalt + B).
4.Kopieren Sie die Datei Altova_Hierarchical.xml aus <Dokumente>\Altova\MapForce2025\MapForceExamples\ in das Verzeichnis, in dem Mapping.exe generiert wurde (in diesem Beispiel C:\codegen\examples\cs\Mapping\bin\Debug). Wie zuvor erwähnt, versucht das Mapping diese Datei zu lesen, wenn Sie keinen benutzerdefinierten Wert für den Parameter InputFileName bereitstellen.
5.Öffnen Sie ein Eingabeaufforderungsfenster.und wechseln Sie in das Verzeichnis, in dem sich Mapping.exe befindet.
cd C:\codegen\examples\cs\Mapping\bin\Debug |
6.Führen Sie die Applikation mit dem folgenden Befehl aus:
Mapping.exe /OutputFileName output.xml |
Im obigen Befehl stellt der Parameter /OutputFileName den Namen der zu generierenden Output-Datei bereit.
C++
So stellen Sie für eine von MapForce generierte C++-Befehlszeilenapplikation einen benutzerdefinierten Input-Parameter zur Verfügung:
1.Öffnen Sie das Beispiel FileNamesAsParameters.mfd aus dem Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\, falls Sie das noch nicht getan haben.
2.Klicken Sie im Menü Datei auf Code generieren in | C++ und wählen Sie ein Zielverzeichnis aus (in diesem Beispiel C:\codegen\examples\cpp).
3.Öffnen Sie die Projektmappe in Visual Studio und erstellen Sie sie mit Build (Strg + Umschalt + B).
4.Kopieren Sie die Datei Altova_Hierarchical.xml aus <Dokumente>\Altova\MapForce2025\MapForceExamples\ in das Verzeichnis, in dem Mapping.exe generiert wurde (in diesem Beispiel C:\codegen\examples\cpp\Mapping\Debug). Wie zuvor erwähnt, versucht das Mapping diese Datei zu lesen, wenn Sie keinen benutzerdefinierten Wert für den Parameter InputFileName bereitstellen.
5.Öffnen Sie ein Eingabeaufforderungsfenster.und wechseln Sie in das Verzeichnis, in dem sich Mapping.exe befindet.
cd C:\codegen\examples\cpp\Mapping\Debug |
6.Führen Sie die Applikation mit dem folgenden Befehl aus:
Mapping.exe /OutputFileName output.xml |
Im obigen Befehl stellt der Parameter /OutputFileName den Namen der zu generierenden Output-Datei bereit.