... |
... |
@@ -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 |
+ |