Test-ValidateCxml

EulandaXtools — Funktionsreferenz

Test-ValidateCxml

ÜBERSICHT

Validiert eine Ariba cXML-Datei (ORDER, INVOICE oder andere cXML-Typen) gegen das passende XSD-Schema.

SYNTAX

Test-ValidateCxml [-XmlPath] <string> [-Type] <string> [-XsdRoot] <string>

BESCHREIBUNG

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.

PARAMETER

-XmlPath

Type: string
Mandatory: True

Vollstä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: string

Wurzelpfad, 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.

AUSGABEN

System.Boolean

True bei gültiger XML, ansonsten False.

BEISPIELE

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

HINWEISE