Wiki-Quellcode von XSL-Transformation


Verstecke letzte Bearbeiter
gru 3.1 1 Templates vom Typ //XSL-Transformation// dienen der Transformation einer //XML//-Exportdatei und können z.B. in Aktionen vom Typ [[Export (XML-Datei)>>doc:Formcycle.Designer.Workflow.Actions.ExportXML]] oder für den [[Export eines Vorgangs in einem Postfach>>doc:Formcycle.Inbox.WebHome]] verwendet werden.
gru 4.1 2
3 == Unterstützte Versionen des XSLT- und XPath-Standards ==
4
gru 4.3 5 Bis einschließlich {{formcycle/}} Version 7.2.1 werden nur //XSL-Transformationen// im Sprachstandard XSLT 1.0 und XPath 1.0 unterstützt.
gru 4.1 6
gru 4.2 7 {{version major="7" minor="3" patch="0"/}}Ab {{formcycle/}} Version 7.3 wird ein anderer Prozessor verwendet, welcher XSLT 3.0 und XPath 3.1 unterstützt.
gru 4.1 8
gru 4.3 9 == Unterschiede bei der Verwendung von XSL-Transformationen ab {{formcycle/}} Version 7.3 ==
gru 4.1 10
gru 4.15 11 Grundsätzlich unterstützt der in neueren {{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 {{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 {{formcycle/}} Version größer gleich 7.3 nicht mehr funktionieren.
gru 4.3 12
13 Bisher sind folgende Probleme bekannt:
14
gru 4.16 15 === Verschachtelte Funktionsaufrufe ===
gru 4.3 16
17 Funktionsaufrufe in der Form
gru 4.7 18
19 {{code language="xml"}}
gru 4.6 20 <xsl:variable name="dd">
21 <xsl:value-of select="format-number(substring-before($datestr,'.'), '0' )" />
22 </xsl:variable>
23 {{/code}}
gru 4.7 24
gru 4.3 25 sind nicht mehr möglich. Stattdessen kann man das Ergebnis der inneren Funktion zum Beispiel in Variablen zwischenspeichern:
gru 4.7 26
gru 4.6 27 {{code language="xml"}}
28 <xsl:variable name="ddtemp">
29 <xsl:value-of select="substring-before($datestr,'.')" />
30 </xsl:variable>
gru 4.3 31
gru 4.6 32 <xsl:variable name="dd">
33 <xsl:value-of select="format-number($ddtemp, '0' )" />
gru 4.8 34 </xsl:variable>
gru 4.6 35 {{/code}}
36
gru 4.4 37 === Leerzeichen ===
gru 4.3 38
gru 4.10 39 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:
gru 4.3 40
gru 4.11 41 {{code language="xml"}}
gru 4.10 42 <xsl:if test="position()=1 and .!=''">
43 {{/code}}
44
45 Hier müssen Leerzeichen wie folgt vorhanden sein:
46
gru 4.11 47 {{code language="xml"}}
gru 4.10 48 <xsl:if test="position() = 1 and . != ''">
49 {{/code}}
50
gru 4.3 51 === Funktionen in For-Each-Schleifen ===
52
gru 4.9 53 Der Vergleich der //position()// Variable z.B. innerhalb eines xsl:if-Blocks konnte zuvor gegen einen String mit dem Positionswert erfolgen.
gru 4.3 54
gru 4.11 55 {{code language="xml"}}
gru 4.14 56 <xsl:if test="position()='1'">
gru 4.9 57 {{/code}}
gru 4.3 58
gru 4.9 59 Dies entsprach nie dem Standard, und ist nicht mehr möglich. Stattdessen muss der Vergleich mit dem reinen Zahlenwert erfolgen:
gru 4.3 60
gru 4.11 61 {{code language="xml"}}
gru 4.12 62 <xsl:if test="position() = 1">
gru 4.9 63 {{/code}}
gru 4.3 64