EulandaXtools — Funktionsreferenz
Validiert eine Ariba cXML-Datei (ORDER, INVOICE oder andere cXML-Typen) gegen das passende XSD-Schema.
Test-ValidateCxml [-XmlPath] <string> [-Type] <string> [-XsdRoot] <string>Die Funktion Test-ValidateCxml prüft eine einzelne cXML-Datei anhand eines oder mehrerer XSD-Dateien. Die XSD-Dateien werden abhängig vom Nachrichtentyp (ORDER, INVOICE, DESADV oder später weitere) aus getrennten Ordnern geladen. Die Funktion kann den Nachrichtentyp automatisch anhand der Struktur der XML-Datei erkennen.
Vor der Validierung wird ein Clean-File erzeugt, dessen DOCTYPE entfernt und das in UTF8 ohne BOM abgespeichert wird. Anschliessend wird ein SchemaSet geladen, bestehend aus allen XSD-Dateien des jeweiligen Nachrichtentyps. Die XML-Datei wird gegen dieses SchemaSet validiert.
Die Funktion gibt True zurück, wenn die Datei fehlerfrei ist, ansonsten False.
Hinweis zur Erstellung der XSD-Dateien
Die XSD-Dateien wurden automatisch aus den originalen cXML-DTD-Dateien erzeugt. Dazu wird eine Java-Runtime sowie das Trang-Modul benötigt.
Benötigte Komponenten:
Java Runtime (Temurin): https://github.com/adoptium/temurin25-binaries/
Trang (trang.jar): https://code.google.com/archive/p/jing-trang/downloads
Vorgehensweise (Beispiel):
1. DTD-Dateien in ein Arbeitsverzeichnis legen, z. B. C:\dtd.
2. Java und trang.jar dort installieren bzw. ablegen.
3. Die DTD-Dateien mit Trang in XSD umwandeln:
`java -jar C:\dtd\trang.jar C:\dtd\cXML.dtd C:\dtd\cXML.xsd`
`java -jar C:\dtd\trang.jar C:\dtd\InvoiceDetail.dtd C:\dtd\InvoiceDetail.xsd`
4. Dadurch entstehen insgesamt fünf XSD-Dateien. Diese werden anschließend in zwei Ordner aufgeteilt und dupliziert: ORDER INVOICE
Ordnerstruktur:
Damit entsteht eine Trennung zwischen ORDER- und INVOICE-Schemas, basierend auf derselben Quelle (DTD), aber mit den jeweils benötigten Hauptdateien. Das Vorgehen ist notwendig, da es ansonsten Kollisionen mit dem Namespace gibt.
-XmlPath
Type: string
Mandatory: TrueVollständiger Pfad zur zu validierenden XML-Datei.
-Type
Type: string
Default: 'AUTO'OPTIONAL: Nachrichtentyp für die Validierung. Mögliche Werte:
Bei AUTO wird der Nachrichtentyp automatisch anhand des Inhalts der XML-Datei ermittelt. Falls der Nachrichtentyp nicht erkannt wird, gibt die Funktion einen Fehler zurück.
-XsdRoot
Type: stringWurzelpfad, unter dem sich die Unterordner für die XSD-Dateien befinden. Der Pfad muss Unterordner enthalten wie: XSD\ORDER\*.xsd XSD\INVOICE\*.xsd XSD\DESADV\*.xsd usw.
System.BooleanTrue bei gültiger XML, ansonsten False.
# Order mit festem Typ prüfen
Test-ValidateCxml `
-XmlPath "C:\ARIBA\ORDER\5040152674\5040152674.xml" `
-Type ORDER `
-XsdRoot "C:\ARIBA\XSD"# Order automatisch erkennen und prüfen
Test-ValidateCxml `
-XmlPath "C:\ARIBA\ORDER\5040152674\5040152674.xml" `
-XsdRoot "C:\ARIBA\XSD"# Invoice explizit prüfen
Test-ValidateCxml `
-XmlPath "C:\ARIBA\INVOICE\25107157\25107157.xml" `
-Type INVOICE `
-XsdRoot "C:\ARIBA\XSD"# Invoice automatisch erkennen und prüfen
Test-ValidateCxml `
-XmlPath "C:\ARIBA\INVOICE\25107157\25107157.xml" `
-XsdRoot "C:\ARIBA\XSD"