... |
... |
@@ -12,11 +12,161 @@ |
12 |
12 |
|
13 |
13 |
=== Inhalt und Erstellung der XML-Datei === |
14 |
14 |
|
15 |
|
-Hierbei ist die Verwendung gl dateinamen |
|
15 |
+Die XML-Datei mit allen im Formular eingegebenen Daten wird über eine sagenannte XSL-Transformation erzeugt. Die Struktur der erzeugten XML-Datei wird dabei von ALVA9 vorgegeben und besteht im Beispiel aus den Konten //daten// und //datensatz//, wobei in letzteren die einzelnen Informationen als eigene Unterknoten eingefügt werden. |
16 |
16 |
|
|
17 |
+Die vollständige XSL-Transformation für das Beispiel sieht wie folgt aus: |
17 |
17 |
|
|
19 |
+{{panel title="XSL-Transformation des Beispielformulars" triggerable="true" initial="hidden"}} |
|
20 |
+{{code language="xslt"}} |
|
21 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
22 |
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
|
23 |
+ <xsl:template match="process"> |
|
24 |
+ <daten> |
|
25 |
+ <datensatz> |
|
26 |
+ <NAME1><xsl:value-of select="form/field[@name='tfOrgName']/plainValue"/> <xsl:value-of select="form/field[@name='Rechtsform']/plainValue"/></NAME1> |
|
27 |
+ <NAME2><xsl:value-of select="form/field[@name='tfAntragstellerAnrede']/plainValue"/> <xsl:value-of select="form/field[@name='tfAntragstellerTitel']/plainValue"/> <xsl:value-of select="form/field[@name='tfAntragstellerVorname']/plainValue"/> <xsl:value-of select="form/field[@name='tfAntragstellerName']/plainValue"/></NAME2> |
|
28 |
+ <NAME3><xsl:value-of select="form/field[@name='']/plainValue"/></NAME3> |
|
29 |
+ <NAME4><xsl:value-of select="form/field[@name='']/plainValue"/></NAME4> |
|
30 |
+ <STRASSE><xsl:value-of select="form/field[@name='tfAntragstellerAdresse']/plainValue"/></STRASSE> |
|
31 |
+ <HAUS_NR><xsl:value-of select="form/field[@name='']/plainValue"/></HAUS_NR> |
|
32 |
+ <ORT><xsl:value-of select="form/field[@name='tfAntragstellerOrt']/plainValue"/></ORT> |
|
33 |
+ <PLZ><xsl:value-of select="form/field[@name='tfAntragstellerPLZ']/plainValue"/></PLZ> |
|
34 |
+ <TELEFON><xsl:value-of select="form/field[@name='tfAntragstellerTelefon']/plainValue"/></TELEFON> |
|
35 |
+ <EMAIL><xsl:value-of select="form/field[@name='tfAntragstellerEmail']/plainValue"/></EMAIL> |
|
36 |
+ <FAX><xsl:value-of select="form/field[@name='tfAntragstellerFax']/plainValue"/></FAX> |
|
37 |
+ <SONNTAGE><xsl:value-of select="form/field[@name='cbSONNTAGE']/plainValue"/></SONNTAGE> |
|
38 |
+ <FERIEN><xsl:value-of select="form/field[@name='cbFERIEN']/plainValue"/></FERIEN> |
|
39 |
+ <GRUND2><xsl:value-of select="form/field[@name='cbGRUND2']/plainValue"/></GRUND2> |
|
40 |
+ <GRUND1><xsl:value-of select="form/field[@name='cbGRUND1']/plainValue"/></GRUND1> |
|
41 |
+ <ANTR_DATUM><xsl:value-of select="substring-before(./@creation-date, ' ')" /></ANTR_DATUM> |
|
42 |
+ <NAME_HALT><xsl:value-of select="form/field[@name='tfNAME_HALT']/plainValue"/></NAME_HALT> |
|
43 |
+ <FIRMA_HALT><xsl:value-of select="form/field[@name='tfFIRMA_HALT']/plainValue"/></FIRMA_HALT> |
|
44 |
+ <POS_HALTER><xsl:value-of select="form/field[@name='tfPOS_HALTER']/plainValue"/></POS_HALTER> |
|
45 |
+ <xsl:if test="form/field[@name='cbLKW']/plainValue!=1"><LKW>0</LKW></xsl:if> |
|
46 |
+ <xsl:if test="form/field[@name='cbLKW']/plainValue=1"><LKW><xsl:value-of select="form/field[@name='cbLKW']/plainValue"/></LKW></xsl:if> |
|
47 |
+ <xsl:if test="form/field[@name='cbANHAENGER']/plainValue!=1"><ANHAENGER>0</ANHAENGER></xsl:if> |
|
48 |
+ <xsl:if test="form/field[@name='cbANHAENGER']/plainValue=1"><ANHAENGER><xsl:value-of select="form/field[@name='cbANHAENGER']/plainValue"/></ANHAENGER></xsl:if> |
|
49 |
+ <xsl:if test="form/field[@name='cbZUGMASCHIN']/plainValue!=1"><ZUGMASCHIN>0</ZUGMASCHIN></xsl:if> |
|
50 |
+ <xsl:if test="form/field[@name='cbZUGMASCHIN']/plainValue=1"><ZUGMASCHIN><xsl:value-of select="form/field[@name='cbZUGMASCHIN']/plainValue"/></ZUGMASCHIN></xsl:if> |
|
51 |
+ <xsl:if test="form/field[@name='cbAUFLIEGER']/plainValue!=1"><AUFLIEGER>0</AUFLIEGER></xsl:if> |
|
52 |
+ <xsl:if test="form/field[@name='cbAUFLIEGER']/plainValue=1"><AUFLIEGER><xsl:value-of select="form/field[@name='cbAUFLIEGER']/plainValue"/></AUFLIEGER></xsl:if> |
|
53 |
+ <xsl:if test="form/field[@name='cbERSATZ1']/plainValue!=1"><ERSATZ1>0</ERSATZ1></xsl:if> |
|
54 |
+ <xsl:if test="form/field[@name='cbERSATZ1']/plainValue=1"><ERSATZ1><xsl:value-of select="form/field[@name='cbERSATZ1']/plainValue"/></ERSATZ1></xsl:if> |
|
55 |
+ <xsl:if test="form/field[@name='cbERSATZ2']/plainValue!=1"><ERSATZ2>0</ERSATZ2></xsl:if> |
|
56 |
+ <xsl:if test="form/field[@name='cbERSATZ2']/plainValue=1"><ERSATZ2><xsl:value-of select="form/field[@name='cbERSATZ2']/plainValue"/></ERSATZ2></xsl:if> |
|
57 |
+ <LKW_KENNZ><xsl:value-of select="form/field[@name='tfLKW_KENNZ']/plainValue"/></LKW_KENNZ> |
|
58 |
+ <ANH_KENNZ><xsl:value-of select="form/field[@name='tfANH_KENNZ']/plainValue"/></ANH_KENNZ> |
|
59 |
+ <ZUG_KENNZ><xsl:value-of select="form/field[@name='tfZUG_KENNZ']/plainValue"/></ZUG_KENNZ> |
|
60 |
+ <AUF_KENNZ><xsl:value-of select="form/field[@name='tfAUF_KENNZ']/plainValue"/></AUF_KENNZ> |
|
61 |
+ <ERS_KENNZ1><xsl:value-of select="form/field[@name='tfERS_KENNZ1']/plainValue"/></ERS_KENNZ1> |
|
62 |
+ <ERS_KENNZ2><xsl:value-of select="form/field[@name='tfERS_KENNZ2']/plainValue"/></ERS_KENNZ2> |
|
63 |
+ <LKW2KENNZ><xsl:value-of select="form/field[@name='tfLKW2KENNZ']/plainValue"/></LKW2KENNZ> |
|
64 |
+ <ANH2KENNZ><xsl:value-of select="form/field[@name='tfANH2KENNZ']/plainValue"/></ANH2KENNZ> |
|
65 |
+ <ZUG2KENNZ><xsl:value-of select="form/field[@name='tfZUG2KENNZ']/plainValue"/></ZUG2KENNZ> |
|
66 |
+ <AUF2KENNZ><xsl:value-of select="form/field[@name='tfAUF2KENNZ']/plainValue"/></AUF2KENNZ> |
|
67 |
+ <ERS2KENNZ1><xsl:value-of select="form/field[@name='tfERS2KENNZ1']/plainValue"/></ERS2KENNZ1> |
|
68 |
+ <ERS2KENNZ2><xsl:value-of select="form/field[@name='tfERS2KENNZ2']/plainValue"/></ERS2KENNZ2> |
|
69 |
+ |
|
70 |
+ <LKW_GEWICH> |
|
71 |
+ <xsl:call-template name="formatWeight"> |
|
72 |
+ <xsl:with-param name="weight" select="form/field[@name='tfLKW_GEWICH']/plainValue" /> |
|
73 |
+ </xsl:call-template> |
|
74 |
+ </LKW_GEWICH> |
|
75 |
+ <ANH_GEWICH> |
|
76 |
+ <xsl:call-template name="formatWeight"> |
|
77 |
+ <xsl:with-param name="weight" select="form/field[@name='tfANH_GEWICH']/plainValue" /> |
|
78 |
+ </xsl:call-template> |
|
79 |
+ </ANH_GEWICH> |
|
80 |
+ <ZUG_GEWICH> |
|
81 |
+ <xsl:call-template name="formatWeight"> |
|
82 |
+ <xsl:with-param name="weight" select="form/field[@name='tfZUG_GEWICH']/plainValue" /> |
|
83 |
+ </xsl:call-template> |
|
84 |
+ </ZUG_GEWICH> |
|
85 |
+ <AUF_GEWICH> |
|
86 |
+ <xsl:call-template name="formatWeight"> |
|
87 |
+ <xsl:with-param name="weight" select="form/field[@name='tfAUF_GEWICH']/plainValue" /> |
|
88 |
+ </xsl:call-template> |
|
89 |
+ </AUF_GEWICH> |
|
90 |
+ <!-- |
|
91 |
+ <LKW_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></LKW_LEER> |
|
92 |
+ <ANH_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></ANH_LEER> |
|
93 |
+ <ZUG_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></ZUG_LEER> |
|
94 |
+ <AUF_LEER><xsl:value-of select="form/field[@name='']/plainValue"/></AUF_LEER> |
|
95 |
+ --> |
|
96 |
+ <ERS_GEWI_1> |
|
97 |
+ <xsl:call-template name="formatWeight"> |
|
98 |
+ <xsl:with-param name="weight" select="form/field[@name='tfERS_GEWI_1']/plainValue" /> |
|
99 |
+ </xsl:call-template> |
|
100 |
+ </ERS_GEWI_1> |
|
101 |
+ <ERS_GEWI_2> |
|
102 |
+ <xsl:call-template name="formatWeight"> |
|
103 |
+ <xsl:with-param name="weight" select="form/field[@name='tfERS_GEWI_2']/plainValue" /> |
|
104 |
+ </xsl:call-template> |
|
105 |
+ </ERS_GEWI_2> |
|
106 |
+ <ART><xsl:value-of select="form/field[@name='tfART']/plainValue"/></ART> |
|
107 |
+ <ART_GEWICH> |
|
108 |
+ <xsl:call-template name="formatWeight"> |
|
109 |
+ <xsl:with-param name="weight" select="form/field[@name='tfART_GEWICH']/plainValue" /> |
|
110 |
+ </xsl:call-template> |
|
111 |
+ </ART_GEWICH> |
|
112 |
+ <STARTORT><xsl:value-of select="form/field[@name='tfSTARTORT']/plainValue"/></STARTORT> |
|
113 |
+ <ZIELORT><xsl:value-of select="form/field[@name='tfZIELORT']/plainValue"/></ZIELORT> |
|
114 |
+ <UEBER><xsl:value-of select="form/field[@name='tfUEBER']/plainValue"/></UEBER> |
|
115 |
+ <ZEIT_VON> |
|
116 |
+ <xsl:call-template name="formatDate"> |
|
117 |
+ <xsl:with-param name="dateTime" select="form/field[@name='tfZEIT_VON']/plainValue" /> |
|
118 |
+ </xsl:call-template> |
|
119 |
+ </ZEIT_VON> |
|
120 |
+ <VON_UHR><xsl:value-of select="form/field[@name='tfVON_UHR']/plainValue"/></VON_UHR> |
|
121 |
+ <ZEIT_BIS> |
|
122 |
+ <xsl:call-template name="formatDate"> |
|
123 |
+ <xsl:with-param name="dateTime" select="form/field[@name='tfZEIT_BIS']/plainValue" /> |
|
124 |
+ </xsl:call-template> |
|
125 |
+ </ZEIT_BIS> |
|
126 |
+ <BIS_UHR><xsl:value-of select="form/field[@name='tfBIS_UHR']/plainValue"/></BIS_UHR> |
|
127 |
+ <ORT_LEERFA><xsl:value-of select="form/field[@name='tfORT_LEERFA']/plainValue"/></ORT_LEERFA> |
|
128 |
+ <BEGRUENDG><xsl:value-of select="form/field[@name='tfBEGRUENDG']/plainValue"/></BEGRUENDG> |
|
129 |
+ <!-- |
|
130 |
+ <ORTSLAGE><xsl:value-of select="form/field[@name='tfORTSLAGE']/plainValue"/></ORTSLAGE> |
|
131 |
+ <NOTIZ><xsl:value-of select="form/field[@name='tfNOTIZ']/plainValue"/></NOTIZ> |
|
132 |
+ --> |
|
133 |
+ <ORTSLAGE><xsl:value-of select="form/field[@name='edAnmerkungen']/plainValue"/></ORTSLAGE> |
|
134 |
+ <NOTIZ><xsl:value-of select="form/field[@name='edAnmerkungen']/plainValue"/></NOTIZ> |
|
135 |
+ <SACHGEBIET>Z</SACHGEBIET> |
|
136 |
+ <FORMID><xsl:value-of select="form/field[@name='tfFORMID']/plainValue"/></FORMID> |
|
137 |
+ <SERVICE_ID><xsl:value-of select="./@process-uid" /></SERVICE_ID> |
|
138 |
+ </datensatz> |
|
139 |
+ </daten> |
|
140 |
+ </xsl:template> |
|
141 |
+ <xsl:template name="formatDate"> |
|
142 |
+ <xsl:param name="dateTime"/> |
|
143 |
+ <xsl:variable name="day" select="substring-before($dateTime, '.')" /> |
|
144 |
+ <xsl:variable name="month" select="substring-before(substring-after($dateTime, '.'), '.')" /> |
|
145 |
+ <xsl:variable name="year" select="substring-after(substring-after($dateTime, '.'), '.')" /> |
|
146 |
+ |
|
147 |
+ <xsl:choose> |
|
148 |
+ <xsl:when test="$dateTime !=''"> |
|
149 |
+ <xsl:value-of select="concat($year, '-', $month, '-', $day)" /> |
|
150 |
+ </xsl:when> |
|
151 |
+ <xsl:otherwise> |
|
152 |
+ |
|
153 |
+ </xsl:otherwise> |
|
154 |
+ </xsl:choose> |
|
155 |
+ </xsl:template> |
|
156 |
+ <xsl:template name="formatWeight"> |
|
157 |
+ <xsl:param name="weight"/> |
|
158 |
+ <xsl:value-of select="translate($weight, ',', '.')" /> |
|
159 |
+ </xsl:template> |
|
160 |
+</xsl:stylesheet> |
|
161 |
+{{/code}} |
|
162 |
+{{/panel}} |
|
163 |
+ |
|
164 |
+Im Beispiel werden über die am Ende stehenden Templates //formatDate// und //formatWeight// Datumswerte und Gewichte in das Format überführt, welches ALVA9 erwartet. Eine Überführung von im Formular eingegebenen Werten in eine für ALVA9 erwartetes Format kann gegebenenfalls auch bei anderen Daten nötig sein. In den meisten Fällen ist die Verwendung von speziellen Templates häufig die einfachste Lösung, um die Werte in das gewünschte Format zu konvertieren. |
|
165 |
+ |
18 |
18 |
=== Speichern von zusätzlichen Dokumenten === |
19 |
19 |
|
|
168 |
+Hierbei ist die Verwendung gl dateinamen |
|
169 |
+ |
20 |
20 |
Über eine Aktion vom Typ [[ZIP Komprimieren>>doc:TODO]] |
21 |
21 |
Selbe, eindeutige ID -> Es empfiehlt sich, Process_ID zu verwenden |
22 |
22 |
|