XML-Daten verarbeiten

Anforderung

Beim Einsatz von Standardsoftware (z.B. Microsoft Dynamics NAV) kommt immer wieder die Frage auf, ob print2forms nicht direkt XML-Dateien verarbeiten kann. Die Schwierigkeit dabei ist zum einen, daß XML-Dateien für gewöhnlich nicht gedruckt, sondern lediglich in irgendwelchen Verzeichnissen abgelegt werden.

Hinzu kommt, daß XML eine sehr dynamische Strukturierung der Daten erlaubt. Einzelne Tags können existieren oder auch nicht, Tags können leer sein, Tags können beliebig gruppiert werden und die Reihenfolge ist im Prinzip beliebig.

Realisierung

Daß die XML-Daten nur als Datei angeliefert werden, ist für print2forms kein Problem, weil mit dem Monitor-Gateway eine Komponente existiert, die genau für diese Anforderung eingesetzt werden kann. Ein Monitor-Gateway überwacht bis zu 250 Verzeichnisse, deren Namen mit denen von Clients oder Gateways übereinstimmen. Wird nun in eines der überwachten Verzeichnisse eine Datei kopiert, wird diese so bald als möglich an den zugehörigen Client oder an das zugehörige Gateway übertragen.

Der Zeitpunkt der Übertragung hängt davon ab, ob die kopierte Datei bereits vollständig ist (vom Erzeuger geschlossen) und ob der Client oder das Gateway verfügbar ist. Verfügbar heist hier, der Client oder das Gateway ist gestartet und mit keiner anderen Aufgabe beschäftigt.

Die Erkennung der einzelnen XML-Tags wurde in print2forms bisher durch entsprechend formulierte reguläre Ausdrücke realisiert, ist aber mit dem p2fClient Build 5788 und dem p2fGate Build 3065 radikal vereinfacht worden. Jetzt kann statt einem Feldindex einfach ein Tag-Name angegeben werden, auf dessen Inhalt sich die entsprechende Aktion von print2forms beziehen soll.

XML-Daten

Sollen XML-Dateien als Eingangsdatenstrom für print2forms genutzt werden, sind ein paar Randbedingungen einzuhalten, da ansonsten der print2forms-Client oder -Gateway die Daten nicht korrekt auswerten kann:

Ein einfaches Beispiel für eine durch print2forms zu bearbeitende XML-Datei:

  <?xml version="1.0" encoding="iso-8859-1"?>
  <Address>
    <CompanyName>Muster GmbH</CompanyName>
    <CompanyAddress>Hauptstrasse 21</CompanyAddress>
    <CompanyPostCode>23456</CompanyPostCode>
    <CompanyCity>Musterstadt</CompanyCity>
    <ReferenceNo>28.0941</ReferenceNo>
    <OrderNo>AB160333</OrderNo>
  </Address>


XML-Daten in einer Ressource

Bei den print2forms-Ressourcen können XML-Tags im Rahmen der Definition von Vorlagen zum Einsatz kommen. Vorlagen werden in der Regel mit dem Import-Filter erstellt, der zu diesem Zweck ebenfalls entsprechend erweitert wurde (siehe XML-Daten in Ressourcen).

Um einem Platzhalter innerhalb der Vorlage XML-Daten zuzuweisen, wird jetzt einfach der Name des Tags unter Feldindex / Tag angegeben.

Damit man noch die Möglichkeit hat, selbst zu entscheiden, ob man den gesamten Inhalt des Tags oder nur einen Teil davon verwenden möchte, kann unter Auswahlmuster noch ein regulärer Ausdruck angegeben werden, der auf den Inhalt des Tags angewendet wird. Dabei wird wie üblich nur der erste Puffer statt des Platzhalters in die Vorlage übernommen. Wird kein Auswahlmuster angegeben, wird automatisch (.*) angenommen.


XML-Daten in einem Formular

Ganz analog erfolgt die Verwendung von XML-Daten innerhalb von Feldern eines Formulars. Der Name des Tags wird einfach unter Feldindex / Bedingung / Tag angegeben. Das Vergleichsmuster bestimmt, welcher Teil des Inhals des Tags Beachtung finden soll.

Im Gegensatz zum Einsatz von XML-Daten innerhalb von Vorlagen können innerhalb des regulären Ausdrucks allerdings alle zehn Puffer angesprochen und verwendet werden.




Bei der Nutzung von XML-Daten in Formularen gibt es noch einen weiteren Einsatzzweck, nämlich innerhalb der Bedingungen zum Einbinden von untergeordneten Formularen.

Auch hier wird der Name des Tags wird einfach unter Feldindex / Bedingung / Tag angegeben. Das Vergleichsmuster bestimmt, welcher Teil des Inhals des Tags Beachtung finden soll.

Ein Sonderfall ist der, daß nur getestet werden soll, ob ein bestimmtes Tag innerhalb der Nutzdaten überhaupt vorkommt. Für einen solchen Test wird unter Vergleichsmuster kein Wert eingegeben.

Mit der Einstellung unter Vergleich kann dann ausgewählt werden, ob das Tag vorkommen muß (Einstellung ist gleich) oder aber nicht vorkommen darf (Einstellung ist ungleich).


XML-Daten in einem Prozess

Innerhalb von Prozessen können XML-Tags innerhalb der Bearbeitungsschritte eines Dokumentenprozesses verwendet werden, um die Bedingungen für die Ausführung des Bearbeitungsschritts zu formulieren.

Unter Feldindex / Tag wird einfach der Name des zu prüfenden Tags eingegeben. Damit man noch die Möglichkeit hat, selbst zu entscheiden, ob man den gesamten Inhalt des Tags oder nur einen Teil davon verwenden möchte, kann unter Vergleichswert noch ein regulärer Ausdruck angegeben werden, der auf den Inhalt des Tags angewendet wird. Die dabei aufgesammelten Puffer können wie üblich unter dem Namen der Bedingung in Formularen ausgewertet werden.

Im Beispiel links ist nur die erste Bedingung wirklich eine Bedingung. Da unter Verknüpfung nichts angegeben ist, werden die Angaben unter CompanyAddress lediglich ausgewertet, um später auf die Puffer des regulären Ausdrucks zugreifen zu können.


Hinweise