XML-Transformator
Diese Dokumentfunktion hilft, wenn eine Fremdapplikation beim Aufruf von OneOffixx keine sauberen Connect-Dateien, sondern XML-Dateien mit einer beliebigen Struktur übermittelt. Dabei muss beim Aufruf von OneOffixx zusätzlich der Name der Schnittstelle mitgegeben werden. Beim Client sieht ein solcher Aufruf so aus:
OneOffixx.exe /connector "C:\temp\testfile.xml" /interfaceType "myDefinedInterface"
In dieser Dokumentfunktion werden nun mit XSLT mittels Regeln definiert, wie das erhaltene XML-File (hier testfile.xml) für "myDefinedInterface" zu einer korrekten Connect-Datei umgeformt wird. Wir machen das anhand eines Beispiels.
Beispiel
In unserem Beispiel hat "testfile.xml" folgenden Inhalt:
<root>
<anElement>
<hereItIs>Test Content from XML file</hereItIs>
</anElement>
<anotherElement>This is an example.</anotherElement>
</root>
Bei diesem Szenario wollen wir mit obigem testfile.xml ein Feld des Connect-Konverters abfüllen. Hierfür erstellen wir im Connect-Konverter eine Konfiguration für das Feld "TestCustomInterface.Field01" in der Schnittstelle "TestCustomInterface". Diese Konfiguration sieht so aus:
<CustomInterfaces>
<!-- TestCustomInterface -->
<InterfaceDescription Name="TestCustomInterface" Description="Test Interface...">
<Node Id="TestCustomInterface.Field01">[default text]</Node>
</InterfaceDescription>
</CustomInterfaces>
Das Feld "TestCustomInterface.Field01" kann nun im Word-Editor einer Vorlage eingefügt werden:
Caution
Es gibt sowohl im Schnittstellenkonverter als auch im Connect-Konverter "Interfaces"-Elemente. Diese dürfen jedoch nicht verwechselt werden.
Ziel
Das Ziel ist es nun, das "myDefinedInterface" (siehe Aufruf) im Connect-Konverter so zu definieren, dass OneOffixx beim obigen Aufruf eine Umformung vornimmt, sodass diese Connect-Datei entsteht und ausgeführt wird:
<OneOffixxConnectBatch xmlns="http://schema.oneoffixx.com/OneOffixxConnectBatch/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Settings />
<Entries>
<OneOffixxConnect>
<Arguments>
<TemplateId>804ea87d-37a4-4307-99d7-23d16032f426</TemplateId>
<LanguageLcid>2055</LanguageLcid>
</Arguments>
<Function name="CustomInterfaceConnector" id="70E94788-CE84-4460-9698-5663878A295B">
<Arguments>
<Interface Name="TestCustomInterface">
<Node Id="TestCustomInterface.Field01">
[Inhalt von "hereItIs"-Element: "Test Content from XML file"]
</Node>
</Interface>
</Arguments>
</Function>
</OneOffixxConnect>
</Entries>
</OneOffixxConnectBatch>
Konfiguration
Caution
Für diese Konfiguration muss auf die Gross- und Kleinschreibung geachtet werden! Zum Beispiel muss der Wortanfang von "Id" gross ein, ansonsten funktioniert der Connect-Aufruf nicht.
Die Konfiguration vom Schnittstellen Konverter muss wie folgt aussehen:
<Configuration>
<Interfaces>
<!-- myTestInterface -->
<Interface name="myTestInterface" version="1.0">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<OneOffixxConnectBatch xmlns="http://schema.oneoffixx.com/OneOffixxConnectBatch/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Settings />
<Entries>
<OneOffixxConnect>
<Arguments>
<TemplateId>804ea87d-37a4-4307-99d7-23d16032f426</TemplateId>
<LanguageLcid>2055</LanguageLcid>
</Arguments>
<Function name="CustomInterfaceConnector" id="70E94788-CE84-4460-9698-5663878A295B">
<Arguments>
<Interface Name="TestCustomInterface">
<Node Id="TestCustomInterface.Field01">
<xsl:value-of select="/root/anElement/hereItIs" />
</Node>
</Interface>
</Arguments>
</Function>
</OneOffixxConnect>
</Entries>
</OneOffixxConnectBatch>
</xsl:template>
</xsl:stylesheet>
</Interface>
</Interfaces>
</Configuration>
Beim Nachbauen dieses Beispiels muss darauf geachtet werden, dass sich zwischen <TemplateId>
und </TemplateId>
die korrekte Template-Id befindet.
Der Aufruf von oben
OneOffixx.exe /connector "C:\temp\testfile.xml" /interfaceType "myDefinedInterface"
erzeugt nun ein Dokument, bei dem das Feld TestCustomInterface.Field01
den Inhalt "Test Content from XML file" (stammt aus testfile.xml) hat: