Wiki-Quellcode von XSL-Transformation
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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}} |