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