Änderungen von Dokument XSL-Transformation


Von Version 3.1
bearbeitet von gru
am 29.06.2021, 14:14
Änderungskommentar: Renamed back-links.
Auf Version 4.16
bearbeitet von gru
am 16.01.2023, 12:41
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -1,1 +1,64 @@
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.
2 +
3 +== Unterstützte Versionen des XSLT- und XPath-Standards ==
4 +
5 +Bis einschließlich {{formcycle/}} Version 7.2.1 werden nur //XSL-Transformationen// im Sprachstandard XSLT 1.0 und XPath 1.0 unterstützt.
6 +
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.
8 +
9 +== Unterschiede bei der Verwendung von XSL-Transformationen ab {{formcycle/}} Version 7.3 ==
10 +
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.
12 +
13 +Bisher sind folgende Probleme bekannt:
14 +
15 +=== Verschachtelte Funktionsaufrufe ===
16 +
17 +Funktionsaufrufe in der Form
18 +
19 +{{code language="xml"}}
20 +<xsl:variable name="dd">
21 + <xsl:value-of select="format-number(substring-before($datestr,'.'), '0' )" />
22 +</xsl:variable>
23 +{{/code}}
24 +
25 +sind nicht mehr möglich. Stattdessen kann man das Ergebnis der inneren Funktion zum Beispiel in Variablen zwischenspeichern:
26 +
27 +{{code language="xml"}}
28 +<xsl:variable name="ddtemp">
29 + <xsl:value-of select="substring-before($datestr,'.')" />
30 +</xsl:variable>
31 +
32 +<xsl:variable name="dd">
33 + <xsl:value-of select="format-number($ddtemp, '0' )" />
34 +</xsl:variable>
35 +{{/code}}
36 +
37 +=== Leerzeichen ===
38 +
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:
40 +
41 +{{code language="xml"}}
42 +<xsl:if test="position()=1 and .!=''">
43 +{{/code}}
44 +
45 +Hier müssen Leerzeichen wie folgt vorhanden sein:
46 +
47 +{{code language="xml"}}
48 +<xsl:if test="position() = 1 and . != ''">
49 +{{/code}}
50 +
51 +=== Funktionen in For-Each-Schleifen ===
52 +
53 +Der Vergleich der //position()// Variable z.B. innerhalb eines xsl:if-Blocks konnte zuvor gegen einen String mit dem Positionswert erfolgen.
54 +
55 +{{code language="xml"}}
56 +<xsl:if test="position()='1'">
57 +{{/code}}
58 +
59 +Dies entsprach nie dem Standard, und ist nicht mehr möglich. Stattdessen muss der Vergleich mit dem reinen Zahlenwert erfolgen:
60 +
61 +{{code language="xml"}}
62 +<xsl:if test="position() = 1">
63 +{{/code}}
64 +