Erstellen von Python-Skripts

www.altova.com Dieses Kapitel drucken Eine Ebene nach oben

Startseite > 

Erstellen von Python-Skripts

In diesem Abschnitt werden folgenden Punkte beschrieben:

 

Python-Version
Speichern von Python-Skripts
Übergeben eines Python-Skripts an RaptorXML Server
Python-Eintrittspunktfunktionen
Vereinfachte Struktur eines Python-Skripts
Die Python-Eintrittspunktfunktion im Detail

 

Python-Version

Vom Benutzer erstellte Python-Skripts müssen mindestens mit Python 3.3.1 kompatibel sein.

 

Python-Skripts sicher machen

Wenn ein Python-Skript in einem Befehl über HTTP an RaptorXML+XBRL Server adressiert ist, funktioniert das Skript nur, wenn es sich im vertrauenswürdigen Verzeichnis befindet. Das Skript wird vom vertrauenswürdigen Verzeichnis aus ausgeführt. Wenn Sie ein Python-Skript aus einem anderen Verzeichnis definieren, wird ein Fehler ausgegeben. Das vertrauenswürdige Verzeichnis wird in der server.script-root-dir Einstellung der Serverkonfigurationsdatei definiert. Wenn Sie Python-Skripts verwenden möchten, muss ein vertrauenswürdiges Verzeichnis definiert werden. Stellen Sie sicher, dass alle Python-Skripts, die verwendet werden sollen, in diesem Verzeichnis gespeichert werden.

 

Zwar werden alle vom Server für HTTP-Auftragsanforderungen generierten Ausgabedateien in das Auftragsausgabeverzeichnis (ein Unterverzeichnis von output-root-directory) geschrieben, doch gilt diese Einschränkung nicht für Python-Skripts, die in jeden Ordner geschrieben werden können. Der Server-Administrator muss die Python-Skripts im vertrauenswürdigen Verzeichnis auf potentielle Schwachstellen überprüfen.

 

Übergeben eines Python-Skripts an RaptorXML+XBRL Server

Ein Python-Skript wird mit dem --script-Parameter der folgenden Befehle übergeben:

 

valxml-withxsd (xsi)
valxsd (xsd)
valxbrltaxonomy (dts)
valxbrl (xbrl)

 

Diese Befehle können über die Befehlszeilenschnittstelle oder die HTTP-Schnittstelle verwendet werden. Ein Beispiel dazu finden Sie im Abschnitt Ausführen von Python-Skripts.

 

Python-Eintrittspunktfunktionen

Die Befehle, die Zugriff auf die Python-Schnittstelle gestatten (siehe Liste oben), sind Validierungsbefehle und das Python-Skript wird nur dann ausgeführt, wenn die mit dem Befehl übergebenen Dateien gültig sind. Nachdem die Validierung erfolgreich ausgeführt wurde, ruft  RaptorXML+XBRL Server je nachdem, welcher Befehl ausgeführt wurde, eine bestimmte Funktion auf. Die aufgerufene Funktion (siehe Tabelle unten) muss daher im Python-Skript definiert sein. Sie muss mit zwei Parametern definiert sein: der erste ist das Auftragsobjekt, der zweite ist abhängig davon, welcher Befehl ausgeführt wurde (siehe Tabelle).

 

Befehl

Von RaptorXML+XBRL Server aufgerufene Funktion

valxml-withxsd (xsi)

on_xsi_valid(job,instance)

valxsd (xsd)

on_xsd_valid(job,schema)

valxbrltaxonomy (dts)

on_dts_valid(job,dts)

valxbrl (xbrl)

on_xbrl_valid(job,instance)

 

 

Vereinfachte Struktur des Python-Skripts

Ein Python-Skript, über das auf die Python-Schnittstelle zugegriffen wird, hat die folgende grundlegende Struktur. Beachten Sie, wie die Python-Eintrittspunktfunktion definiert ist.

 

1

import os

from altova import xml, xsd, xbrl

2

def on_xsi_valid(job,instance):

filename = os.path.join(job.output_dir,'script_out.txt')

job.append_output_filename(filename)

f = open(filename,'w')

f.write(str(type(job))+'\n')

f.write(str(job)+'\n')

f.write(job.output_dir+'\n')

f.close()

filename2 = os.path.join(job.output_dir,'script_out2.txt')

job.append_output_filename(filename2)

f2 = open(filename2,'w')

print_instance(f2,instance)

f2.close()

3

CodeBlock-1

  ...

CodeBlock-N

 

 

Beschreibung der Struktur des obigen Skripts:

 

1

Importiert das vordefinierte os Modul von Python und anschließend das xml, xsd, xbrl-Modul der Altova-Bibliothek.

2

Die Python-Eintrittspunktfunktion (siehe unten). Dabei könnte es sich um eine der folgenden handeln:

on_xsi_valid(job,instance), on_xsd_valid(job,schema),
on_dts_valid(job,dts), on_xbrl_valid(job,instance).

3

Zusätzliche Codeblöcke, von denen jeder Funktionsdefinitionen oder anderen Code enthält.

 

Die Python-Eintrittspunktfunktion im Detail

In diesem Abschnitt werden anhand der folgenden Eintrittspunktfunktionsdefinition wichtige Punkte zur Python-Eintrittspunktfunktion erläutert.

 

def on_xsi_valid(job,instance):

filename = os.path.join(job.output_dir,'script_out.txt')

job.append_output_filename(filename)

f = open(filename,'w')

f.write(str(type(job))+'\n')

f.write(str(job)+'\n')

f.write(job.output_dir+'\n')

f.close()

filename2 = os.path.join(job.output_dir,'script_out2.txt')

job.append_output_filename(filename2)

f2 = open(filename2,'w')

print_instance(f2,instance)

f2.close

 

Die Zeile def on_xsi_valid(job,instance): beginnt den Funktionsdefinitionsblock.
Die Funktion hat den Namen on_xsi_valid(job,instance) und erhält zwei Argumente: job und instance.
Dies ist die Funktion, die aufgerufen wird, nachdem RaptorXML+XBRL Server den Befehl valxml-withxsd (xsi) erfolgreich ausgeführt und die angegebene(n) XML-Datei(en) als gültig validiert hat.
Die Werte der Argumente job und instance werden von RaptorXML+XBRL Server bereitgestellt.
Der Wert der Variablen filename wird mit Hilfe von job.output_dir konstruiert. Der Wert  von job.output_dir ist bei Verwendung der HTTP-Schnittstelle in der Server-Konfigurationsdatei definiert. Bei Verwendung des CLI ist er im Arbeitsverzeichnis definiert.
Die Funktion job.append_output_filename hängt einen Dateinamen an die Auftragsausgabe an.

 


© 2019 Altova GmbH