XSL-Transformation


Templates vom Typ XSL-Transformation dienen der Transformation einer XML-Exportdatei und können z.B. in Aktionen vom Typ Export (XML-Datei) oder für den Export eines Vorgangs in einem Postfach verwendet werden.

Unterstützte Versionen des XSLT- und XPath-Standards

Bis einschließlich Xima® Formcycle Version 7.2.1 werden nur XSL-Transformationen im Sprachstandard XSLT 1.0 und XPath 1.0 unterstützt. 

7.3.0+ Ab Xima® Formcycle Version 7.3 wird ein anderer Prozessor verwendet, welcher XSLT 3.0 und XPath 3.1 unterstützt. 

Unterschiede bei der Verwendung von XSL-Transformationen ab Xima® Formcycle Version 7.3

Grundsätzlich unterstützt der in neueren Xima® Formcycle Versionen verwendete XSLT-Prozessor alle Sprachfeatures, die auch der ältere Prozessor unterstützt hat, da er rückwärtskompatibel zu XSLT 1.0 ist. Der in älteren Xima® Formcycle Versionen verwendete XSLT-Prozessor erlaubte aber an manchen Stellen mehr, als der Sprachstandard zwingend vorschreibt. Dies kann dazu führen, dass bestehende XSL-Transformationen nach einem Update auf eine Xima® Formcycle Version größer gleich 7.3 nicht mehr funktionieren.

Bisher sind folgende Probleme bekannt:

Verschachtelte Funktionsaufrufe

Funktionsaufrufe in der Form

<xsl:variable name="dd">
   <xsl:value-of select="format-number(substring-before($datestr,'.'), '0' )" />
</xsl:variable>

sind nicht mehr möglich. Stattdessen kann man das Ergebnis der inneren Funktion zum Beispiel in Variablen zwischenspeichern:

<xsl:variable name="ddtemp">
   <xsl:value-of select="substring-before($datestr,'.')" />
</xsl:variable>

<xsl:variable name="dd">
   <xsl:value-of select="format-number($ddtemp, '0' )" />
</xsl:variable>

Leerzeichen

Insbesondere bei der Auflösung von Schleifenvariablen müssen in bestimmten Konstellationen Leerzeichen zwingend verwendet werden, wo dies zuvor nicht nötig war. Dies ist zum Beispiel an folgender Stelle so:

<xsl:if test="position()=1 and .!=''">

Hier müssen Leerzeichen wie folgt vorhanden sein:

<xsl:if test="position() = 1 and . != ''">

Funktionen in For-Each-Schleifen

Der Vergleich der position() Variable z.B. innerhalb eines xsl:if-Blocks konnte zuvor gegen einen String mit dem Positionswert erfolgen. 

<xsl:if test="position()='1'">

Dies entsprach nie dem Standard, und ist nicht mehr möglich. Stattdessen muss der Vergleich mit dem reinen Zahlenwert erfolgen:

<xsl:if test="position() = 1">