Wiki-Quellcode von XSL-Transformation


Zeige letzte Bearbeiter
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}}