Definition des Zielformates

Das Ausgabeformat wird im Abschnitt PerRowProcess definiert. Wird dieser Abschnitt komplett weggelassen, dann wird keine Transformation durchgeführt und das Ergebnis-XML wird ausgegeben.

In PerRowProcess kann HTML, PDF und DOCX (Office 2013) als Ausgabeformat angegeben werden. Damit im einfachsten Fall z.B. ein HTML-Dokument erzeugt wird, genügt die Angabe des Formates und die Angabe einer Transformation (hier als Verweis auf eine Datei):

<PerRowProcess>
    <Html />
    <XsltFileName>
        <Literal>
            <String>testplan.xslt</String>
        </Literal>
    </XsltFileName>
</PerRowProcess>

 

Bei der Ausgabe als PDF-Dokument wird zwingend eine Angabe zur Papiergröße und zu den Seitenrändern erwartet:

<PerRowProcess>
    <Pdf>
        <WellknownPageSize>A4</WellknownPageSize>
        <MarginMm>10</MarginMm>
    </Pdf>
    <XsltFileName>
        <Literal>
            <String>testplan.xslt</String>
        </Literal>
    </XsltFileName>
</PerRowProcess>

 

Entsprechend für die Ausgabe als DOCX:

<PerRowProcess>
    <DocX>
        <DocumentNameFormater>
           <Literal>
             <String>testplan.docx</String>
           </Literal>
       </DocumentNameFormater>
       <WellknownPageSize>A4</WellknownPageSize>
       <Margins bottomMm="10" leftMm="20" right="20" topMm="20" />
    </DocX>   
</PerRowProcess>

 

Definieren Sie mehrere Formate hintereinander, wird immer das erste gültige Format verwendet. Die Gültigkeit von Ausgabeformaten kann über Konditionen eingeschränkt werden (siehe unten).

Auch das Ergebnis-XML kann als Ausgabeformat verwendet werden. Dann wird keine Transformation durchgeführt. Dies ist z.B. sinnvoll während der Planentwicklung, um das Ergebnis-XML analysieren zu können. Das XML wird ausgegeben, wenn der PerRowProcess-Block komplett weg gelassen wird oder kein anderes Format gültig ist.

Kombiniert man jetzt die Angabe der Konditionen mit der Möglichkeit, vom Benutzer Parameter abzufragen, kann man dem Benutzer die Auswahl des Ausgabeformates XML, HTML, PDF oder DOCX überlassen:

Definition des Arguments in den Plan-Capabilities:

<Arguments>
    <Argument name="FORMAT" netTypeName="System.String" restriction="PDF XML HTML">Ausgabeformat</Argument>
</Arguments>

 

Auswahl des richtigen Ausgabeformats anhand der Konditionen, welche den Eingabeparameter für das Format abfragen:

<PerRowProcess>
    <Html>
        <Condition>
            <SingleComparison>
                <ValueRef key="FORMAT"/>
                <Is>Equal</Is>
                <Value>HTML</Value>
            </SingleComparison>
        </Condition>
    </Html>
    <Pdf>
        <Condition>
            <SingleComparison>
                <ValueRef key="FORMAT"/>
                <Is>Equal</Is>
                <Value>PDF</Value>
            </SingleComparison>
        </Condition>
        <WellknownPageSize>A4</WellknownPageSize>
        <MarginMm>10</MarginMm>
    </Pdf>
    <XsltFileName>
        <Literal>
            <String>testplan.xslt</String>
        </Literal>
    </XsltFileName>
</PerRowProcess>

Wählt der Benutzer als Zielformat 'XML', trifft keine der Konditionen zu, was dazu führt, dass das Ergebnis-XML ausgegeben wird.

Erweiterungsfunktionen eo:iduPdf nur für PDF anwenden

Wurden in der Transformation Funktionen des Erweiterungsobjektes eo:iduPdf verwendet, dann dürfen diese auch nur im Ausgabeformat PDF ausgeführt werden. Verwendet man HTML als Zielformat, bekommt man ansonsten die Fehlermeldung:

Die Planausführung schlug fehl. Die Methoden der PDF Erweiterung "eo:iduPdf" können nur im Kontext der PDF Erstellung aufgerufen werden.

Indem man die entsprechenden Funktionen bedingt nach Ausgabeformat ausführt, kann man dies umgehen:

<xsl:if test="/ButtonRow/btn:ButtonOptions/ButtonEnv/Variables/Var[@name = 'FORMAT'] = 'PDF'">
    <xsl:variable name="unused1" select="iduPdf:SetMargins(10, 10, 10, 10)"/>
</xsl:if>

Beachten Sie, dass im XPath-Ausdruck vor ButtonOptions der Namespace angegeben werden muss, da der Teilzweig ButtonOptions aus dem Button-Namespace kommt. Der Namespace sollte entsprechend oben in der Transformationsdatei definiert worden sein:

    xmlns:btn="http://schemas.webs.idu.de/cardo3/Button"

 

Erweiterungsfunktion eo:iduDocX für Docx nutzen

Alle Funktionen dieses Erweiterungsobjektes finden Sie hier: http://webs.idu.de/xsdschemas/cardo/docs/CardoXsltExtension.htm.